1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2024-10-22 04:22:57 +02:00
llvm-mirror/test/Transforms/Reassociate/secondary.ll
Owen Anderson 4d5ef8fb85 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
}