[cfe-commits] r91577 - /cfe/trunk/lib/Analysis/GRExprEngine.cpp

Ted Kremenek kremenek at apple.com
Wed Dec 16 17:20:43 PST 2009


Author: kremenek
Date: Wed Dec 16 19:20:43 2009
New Revision: 91577

URL: http://llvm.org/viewvc/llvm-project?rev=91577&view=rev
Log:
Fix check in GRExprEngine for the 'main' function to handle NULL IdentifierInfo*'s.

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

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

==============================================================================
--- cfe/trunk/lib/Analysis/GRExprEngine.cpp (original)
+++ cfe/trunk/lib/Analysis/GRExprEngine.cpp Wed Dec 16 19:20:43 2009
@@ -339,23 +339,24 @@
   if (const FunctionDecl *FD = dyn_cast<FunctionDecl>(D)) {
     // Precondition: the first argument of 'main' is an integer guaranteed
     //  to be > 0.
-    if (FD->getIdentifier()->getName() == "main" &&
-        FD->getNumParams() > 0) {
-      const ParmVarDecl *PD = FD->getParamDecl(0);
-      QualType T = PD->getType();
-      if (T->isIntegerType())
-        if (const MemRegion *R = state->getRegion(PD, InitLoc)) {
-          SVal V = state->getSVal(loc::MemRegionVal(R));
-          SVal Constraint_untested = EvalBinOp(state, BinaryOperator::GT, V,
-                                               ValMgr.makeZeroVal(T),
-                                               getContext().IntTy);
-
-          if (DefinedOrUnknownSVal *Constraint =
-              dyn_cast<DefinedOrUnknownSVal>(&Constraint_untested)) {
-            if (const GRState *newState = state->Assume(*Constraint, true))
-              state = newState;
+    if (const IdentifierInfo *II = FD->getIdentifier()) {
+      if (II->getName() == "main" && FD->getNumParams() > 0) {
+        const ParmVarDecl *PD = FD->getParamDecl(0);
+        QualType T = PD->getType();
+        if (T->isIntegerType())
+          if (const MemRegion *R = state->getRegion(PD, InitLoc)) {
+            SVal V = state->getSVal(loc::MemRegionVal(R));
+            SVal Constraint_untested = EvalBinOp(state, BinaryOperator::GT, V,
+                                                 ValMgr.makeZeroVal(T),
+                                                 getContext().IntTy);
+
+            if (DefinedOrUnknownSVal *Constraint =
+                dyn_cast<DefinedOrUnknownSVal>(&Constraint_untested)) {
+              if (const GRState *newState = state->Assume(*Constraint, true))
+                state = newState;
+            }
           }
-        }
+      }
     }
   }
   else if (const ObjCMethodDecl *MD = dyn_cast<ObjCMethodDecl>(D)) {    





More information about the cfe-commits mailing list