diff options
author | Chris Lattner <sabre@nondot.org> | 2011-01-24 03:29:07 +0000 |
---|---|---|
committer | Chris Lattner <sabre@nondot.org> | 2011-01-24 03:29:07 +0000 |
commit | 867be59684afef29f058385c6618ec7753596ffc (patch) | |
tree | 29a93767849421b6f79d66573b94614a3862cac6 /lib/Transforms/Utils/SSAUpdater.cpp | |
parent | 51e62f0f73b2d2a32c2a5b98402114e4c71dc14f (diff) |
fix PR9017, a bug where we'd assert when promoting in unreachable
code.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@124100 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/Transforms/Utils/SSAUpdater.cpp')
-rw-r--r-- | lib/Transforms/Utils/SSAUpdater.cpp | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/lib/Transforms/Utils/SSAUpdater.cpp b/lib/Transforms/Utils/SSAUpdater.cpp index 0474a7842d..3896d9851b 100644 --- a/lib/Transforms/Utils/SSAUpdater.cpp +++ b/lib/Transforms/Utils/SSAUpdater.cpp @@ -469,6 +469,9 @@ run(const SmallVectorImpl<Instruction*> &Insts) const { LoadInst *ALoad = LiveInLoads[i]; Value *NewVal = SSA.GetValueInMiddleOfBlock(ALoad->getParent()); replaceLoadWithValue(ALoad, NewVal); + + // Avoid assertions in unreachable code. + if (NewVal == ALoad) NewVal = UndefValue::get(NewVal->getType()); ALoad->replaceAllUsesWith(NewVal); ReplacedLoads[ALoad] = NewVal; } |