mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-07-13 04:24:40 +00:00
Enhance the sinking code to handle diamond patterns. Patch by
Carlo Alberto Ferraris. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@157736 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
@ -36,3 +36,29 @@ true:
|
||||
false:
|
||||
ret i32 0
|
||||
}
|
||||
|
||||
; Sink to the nearest post-dominator
|
||||
|
||||
; CHECK: @diamond
|
||||
; CHECK: X:
|
||||
; CHECK-NEXT: phi
|
||||
; CHECK-NEXT: mul nsw
|
||||
; CHECK-NEXT: sub
|
||||
|
||||
define i32 @diamond(i32 %a, i32 %b, i32 %c) {
|
||||
%1 = mul nsw i32 %c, %b
|
||||
%2 = icmp sgt i32 %a, 0
|
||||
br i1 %2, label %B0, label %B1
|
||||
|
||||
B0: ; preds = %0
|
||||
br label %X
|
||||
|
||||
B1: ; preds = %0
|
||||
br label %X
|
||||
|
||||
X: ; preds = %5, %3
|
||||
%.01 = phi i32 [ %c, %B0 ], [ %a, %B1 ]
|
||||
%R = sub i32 %1, %.01
|
||||
ret i32 %R
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user