From: Dan Gohman Date: Thu, 18 Feb 2010 21:34:02 +0000 (+0000) Subject: Hoist this loop-invariant logic out of the loop. X-Git-Url: http://demsky.eecs.uci.edu/git/?a=commitdiff_plain;h=814f2b2d1927a5397c0e923588527277b9f67d6b;p=oota-llvm.git Hoist this loop-invariant logic out of the loop. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@96614 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/lib/Transforms/Scalar/IndVarSimplify.cpp b/lib/Transforms/Scalar/IndVarSimplify.cpp index 432e7ea091a..e699261b277 100644 --- a/lib/Transforms/Scalar/IndVarSimplify.cpp +++ b/lib/Transforms/Scalar/IndVarSimplify.cpp @@ -241,15 +241,17 @@ void IndVarSimplify::RewriteLoopExitValues(Loop *L, while ((PN = dyn_cast(BBI++))) { if (PN->use_empty()) continue; // dead use, don't replace it + + // SCEV only supports integer expressions for now. + if (!PN->getType()->isIntegerTy() && !PN->getType()->isPointerTy()) + continue; + // Iterate over all of the values in all the PHI nodes. for (unsigned i = 0; i != NumPreds; ++i) { // If the value being merged in is not integer or is not defined // in the loop, skip it. Value *InVal = PN->getIncomingValue(i); - if (!isa(InVal) || - // SCEV only supports integer expressions for now. - (!InVal->getType()->isIntegerTy() && - !InVal->getType()->isPointerTy())) + if (!isa(InVal)) continue; // If this pred is for a subloop, not L itself, skip it.