summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDuncan Sands <baldrick@free.fr>2010-12-15 11:02:22 +0000
committerDuncan Sands <baldrick@free.fr>2010-12-15 11:02:22 +0000
commit019a41880836520dec1dd83c909c48a8f42405c8 (patch)
treec091ca5f2e074a4386cd30d2b8aff056d75711be
parent3d1803495e6c2fcca78ba904afd1110dbf837743 (diff)
downloadbcm5719-llvm-019a41880836520dec1dd83c909c48a8f42405c8.tar.gz
bcm5719-llvm-019a41880836520dec1dd83c909c48a8f42405c8.zip
If we detect that the instruction we are simplifying is unreachable, arrange for
it to be replaced by undef rather than not replaced at all, the idea being that this may reduce the amount of work done by whoever called InstructionSimplify. llvm-svn: 121860
-rw-r--r--llvm/lib/Analysis/InstructionSimplify.cpp6
1 files changed, 3 insertions, 3 deletions
diff --git a/llvm/lib/Analysis/InstructionSimplify.cpp b/llvm/lib/Analysis/InstructionSimplify.cpp
index 87125191ad0..75734e87701 100644
--- a/llvm/lib/Analysis/InstructionSimplify.cpp
+++ b/llvm/lib/Analysis/InstructionSimplify.cpp
@@ -441,7 +441,7 @@ static Value *SimplifyXorInst(Value *Op0, Value *Op1, const TargetData *TD,
// A ^ undef -> undef
if (isa<UndefValue>(Op1))
- return UndefValue::get(Op0->getType());
+ return Op1;
// A ^ 0 = A
if (match(Op1, m_Zero()))
@@ -868,8 +868,8 @@ Value *llvm::SimplifyInstruction(Instruction *I, const TargetData *TD,
/// If called on unreachable code, the above logic may report that the
/// instruction simplified to itself. Make life easier for users by
- /// detecting that case here, returning null if it occurs.
- return Result == I ? 0 : Result;
+ /// detecting that case here, returning a safe value instead.
+ return Result == I ? UndefValue::get(I->getType()) : Result;
}
/// ReplaceAndSimplifyAllUses - Perform From->replaceAllUsesWith(To) and then
OpenPOWER on IntegriCloud