Split up subtracts into add+negate if they have a reassociable use or operand
[oota-llvm.git] / test / Transforms / Reassociate / mul-neg-add.ll
1 ; RUN: llvm-upgrade < %s | llvm-as | opt -reassociate -instcombine | llvm-dis |\
2 ; RUN:   not grep {sub i32 0}
3
4 int %test(int %X, int %Y, int %Z) {
5         %A = sub int 0, %X
6         %B = mul int %A, %Y
7         %C = add int %B, %Z   ; (-X)*Y + Z -> Z-X*Y
8         ret int %C
9 }