Hi Ted, On Wed, Dec 16, 2009 at 5:20 PM, Ted Kremenek <[email protected]> wrote: > 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.
Can this use early exits to reduce nesting? - Daniel > 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)) { > > > _______________________________________________ > 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
