diff options
author | Dan Gohman <gohman@apple.com> | 2010-02-14 03:12:47 +0000 |
---|---|---|
committer | Dan Gohman <gohman@apple.com> | 2010-02-14 03:12:47 +0000 |
commit | 1d826a76f591afea445489b9a5485c345e66bf87 (patch) | |
tree | 832e56ae519da4b5d513425249705e5420cdce00 /lib/Analysis | |
parent | 0402577f3888889afb7a2bd18399987daefdecbe (diff) | |
download | external_llvm-1d826a76f591afea445489b9a5485c345e66bf87.zip external_llvm-1d826a76f591afea445489b9a5485c345e66bf87.tar.gz external_llvm-1d826a76f591afea445489b9a5485c345e66bf87.tar.bz2 |
In rememberInstruction, if the value being remembered is the
current insertion point, advance the current insertion point.
This avoids a use-before-def situation in a testcase extracted
from clang which is difficult to reduce to a reasonable-sized
regression test.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@96151 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/Analysis')
-rw-r--r-- | lib/Analysis/ScalarEvolutionExpander.cpp | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/lib/Analysis/ScalarEvolutionExpander.cpp b/lib/Analysis/ScalarEvolutionExpander.cpp index 5de55fe..88c22b1 100644 --- a/lib/Analysis/ScalarEvolutionExpander.cpp +++ b/lib/Analysis/ScalarEvolutionExpander.cpp @@ -1075,6 +1075,20 @@ Value *SCEVExpander::expand(const SCEV *S) { return V; } +void SCEVExpander::rememberInstruction(Value *I) { + if (!PostIncLoop) + InsertedValues.insert(I); + + // If we just claimed an existing instruction and that instruction had + // been the insert point, adjust the insert point forward so that + // subsequently inserted code will be dominated. + if (Builder.GetInsertPoint() == I) { + BasicBlock::iterator It = cast<Instruction>(I); + do { ++It; } while (isInsertedInstruction(It)); + Builder.SetInsertPoint(Builder.GetInsertBlock(), It); + } +} + /// getOrInsertCanonicalInductionVariable - This method returns the /// canonical induction variable of the specified type for the specified /// loop (inserting one if there is none). A canonical induction variable |