forked from OSchip/llvm-project
parent
1e2c6bfa41
commit
c600c53d1f
|
@ -2255,7 +2255,8 @@ Instruction *InstCombiner::visitAdd(BinaryOperator &I) {
|
||||||
Instruction *InstCombiner::visitSub(BinaryOperator &I) {
|
Instruction *InstCombiner::visitSub(BinaryOperator &I) {
|
||||||
Value *Op0 = I.getOperand(0), *Op1 = I.getOperand(1);
|
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()));
|
return ReplaceInstUsesWith(I, Constant::getNullValue(I.getType()));
|
||||||
|
|
||||||
// If this is a 'B = x-(-A)', change to B = x+A...
|
// If this is a 'B = x-(-A)', change to B = x+A...
|
||||||
|
|
|
@ -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
|
||||||
|
}
|
Loading…
Reference in New Issue