I don't have a strong opinion either way. This change was mainly to exclude global variables and statics just came along for the ride.
On Thu, May 3, 2012 at 8:53 PM, Jordy Rose <[email protected]> wrote: > Should static local variables be excepted from this exception? I can > contrive a case where it wouldn't be a problem, but in general it's > probably just as bad. > > > void bad() { > > static int x = 5; > > for (;x;) { printf("hi"); } > > x = 0; > > } > > > > void okay() { > > static int x = 5; > > --x; > > for (;x;) { printf("hi"); okay(); } > > } > > > > void badButHardToCatch() { > > static int x = 5; > > for (;x;) { printf("hi"); badButHardToCatch(); } > > --x; > > } > > Jordy > > > On May 3, 2012, at 23:01, Richard Trieu wrote: > > > Author: rtrieu > > Date: Thu May 3 22:01:54 2012 > > New Revision: 156148 > > > > URL: http://llvm.org/viewvc/llvm-project?rev=156148&view=rev > > Log: > > Skip checking for infinite for-loops if there are global or static > variables > > in the conditional. > > > > Modified: > > cfe/trunk/lib/Sema/SemaStmt.cpp > > cfe/trunk/test/SemaCXX/warn-loop-analysis.cpp > > > > Modified: cfe/trunk/lib/Sema/SemaStmt.cpp > > URL: > http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Sema/SemaStmt.cpp?rev=156148&r1=156147&r2=156148&view=diff > > > ============================================================================== > > --- cfe/trunk/lib/Sema/SemaStmt.cpp (original) > > +++ cfe/trunk/lib/Sema/SemaStmt.cpp Thu May 3 22:01:54 2012 > > @@ -1214,11 +1214,12 @@ > > // No decls found. > > if (Decls.size() == 0) return; > > > > - // Don't warn on volatile decls. > > + // Don't warn on volatile, static, or global variables. > > for (llvm::SmallPtrSet<VarDecl*, 8>::iterator I = Decls.begin(), > > E = Decls.end(); > > I != E; ++I) > > - if ((*I)->getType().isVolatileQualified()) return; > > + if ((*I)->getType().isVolatileQualified() || > > + (*I)->hasGlobalStorage()) return; > > > > if (DeclMatcher(S, Decls, Second).FoundDeclInUse() || > > DeclMatcher(S, Decls, Third).FoundDeclInUse() || > > > > Modified: cfe/trunk/test/SemaCXX/warn-loop-analysis.cpp > > URL: > http://llvm.org/viewvc/llvm-project/cfe/trunk/test/SemaCXX/warn-loop-analysis.cpp?rev=156148&r1=156147&r2=156148&view=diff > > > ============================================================================== > > --- cfe/trunk/test/SemaCXX/warn-loop-analysis.cpp (original) > > +++ cfe/trunk/test/SemaCXX/warn-loop-analysis.cpp Thu May 3 22:01:54 > 2012 > > @@ -144,3 +144,11 @@ > > for (int a; > a+a+a+a+a+a+a+a+a+a+a+a+a+a+a+a+a+a+a+a+a+a+a+a+a+a+a+a+a+a;);//\ > > // expected-warning {{variable 'a' used in loop condition not > modified in loop body}} > > } > > + > > +// Ignore global variables and static variables. > > +int x6; > > +void test6() { > > + static int y; > > + for (;x6;); > > + for (;y;); > > +} > > > > > > _______________________________________________ > > cfe-commits mailing list > > [email protected] > > http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits > >
_______________________________________________ cfe-commits mailing list [email protected] http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits
