@@ -153,12 +153,12 @@ class SuppressNonBlockingStreams : public BugReporterVisitor {
153153 bool Satisfied = false ;
154154
155155public:
156- SuppressNonBlockingStreams (SymbolRef SR , int NonBlockMacroVal)
157- : StreamSym(SR ), NonBlockMacroVal(NonBlockMacroVal) {}
156+ SuppressNonBlockingStreams (SymbolRef StreamSym , int NonBlockMacroVal)
157+ : StreamSym(StreamSym ), NonBlockMacroVal(NonBlockMacroVal) {}
158158
159159 static void *getTag () {
160- static int Tag = 0 ;
161- return static_cast < void *>( &Tag) ;
160+ static bool Tag;
161+ return &Tag;
162162 }
163163
164164 void Profile (llvm::FoldingSetNodeID &ID) const override {
@@ -171,28 +171,25 @@ class SuppressNonBlockingStreams : public BugReporterVisitor {
171171 if (Satisfied)
172172 return nullptr ;
173173
174- std::optional<StmtPoint> Point = N->getLocation (). getAs <StmtPoint>();
174+ std::optional<StmtPoint> Point = N->getLocationAs <StmtPoint>();
175175 if (!Point)
176176 return nullptr ;
177177
178- auto *CE = dyn_cast <CallExpr>(Point-> getStmt () );
178+ const auto *CE = Point-> getStmtAs <CallExpr>();
179179 if (!CE || !OpenFunction.matchesAsWritten (*CE))
180180 return nullptr ;
181181
182- SVal SV = N->getSVal (CE);
183- if (SV.getAsSymbol () != StreamSym)
182+ if (N->getSVal (CE).getAsSymbol () != StreamSym)
184183 return nullptr ;
185184
186185 Satisfied = true ;
187186
188187 // Check if open's second argument contains O_NONBLOCK
189- const auto *Flag = CE->getArg (1 );
190- SVal FlagSV = N->getSVal (Flag);
191- const llvm::APSInt *FlagV = FlagSV.getAsInteger ();
192- if (!FlagV)
188+ const llvm::APSInt *FlagVal = N->getSVal (CE->getArg (1 )).getAsInteger ();
189+ if (!FlagVal)
193190 return nullptr ;
194191
195- if ((*FlagV & NonBlockMacroVal) != 0 )
192+ if ((*FlagVal & NonBlockMacroVal) != 0 )
196193 BR.markInvalid (getTag (), nullptr );
197194
198195 return nullptr ;
0 commit comments