mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2026-04-25 05:22:04 +00:00
Fix reassociate to use a worklist instead of recursing when new
reassociation opportunities are exposed. This fixes a bug where the nested reassociation expects to be the IR to be consistent, but it isn't, because the outer reassociation has disconnected some of the operands. rdar://9167457 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@129324 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
@@ -0,0 +1,24 @@
|
||||
; 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, -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
|
||||
}
|
||||
Reference in New Issue
Block a user