Skip to content

Commit 4484190

Browse files
committed
update_test_checks: precommit a test case
The test case demonstrates how meta variables are needlessly renamed, making diffs harder to read.
1 parent a4703e5 commit 4484190

12 files changed

+268
-0
lines changed
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: --version 3
2+
; RUN: opt < %s -S | FileCheck %s
3+
4+
; The assumption underlying this test is that there are pre-existing check lines
5+
; but something has changed, and we would like to avoid needless changes of
6+
; meta variable names so that diffs end up being easier to read, e.g. avoid
7+
; changing X_I33 into X_I34 or renumbering the various TMP variables.
8+
9+
define i32 @func({i32, i32} %x, i32 %y) {
10+
; CHECK-LABEL: define i32 @func(
11+
; CHECK-SAME: { i32, i32 } [[X:%.*]], i32 [[Y:%.*]]) {
12+
; CHECK-NEXT: [[X_I33:%.*]] = extractvalue { i32, i32 } [[X]], 0
13+
; CHECK-NEXT: [[TMP1:%.*]] = add i32 [[X_I33]], [[Y]]
14+
; CHECK-NEXT: [[TMP2:%.*]] = mul i32 [[TMP1]], 3
15+
; CHECK-NEXT: ret i32 [[TMP2]]
16+
;
17+
%x.i34 = extractvalue {i32, i32} %x, 0
18+
%1 = add i32 %y, 1
19+
%2 = add i32 %x.i34, %1
20+
%3 = mul i32 %2, 3
21+
ret i32 %3
22+
}
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: --version 3
2+
; RUN: opt < %s -S | FileCheck %s
3+
4+
; The assumption underlying this test is that there are pre-existing check lines
5+
; but something has changed, and we would like to avoid needless changes of
6+
; meta variable names so that diffs end up being easier to read, e.g. avoid
7+
; changing X_I33 into X_I34 or renumbering the various TMP variables.
8+
9+
define i32 @func({i32, i32} %x, i32 %y) {
10+
; CHECK-LABEL: define i32 @func(
11+
; CHECK-SAME: { i32, i32 } [[X:%.*]], i32 [[Y:%.*]]) {
12+
; CHECK-NEXT: [[X_I34:%.*]] = extractvalue { i32, i32 } [[X]], 0
13+
; CHECK-NEXT: [[TMP1:%.*]] = add i32 [[Y]], 1
14+
; CHECK-NEXT: [[TMP2:%.*]] = add i32 [[X_I34]], [[TMP1]]
15+
; CHECK-NEXT: [[TMP3:%.*]] = mul i32 [[TMP2]], 3
16+
; CHECK-NEXT: ret i32 [[TMP3]]
17+
;
18+
%x.i34 = extractvalue {i32, i32} %x, 0
19+
%1 = add i32 %y, 1
20+
%2 = add i32 %x.i34, %1
21+
%3 = mul i32 %2, 3
22+
ret i32 %3
23+
}
Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: --version 3
2+
; RUN: opt < %s -S | FileCheck %s
3+
4+
define i32 @func(i32 %x) {
5+
; CHECK-LABEL: define i32 @func(
6+
; CHECK-SAME: i32 [[X:%.*]]) {
7+
; CHECK-NEXT: [[TMP1:%.*]] = icmp eq i32 [[X]], 0
8+
; CHECK-NEXT: [[TMP2:%.*]] = call i32 @foo(i1 [[TMP1]])
9+
; CHECK-NEXT: [[TMP3:%.*]] = icmp eq i32 [[X]], 1
10+
; CHECK-NEXT: [[TMP4:%.*]] = call i32 @foo(i1 [[TMP3]])
11+
; CHECK-NEXT: [[TMP5:%.*]] = icmp ne i32 [[TMP4]], 0
12+
; CHECK-NEXT: [[TMP6:%.*]] = select i1 [[TMP5]], i32 [[TMP4]], i32 [[TMP2]]
13+
; CHECK-NEXT: [[TMP7:%.*]] = icmp eq i32 [[X]], 2
14+
; CHECK-NEXT: [[TMP8:%.*]] = call i32 @foo(i1 [[TMP7]])
15+
; CHECK-NEXT: [[TMP9:%.*]] = icmp ne i32 [[TMP8]], 0
16+
; CHECK-NEXT: [[TMP10:%.*]] = select i1 [[TMP9]], i32 [[TMP8]], i32 [[TMP6]]
17+
; CHECK-NEXT: ret i32 [[TMP10]]
18+
;
19+
%1 = icmp eq i32 %x, 0
20+
%2 = call i32 @foo(i1 %1)
21+
22+
%3 = icmp eq i32 %x, 2
23+
%4 = call i32 @foo(i1 %3)
24+
%5 = icmp ne i32 %4, 0
25+
%6 = select i1 %5, i32 %4, i32 %2
26+
27+
ret i32 %6
28+
}
29+
30+
declare i32 @foo(i1)
Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: --version 3
2+
; RUN: opt < %s -S | FileCheck %s
3+
4+
define i32 @func(i32 %x) {
5+
; CHECK-LABEL: define i32 @func(
6+
; CHECK-SAME: i32 [[X:%.*]]) {
7+
; CHECK-NEXT: [[TMP1:%.*]] = icmp eq i32 [[X]], 0
8+
; CHECK-NEXT: [[TMP2:%.*]] = call i32 @foo(i1 [[TMP1]])
9+
; CHECK-NEXT: [[TMP3:%.*]] = icmp eq i32 [[X]], 2
10+
; CHECK-NEXT: [[TMP4:%.*]] = call i32 @foo(i1 [[TMP3]])
11+
; CHECK-NEXT: [[TMP5:%.*]] = icmp ne i32 [[TMP4]], 0
12+
; CHECK-NEXT: [[TMP6:%.*]] = select i1 [[TMP5]], i32 [[TMP4]], i32 [[TMP2]]
13+
; CHECK-NEXT: ret i32 [[TMP6]]
14+
;
15+
%1 = icmp eq i32 %x, 0
16+
%2 = call i32 @foo(i1 %1)
17+
18+
%3 = icmp eq i32 %x, 2
19+
%4 = call i32 @foo(i1 %3)
20+
%5 = icmp ne i32 %4, 0
21+
%6 = select i1 %5, i32 %4, i32 %2
22+
23+
ret i32 %6
24+
}
25+
26+
declare i32 @foo(i1)
Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: --version 3
2+
; RUN: opt < %s -S | FileCheck %s
3+
4+
; Test that we don't regress diff quality by trying to keep variable names
5+
; stable (and messing up the matching).
6+
7+
define i32 @func(i32 %x) {
8+
; CHECK-LABEL: define i32 @func(
9+
; CHECK-SAME: i32 [[X:%.*]]) {
10+
; CHECK-NEXT: [[TMP1:%.*]] = icmp eq i32 [[X]], 0
11+
; CHECK-NEXT: [[TMP2:%.*]] = call i32 @foo(i1 [[TMP1]])
12+
; CHECK-NEXT: [[TMP3:%.*]] = icmp eq i32 [[X]], 1
13+
; CHECK-NEXT: [[TMP4:%.*]] = call i32 @foo(i1 [[TMP3]])
14+
; CHECK-NEXT: [[TMP5:%.*]] = icmp ne i32 [[TMP4]], 0
15+
; CHECK-NEXT: [[TMP6:%.*]] = select i1 [[TMP5]], i32 [[TMP4]], i32 [[TMP2]]
16+
; CHECK-NEXT: [[TMP7:%.*]] = icmp eq i32 [[X]], 2
17+
; CHECK-NEXT: [[TMP8:%.*]] = call i32 @foo(i1 [[TMP7]])
18+
; CHECK-NEXT: [[TMP9:%.*]] = icmp ne i32 [[TMP8]], 0
19+
; CHECK-NEXT: [[TMP10:%.*]] = select i1 [[TMP9]], i32 [[TMP8]], i32 [[TMP6]]
20+
; CHECK-NEXT: ret i32 [[TMP10]]
21+
;
22+
%1 = icmp eq i32 %x, 0
23+
%2 = call i32 @foo(i1 %1)
24+
25+
%3 = icmp eq i32 %x, 2
26+
%4 = call i32 @foo(i1 %3)
27+
%5 = icmp ne i32 %4, 0
28+
%6 = select i1 %5, i32 %4, i32 %2
29+
30+
%7 = icmp eq i32 %x, 1
31+
%8 = call i32 @foo(i1 %7)
32+
%9 = icmp ne i32 %8, 0
33+
%10 = select i1 %9, i32 %8, i32 %6
34+
35+
ret i32 %10
36+
}
37+
38+
declare i32 @foo(i1)
Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: --version 3
2+
; RUN: opt < %s -S | FileCheck %s
3+
4+
; Test that we don't regress diff quality by trying to keep variable names
5+
; stable (and messing up the matching).
6+
7+
define i32 @func(i32 %x) {
8+
; CHECK-LABEL: define i32 @func(
9+
; CHECK-SAME: i32 [[X:%.*]]) {
10+
; CHECK-NEXT: [[TMP1:%.*]] = icmp eq i32 [[X]], 0
11+
; CHECK-NEXT: [[TMP2:%.*]] = call i32 @foo(i1 [[TMP1]])
12+
; CHECK-NEXT: [[TMP3:%.*]] = icmp eq i32 [[X]], 2
13+
; CHECK-NEXT: [[TMP4:%.*]] = call i32 @foo(i1 [[TMP3]])
14+
; CHECK-NEXT: [[TMP5:%.*]] = icmp ne i32 [[TMP4]], 0
15+
; CHECK-NEXT: [[TMP6:%.*]] = select i1 [[TMP5]], i32 [[TMP4]], i32 [[TMP2]]
16+
; CHECK-NEXT: [[TMP7:%.*]] = icmp eq i32 [[X]], 1
17+
; CHECK-NEXT: [[TMP8:%.*]] = call i32 @foo(i1 [[TMP7]])
18+
; CHECK-NEXT: [[TMP9:%.*]] = icmp ne i32 [[TMP8]], 0
19+
; CHECK-NEXT: [[TMP10:%.*]] = select i1 [[TMP9]], i32 [[TMP8]], i32 [[TMP6]]
20+
; CHECK-NEXT: ret i32 [[TMP10]]
21+
;
22+
%1 = icmp eq i32 %x, 0
23+
%2 = call i32 @foo(i1 %1)
24+
25+
%3 = icmp eq i32 %x, 2
26+
%4 = call i32 @foo(i1 %3)
27+
%5 = icmp ne i32 %4, 0
28+
%6 = select i1 %5, i32 %4, i32 %2
29+
30+
%7 = icmp eq i32 %x, 1
31+
%8 = call i32 @foo(i1 %7)
32+
%9 = icmp ne i32 %8, 0
33+
%10 = select i1 %9, i32 %8, i32 %6
34+
35+
ret i32 %10
36+
}
37+
38+
declare i32 @foo(i1)
Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: --version 3
2+
; RUN: opt < %s -S | FileCheck %s
3+
4+
; A test that hits the quadratic runtime prevention in the diff algorithm and
5+
; a more complex case of name conflict avoidance.
6+
7+
define i32 @func(i32 %x) {
8+
; CHECK-LABEL: define i32 @func(
9+
; CHECK-SAME: i32 [[X:%.*]]) {
10+
; CHECK-NEXT: [[TMP1:%.*]] = mul i32 [[X]], 3
11+
; CHECK-NEXT: [[TMP2:%.*]] = add i32 [[TMP1]], 4
12+
; CHECK-NEXT: [[TMP3:%.*]] = call i32 @foo(i32 [[TMP2]])
13+
; CHECK-NEXT: [[TMP4:%.*]] = call i32 @foo(i32 [[TMP3]])
14+
; CHECK-NEXT: [[TMP5:%.*]] = call i32 @foo(i32 [[TMP4]])
15+
; CHECK-NEXT: [[TMP6:%.*]] = call i32 @foo(i32 [[TMP5]])
16+
; CHECK-NEXT: [[TMP7:%.*]] = call i32 @foo(i32 [[TMP6]])
17+
; CHECK-NEXT: [[TMP8:%.*]] = call i32 @foo(i32 [[TMP7]])
18+
; CHECK-NEXT: [[TMP9:%.*]] = call i32 @foo(i32 [[TMP8]])
19+
; CHECK-NEXT: [[TMP10:%.*]] = call i32 @foo(i32 [[TMP9]])
20+
; CHECK-NEXT: [[TMP11:%.*]] = call i32 @foo(i32 [[TMP10]])
21+
; CHECK-NEXT: [[TMP12:%.*]] = call i32 @foo(i32 [[TMP11]])
22+
; CHECK-NEXT: ret i32 [[TMP12]]
23+
;
24+
%1 = mul i32 %x, 3
25+
%2 = call i32 @foo(i32 %1)
26+
%3 = call i32 @foo(i32 %2)
27+
%4 = call i32 @foo(i32 %3)
28+
%5 = call i32 @foo(i32 %4)
29+
%6 = call i32 @foo(i32 %5)
30+
%7 = call i32 @foo(i32 %6)
31+
%8 = xor i32 %7, 1
32+
%9 = call i32 @foo(i32 %8)
33+
%10 = add i32 %9, 1
34+
%11 = call i32 @foo(i32 %10)
35+
%12 = call i32 @foo(i32 %11)
36+
%13 = call i32 @foo(i32 %12)
37+
38+
ret i32 %13
39+
}
40+
41+
declare i32 @foo(i1)
Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: --version 3
2+
; RUN: opt < %s -S | FileCheck %s
3+
4+
; A test that hits the quadratic runtime prevention in the diff algorithm and
5+
; a more complex case of name conflict avoidance.
6+
7+
define i32 @func(i32 %x) {
8+
; CHECK-LABEL: define i32 @func(
9+
; CHECK-SAME: i32 [[X:%.*]]) {
10+
; CHECK-NEXT: [[TMP1:%.*]] = mul i32 [[X]], 3
11+
; CHECK-NEXT: [[TMP2:%.*]] = call i32 @foo(i32 [[TMP1]])
12+
; CHECK-NEXT: [[TMP3:%.*]] = call i32 @foo(i32 [[TMP2]])
13+
; CHECK-NEXT: [[TMP4:%.*]] = call i32 @foo(i32 [[TMP3]])
14+
; CHECK-NEXT: [[TMP5:%.*]] = call i32 @foo(i32 [[TMP4]])
15+
; CHECK-NEXT: [[TMP6:%.*]] = call i32 @foo(i32 [[TMP5]])
16+
; CHECK-NEXT: [[TMP7:%.*]] = call i32 @foo(i32 [[TMP6]])
17+
; CHECK-NEXT: [[TMP8:%.*]] = xor i32 [[TMP7]], 1
18+
; CHECK-NEXT: [[TMP9:%.*]] = call i32 @foo(i32 [[TMP8]])
19+
; CHECK-NEXT: [[TMP10:%.*]] = add i32 [[TMP9]], 1
20+
; CHECK-NEXT: [[TMP11:%.*]] = call i32 @foo(i32 [[TMP10]])
21+
; CHECK-NEXT: [[TMP12:%.*]] = call i32 @foo(i32 [[TMP11]])
22+
; CHECK-NEXT: [[TMP13:%.*]] = call i32 @foo(i32 [[TMP12]])
23+
; CHECK-NEXT: ret i32 [[TMP13]]
24+
;
25+
%1 = mul i32 %x, 3
26+
%2 = call i32 @foo(i32 %1)
27+
%3 = call i32 @foo(i32 %2)
28+
%4 = call i32 @foo(i32 %3)
29+
%5 = call i32 @foo(i32 %4)
30+
%6 = call i32 @foo(i32 %5)
31+
%7 = call i32 @foo(i32 %6)
32+
%8 = xor i32 %7, 1
33+
%9 = call i32 @foo(i32 %8)
34+
%10 = add i32 %9, 1
35+
%11 = call i32 @foo(i32 %10)
36+
%12 = call i32 @foo(i32 %11)
37+
%13 = call i32 @foo(i32 %12)
38+
39+
ret i32 %13
40+
}
41+
42+
declare i32 @foo(i1)
Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
# RUN: cp -f %S/Inputs/stable_ir_values.ll %t.ll && %update_test_checks %t.ll
2+
# RUN: diff -u %t.ll %S/Inputs/stable_ir_values.ll.expected
Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
# RUN: cp -f %S/Inputs/stable_ir_values2.ll %t.ll && %update_test_checks %t.ll
2+
# RUN: diff -u %t.ll %S/Inputs/stable_ir_values2.ll.expected
Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
# RUN: cp -f %S/Inputs/stable_ir_values3.ll %t.ll && %update_test_checks %t.ll
2+
# RUN: diff -u %t.ll %S/Inputs/stable_ir_values3.ll.expected
Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
# RUN: cp -f %S/Inputs/stable_ir_values4.ll %t.ll && %update_test_checks %t.ll
2+
# RUN: diff -u %t.ll %S/Inputs/stable_ir_values4.ll.expected

0 commit comments

Comments
 (0)