diff options
author | Nadav Rotem <nrotem@apple.com> | 2012-12-20 20:24:40 +0000 |
---|---|---|
committer | Nadav Rotem <nrotem@apple.com> | 2012-12-20 20:24:40 +0000 |
commit | 8386acd7348003d13a2db3c4dd3274653d8ffe10 (patch) | |
tree | f423d8613e6456ba0c25b32c14a1e135afc8f5df /lib/Transforms/Vectorize/LoopVectorize.cpp | |
parent | 139e407d526193017d42473c8d4892933de78f14 (diff) |
LoopVectorize: Fix a bug in the scalarization of instructions.
Before if-conversion we could check if a value is loop invariant
if it was declared inside the basic block. Now that loops have
multiple blocks this check is incorrect.
This fixes External/SPEC/CINT95/099_go/099_go
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@170756 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/Transforms/Vectorize/LoopVectorize.cpp')
-rw-r--r-- | lib/Transforms/Vectorize/LoopVectorize.cpp | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/lib/Transforms/Vectorize/LoopVectorize.cpp b/lib/Transforms/Vectorize/LoopVectorize.cpp index ee544b3a7f..827c13ffc9 100644 --- a/lib/Transforms/Vectorize/LoopVectorize.cpp +++ b/lib/Transforms/Vectorize/LoopVectorize.cpp @@ -284,7 +284,7 @@ void InnerLoopVectorizer::scalarizeInstruction(Instruction *Instr) { // If the src is an instruction that appeared earlier in the basic block // then it should already be vectorized. - if (SrcInst && SrcInst->getParent() == Instr->getParent()) { + if (SrcInst && OrigLoop->contains(SrcInst)) { assert(WidenMap.count(SrcInst) && "Source operand is unavailable"); // The parameter is a vector value from earlier. Params.push_back(WidenMap[SrcInst]); |