forked from OSchip/llvm-project
parent
1e2c6bfa41
commit
c600c53d1f
|
@ -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...
|
||||
|
|
|
@ -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