diff options
-rw-r--r-- | lib/Analysis/InstructionSimplify.cpp | 6 |
1 files changed, 3 insertions, 3 deletions
diff --git a/lib/Analysis/InstructionSimplify.cpp b/lib/Analysis/InstructionSimplify.cpp index 87125191ad..75734e8770 100644 --- a/lib/Analysis/InstructionSimplify.cpp +++ b/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 |