Skip to content

Commit 895ee26

Browse files
[SimplifyCFG] Add precommit for hoisting problem
1 parent a8ab830 commit 895ee26

File tree

1 file changed

+52
-0
lines changed

1 file changed

+52
-0
lines changed

llvm/test/Transforms/SimplifyCFG/hoist-common-code.ll

Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,58 @@ F: ; preds = %0
2424
ret void
2525
}
2626

27+
define void @test_unordered(ptr noalias %b, ptr noalias %c, ptr noalias %Q, ptr noalias %R, i32 %i ) {
28+
; CHECK-LABEL: @test_unordered(
29+
; CHECK-NEXT: entry:
30+
; CHECK-NEXT: [[ldR1:%.*]] = load i32, ptr [[R:%.*]], align 8
31+
; CHECK-NEXT: switch i32 %i, label %bb0 [
32+
; CHECK-NEXT: i32 2, label %bb1
33+
; CHECK-NEXT: i32 3, label %bb2
34+
; CHECK-NEXT: ]
35+
; CHECK: common.ret:
36+
; CHECK-NEXT: ret void
37+
; CHECK: bb0:
38+
; CHECK-NEXT: [[ldQ:%.*]] = load i32, ptr [[Q:%.*]], align 8
39+
; CHECK-NEXT: [[mul:%.*]] = mul i32 [[ldQ:%.*]], 2
40+
; CHECK-NEXT: [[add:%.*]] = add i32 [[ldR1:%.*]], [[mul:%.*]]
41+
; CHECK-NEXT: store i32 [[add:%.*]], ptr [[c:%.*]], align 8
42+
; CHECK-NEXT: br label [[COMMON_RET:%.*]]
43+
; CHECK: bb1:
44+
; CHECK-NEXT: store i32 [[ldR1:%.*]], ptr [[c:%.*]], align 4
45+
; CHECK-NEXT: br label [[COMMON_RET:%.*]]
46+
; CHECK: bb2:
47+
; CHECK-NEXT: [[ldQ2:%.*]] = load i32, ptr [[Q:%.*]], align 8
48+
; CHECK-NEXT: [[sub:%.*]] = sub i32 [[ldR1:%.*]], [[ldQ2:%.*]]
49+
; CHECK-NEXT: store i32 [[sub:%.*]], ptr [[c:%.*]], align 8
50+
; CHECK-NEXT: br label [[COMMON_RET:%.*]]
51+
52+
entry:
53+
switch i32 %i, label %bb0 [
54+
i32 2, label %bb1
55+
i32 3, label %bb2
56+
]
57+
58+
bb0: ; preds = %entry
59+
%ldQ1 = load i32, ptr %Q, align 8
60+
%mul = mul i32 %ldQ1, 2
61+
%ldR1 = load i32, ptr %R, align 8
62+
%add = add i32 %ldR1, %mul
63+
store i32 %add, ptr %c, align 8
64+
ret void
65+
66+
bb1: ; preds = entry
67+
%ldR2 = load i32, ptr %R, align 8
68+
store i32 %ldR2, ptr %c
69+
ret void
70+
71+
bb2: ; preds = entry
72+
%ldQ2 = load i32, ptr %Q, align 8
73+
%ldR3 = load i32, ptr %R, align 8
74+
%sub = sub i32 %ldR3, %ldQ2
75+
store i32 %sub, ptr %c, align 8
76+
ret void
77+
}
78+
2779
define void @test_switch(i64 %i, ptr %Q) {
2880
; CHECK-LABEL: @test_switch(
2981
; CHECK-NEXT: common.ret:

0 commit comments

Comments
 (0)