From: Andrew Trick Date: Wed, 1 Jun 2011 19:14:56 +0000 (+0000) Subject: SCEV: missing null check fix for r132360, dragonegg crash. X-Git-Url: http://demsky.eecs.uci.edu/git/?a=commitdiff_plain;h=cf31f91931b257462a5a0059389977f6adea8dae;p=oota-llvm.git SCEV: missing null check fix for r132360, dragonegg crash. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@132416 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/lib/Analysis/ScalarEvolution.cpp b/lib/Analysis/ScalarEvolution.cpp index ef390c5a3ee..025718e09fe 100644 --- a/lib/Analysis/ScalarEvolution.cpp +++ b/lib/Analysis/ScalarEvolution.cpp @@ -1081,9 +1081,8 @@ static const SCEV *getPreStartForSignExtend(const SCEVAddRecExpr *AR, const SCEVAddRecExpr *PreAR = dyn_cast( SE->getAddRecExpr(PreStart, Step, L, SCEV::FlagAnyWrap)); - if (PreAR && PreAR->getNoWrapFlags(SCEV::FlagNSW)) { + if (PreAR && PreAR->getNoWrapFlags(SCEV::FlagNSW)) return PreStart; - } // 2. Direct overflow check on the step operation's expression. unsigned BitWidth = SE->getTypeSizeInBits(AR->getType()); @@ -1104,7 +1103,8 @@ static const SCEV *getPreStartForSignExtend(const SCEVAddRecExpr *AR, ICmpInst::Predicate Pred; const SCEV *OverflowLimit = getOverflowLimitForStep(Step, &Pred, SE); - if (SE->isLoopEntryGuardedByCond(L, Pred, PreStart, OverflowLimit)) { + if (OverflowLimit && + SE->isLoopEntryGuardedByCond(L, Pred, PreStart, OverflowLimit)) { return PreStart; } return 0;