Fix PR2553

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53715 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Chris Lattner 2008-07-17 06:07:20 +00:00
parent f595266b91
commit d137ab4783
2 changed files with 10 additions and 1 deletions

View File

@ -2255,7 +2255,8 @@ Instruction *InstCombiner::visitAdd(BinaryOperator &I) {
Instruction *InstCombiner::visitSub(BinaryOperator &I) {
Value *Op0 = I.getOperand(0), *Op1 = I.getOperand(1);
if (Op0 == Op1) // sub X, X -> 0
if (Op0 == Op1 && // sub X, X -> 0
!I.getType()->isFPOrFPVector())
return ReplaceInstUsesWith(I, Constant::getNullValue(I.getType()));
// If this is a 'B = x-(-A)', change to B = x+A...

View File

@ -0,0 +1,8 @@
; RUN: llvm-as < %s | opt -instcombine | llvm-dis | grep sub
; PR2553
define double @test(double %X) nounwind {
; fsub of self can't be optimized away.
%Y = sub double %X, %X
ret double %Y
}