[cfe-commits] r76998 - /cfe/trunk/lib/Analysis/CheckSecuritySyntaxOnly.cpp

Ted Kremenek kremenek at apple.com
Fri Jul 24 13:26:31 PDT 2009


Author: kremenek
Date: Fri Jul 24 15:26:31 2009
New Revision: 76998

URL: http://llvm.org/viewvc/llvm-project?rev=76998&view=rev
Log:
In the "use of floating point variable as loop counter" check, check
if the DeclRefExpr is a float, not just either argument.

Modified:
    cfe/trunk/lib/Analysis/CheckSecuritySyntaxOnly.cpp

Modified: cfe/trunk/lib/Analysis/CheckSecuritySyntaxOnly.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Analysis/CheckSecuritySyntaxOnly.cpp?rev=76998&r1=76997&r2=76998&view=diff

==============================================================================
--- cfe/trunk/lib/Analysis/CheckSecuritySyntaxOnly.cpp (original)
+++ cfe/trunk/lib/Analysis/CheckSecuritySyntaxOnly.cpp Fri Jul 24 15:26:31 2009
@@ -143,16 +143,18 @@
   if (!B)
     return;
   
-  // The actual error condition.
-  if (!((B->isRelationalOp() || B->isEqualityOp()) &&
-        ((B->getLHS()->getType()->isFloatingType() ||
-          B->getRHS()->getType()->isFloatingType()))))
+  // Is this a comparison?
+  if (!(B->isRelationalOp() || B->isEqualityOp()))
     return;
-  
+      
   // Are we comparing variables?
   const DeclRefExpr *drLHS = dyn_cast<DeclRefExpr>(B->getLHS()->IgnoreParens());
   const DeclRefExpr *drRHS = dyn_cast<DeclRefExpr>(B->getRHS()->IgnoreParens());
   
+  // Does at least one of the variables have a floating point type?
+  drLHS = drLHS && drLHS->getType()->isFloatingType() ? drLHS : NULL;
+  drRHS = drRHS && drRHS->getType()->isFloatingType() ? drRHS : NULL;
+  
   if (!drLHS && !drRHS)
     return;
 





More information about the cfe-commits mailing list