Files
llvm-project/llvm/test/Transforms/Reassociate/secondary.ll
Owen Anderson 2de9f545aa Add intermediate subtract instructions to reassociation worklist.
We sometimes create intermediate subtract instructions during
reassociation.  Adding these to the worklist to revisit exposes many
additional reassociation opportunities.

Patch by Aditya Nandakumar.

llvm-svn: 253240
2015-11-16 18:07:30 +00:00

25 lines
652 B
LLVM

; RUN: opt -S -reassociate < %s | FileCheck %s
; rdar://9167457
; Reassociate shouldn't break this testcase involving a secondary
; reassociation.
; CHECK: define
; CHECK-NOT: undef
; CHECK: %factor = mul i32 %tmp3.neg, 2
; CHECK-NOT: undef
; CHECK: }
define void @x0f2f640ab6718391b59ce96d9fdeda54(i32 %arg, i32 %arg1, i32 %arg2, i32* %.out) nounwind {
_:
%tmp = sub i32 %arg, %arg1
%tmp3 = mul i32 %tmp, -1268345047
%tmp4 = add i32 %tmp3, 2014710503
%tmp5 = add i32 %tmp3, -1048397418
%tmp6 = sub i32 %tmp4, %tmp5
%tmp7 = sub i32 -2014710503, %tmp3
%tmp8 = add i32 %tmp6, %tmp7
store i32 %tmp8, i32* %.out
ret void
}