Skip to content

Commit b6820c3

Browse files
authored
[MachinePipeliner] Remove UB from tests (NFC) (#123169)
This patch removes UB from some tests for MachinePipeliner. This patch fixes following cases. - Branching on an `undef` value. - Using `undef`/`null` as a pointer operand of a load/store. There are other tests of pipeliner that contain the same UB, but for now, this patch fixes particularly unstable cases when I developed pipeliner.
1 parent 050ca5e commit b6820c3

File tree

5 files changed

+25
-22
lines changed

5 files changed

+25
-22
lines changed

llvm/test/CodeGen/Hexagon/swp-epilog-phi11.ll

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99
; CHECK: r{{[0-9]+}} = sfsub([[REG0]],[[REG1]])
1010
; CHECK: r{{[0-9]+}} = sfsub([[REG0]],r{{[0-9]+}})
1111

12-
define dso_local void @test(i32 %m) local_unnamed_addr #0 {
12+
define dso_local void @test(i32 %m, ptr noalias %p0, ptr noalias %p1) local_unnamed_addr #0 {
1313
entry:
1414
%div = sdiv i32 %m, 2
1515
%sub = add nsw i32 %div, -1
@@ -20,9 +20,9 @@ for.body.prol:
2020
%sr.prol = phi float [ %0, %for.body.prol ], [ undef, %entry ]
2121
%sr109.prol = phi float [ %sr.prol, %for.body.prol ], [ undef, %entry ]
2222
%prol.iter = phi i32 [ %prol.iter.sub, %for.body.prol ], [ undef, %entry ]
23-
%0 = load float, ptr undef, align 4
23+
%0 = load float, ptr %p0, align 4
2424
%sub7.prol = fsub contract float %sr109.prol, %0
25-
store float %sub7.prol, ptr null, align 4
25+
store float %sub7.prol, ptr %p1, align 4
2626
%prol.iter.sub = add i32 %prol.iter, -1
2727
%prol.iter.cmp = icmp eq i32 %prol.iter.sub, 0
2828
br i1 %prol.iter.cmp, label %for.body.prol.loopexit, label %for.body.prol

llvm/test/CodeGen/Hexagon/swp-epilog-phi12.ll

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -10,21 +10,22 @@
1010
; CHECK: = add([[REG1]],#8)
1111

1212
; Function Attrs: nounwind
13-
define ptr @f0(ptr nocapture readonly %a0, i32 %a1) #0 {
13+
define ptr @f0(ptr nocapture readonly %a0, i32 %a1, ptr noalias %p0, ptr noalias %p1, ptr noalias %p2) #0 {
1414
b0:
1515
%v0 = alloca [129 x i32], align 8
16-
br i1 undef, label %b1, label %b3
16+
%cond = freeze i1 poison
17+
br i1 %cond, label %b1, label %b3
1718

1819
b1: ; preds = %b0
1920
br label %b2
2021

2122
b2: ; preds = %b2, %b1
2223
%v1 = phi ptr [ %a0, %b1 ], [ %v2, %b2 ]
23-
%v2 = phi ptr [ undef, %b1 ], [ %v15, %b2 ]
24-
%v3 = phi ptr [ null, %b1 ], [ %v4, %b2 ]
25-
%v4 = phi ptr [ null, %b1 ], [ %v14, %b2 ]
24+
%v2 = phi ptr [ %p0, %b1 ], [ %v15, %b2 ]
25+
%v3 = phi ptr [ %p1, %b1 ], [ %v4, %b2 ]
26+
%v4 = phi ptr [ %p1, %b1 ], [ %v14, %b2 ]
2627
%v5 = phi i32 [ 0, %b1 ], [ %v13, %b2 ]
27-
%v6 = phi ptr [ undef, %b1 ], [ %v12, %b2 ]
28+
%v6 = phi ptr [ %p2, %b1 ], [ %v12, %b2 ]
2829
%v7 = load i16, ptr %v2, align 2
2930
%v8 = sext i16 %v7 to i32
3031
%v9 = call i32 @llvm.hexagon.M2.mpy.ll.s0(i32 %v8, i32 %v8) #2

llvm/test/CodeGen/Hexagon/swp-epilog-phi13.ll

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -10,18 +10,19 @@
1010
; CHECK: endloop0
1111

1212
; Function Attrs: nounwind
13-
define ptr @f0(ptr nocapture readonly %a0, i32 %a1, i32 %a2, i32 %a3, ptr %b) #0 {
13+
define ptr @f0(ptr nocapture readonly %a0, i32 %a1, i32 %a2, i32 %a3, ptr %b, ptr %c) #0 {
1414
b0:
15-
br i1 undef, label %b1, label %b3
15+
%cond = freeze i1 poison
16+
br i1 %cond, label %b1, label %b3
1617

1718
b1: ; preds = %b0
1819
br label %b2
1920

2021
b2: ; preds = %b2, %b1
2122
%v1 = phi ptr [ %a0, %b1 ], [ %v2, %b2 ]
2223
%v2 = phi ptr [ undef, %b1 ], [ %v15, %b2 ]
23-
%v3 = phi ptr [ null, %b1 ], [ %v4, %b2 ]
24-
%v4 = phi ptr [ null, %b1 ], [ %v14, %b2 ]
24+
%v3 = phi ptr [ %c, %b1 ], [ %v4, %b2 ]
25+
%v4 = phi ptr [ %c, %b1 ], [ %v14, %b2 ]
2526
%v5 = phi i32 [ 0, %b1 ], [ %v13, %b2 ]
2627
%v6 = phi ptr [ undef, %b1 ], [ %v12, %b2 ]
2728
%a = mul i32 %v5, %a2

llvm/test/CodeGen/Hexagon/swp-epilog-phi6.ll

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@
1313
; CHECK: epilog:
1414
; CHECK: %{{[0-9]+}}:intregs = PHI %{{.*}}, %[[REG]]
1515

16-
define void @f0(i32 %a0, i32 %a1) #0 {
16+
define void @f0(i32 %a0, i32 %a1, ptr noalias %p0, ptr noalias %p1) #0 {
1717
b0:
1818
%v0 = icmp sgt i32 %a0, 64
1919
br i1 %v0, label %b1, label %b3
@@ -23,7 +23,7 @@ b1: ; preds = %b0
2323

2424
b2: ; preds = %b2, %b1
2525
%v1 = phi i32 [ %a0, %b1 ], [ %v13, %b2 ]
26-
%v2 = phi ptr [ null, %b1 ], [ %v3, %b2 ]
26+
%v2 = phi ptr [ %p0, %b1 ], [ %v3, %b2 ]
2727
%v3 = getelementptr inbounds <16 x i32>, ptr %v2, i32 1
2828
%v4 = load <16 x i32>, ptr %v2, align 64
2929
%v5 = load <16 x i32>, ptr undef, align 64
@@ -34,7 +34,7 @@ b2: ; preds = %b2, %b1
3434
%v10 = tail call <32 x i32> @llvm.hexagon.V6.vmpybus.acc(<32 x i32> %v9, <16 x i32> zeroinitializer, i32 undef)
3535
%v11 = tail call <16 x i32> @llvm.hexagon.V6.lo(<32 x i32> %v10)
3636
%v12 = tail call <16 x i32> @llvm.hexagon.V6.vasrhubsat(<16 x i32> undef, <16 x i32> %v11, i32 %a1)
37-
store <16 x i32> %v12, ptr null, align 64
37+
store <16 x i32> %v12, ptr %p1, align 64
3838
%v13 = add nsw i32 %v1, -64
3939
%v14 = icmp sgt i32 %v13, 64
4040
br i1 %v14, label %b2, label %b3

llvm/test/CodeGen/Hexagon/swp-epilog-phi9.ll

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -12,21 +12,22 @@
1212
; CHECK: [[REG0]] = add(r{{[0-9]+}},#8)
1313

1414
; Function Attrs: nounwind
15-
define void @f0(ptr nocapture readonly %a0, i32 %a1) #0 {
15+
define void @f0(ptr noalias nocapture readonly %a0, i32 %a1, ptr noalias %a2, ptr %a3) #0 {
1616
b0:
1717
%v0 = alloca [129 x i32], align 8
18-
br i1 undef, label %b1, label %b3
18+
%cond = freeze i1 poison
19+
br i1 %cond, label %b1, label %b3
1920

2021
b1: ; preds = %b0
2122
br label %b2
2223

2324
b2: ; preds = %b2, %b1
2425
%v1 = phi ptr [ %a0, %b1 ], [ %v2, %b2 ]
25-
%v2 = phi ptr [ undef, %b1 ], [ %v15, %b2 ]
26-
%v3 = phi ptr [ null, %b1 ], [ %v4, %b2 ]
27-
%v4 = phi ptr [ null, %b1 ], [ %v14, %b2 ]
26+
%v2 = phi ptr [ %a0, %b1 ], [ %v15, %b2 ]
27+
%v3 = phi ptr [ %a2, %b1 ], [ %v4, %b2 ]
28+
%v4 = phi ptr [ %a2, %b1 ], [ %v14, %b2 ]
2829
%v5 = phi i32 [ 0, %b1 ], [ %v13, %b2 ]
29-
%v6 = phi ptr [ undef, %b1 ], [ %v12, %b2 ]
30+
%v6 = phi ptr [ %a3, %b1 ], [ %v12, %b2 ]
3031
%v7 = load i16, ptr %v2, align 2
3132
%v8 = sext i16 %v7 to i32
3233
%v9 = call i32 @llvm.hexagon.M2.mpy.ll.s0(i32 %v8, i32 %v8) #2

0 commit comments

Comments
 (0)