Skip to content

Commit 3c4fa5a

Browse files
committed
[MergeFunc] Add tests showing incorrect handling of metadata call args.
1 parent 83ccab3 commit 3c4fa5a

File tree

1 file changed

+102
-0
lines changed

1 file changed

+102
-0
lines changed
Lines changed: 102 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,102 @@
1+
; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: --include-generated-funcs --version 5
2+
; RUN: opt -p mergefunc -S %s | FileCheck %s
3+
4+
; FIXME: Should not be merged with @call_mdtuple_arg_not_equal_2.
5+
define i64 @call_mdtuple_arg_not_equal_1() {
6+
%r = call i64 @llvm.read_volatile_register.i64(metadata !0)
7+
ret i64 %r
8+
}
9+
10+
define i64 @call_mdtuple_arg_not_equal_2() {
11+
%r = call i64 @llvm.read_volatile_register.i64(metadata !1)
12+
ret i64 %r
13+
}
14+
15+
define i64 @call_mdtuple_arg_with_cycle_equal_1() {
16+
%r = call i64 @llvm.read_volatile_register.i64(metadata !2)
17+
ret i64 %r
18+
}
19+
20+
define i64 @call_mdtuple_arg_with_cycle_equal_2() {
21+
%r = call i64 @llvm.read_volatile_register.i64(metadata !3)
22+
ret i64 %r
23+
}
24+
25+
; FIXME: Should not be merged with @call_mdtuple_arg_with_cycle_not_equal_2.
26+
define i64 @call_mdtuple_arg_with_cycle_not_equal_1() {
27+
%r = call i64 @llvm.read_volatile_register.i64(metadata !3)
28+
ret i64 %r
29+
}
30+
31+
define i64 @call_mdtuple_arg_with_cycle_not_equal_2() {
32+
%r = call i64 @llvm.read_volatile_register.i64(metadata !4)
33+
ret i64 %r
34+
}
35+
36+
define i64 @call_mdtuple_arg_equal_1() {
37+
%r = call i64 @llvm.read_volatile_register.i64(metadata !5)
38+
ret i64 %r
39+
}
40+
41+
define i64 @call_mdtuple_arg_equal_2() {
42+
%r = call i64 @llvm.read_volatile_register.i64(metadata !6)
43+
ret i64 %r
44+
}
45+
46+
declare i64 @llvm.read_volatile_register.i64(metadata)
47+
48+
!0 = !{!"foo"}
49+
!1 = !{!"bar"}
50+
51+
!2 = distinct !{!2, !"foo"}
52+
!3 = distinct !{!3, !"foo"}
53+
54+
!4 = distinct !{!4, !"bar"}
55+
56+
!5 = !{!"foo", i64 10}
57+
!6 = !{!"foo", i64 10}
58+
; CHECK-LABEL: define i64 @call_mdtuple_arg_with_cycle_equal_1() {
59+
; CHECK-NEXT: [[R:%.*]] = call i64 @llvm.read_volatile_register.i64(metadata [[META0:![0-9]+]])
60+
; CHECK-NEXT: ret i64 [[R]]
61+
;
62+
;
63+
; CHECK-LABEL: define i64 @call_mdtuple_arg_with_cycle_equal_2() {
64+
; CHECK-NEXT: [[R:%.*]] = call i64 @llvm.read_volatile_register.i64(metadata [[META1:![0-9]+]])
65+
; CHECK-NEXT: ret i64 [[R]]
66+
;
67+
;
68+
; CHECK-LABEL: define i64 @call_mdtuple_arg_with_cycle_not_equal_1() {
69+
; CHECK-NEXT: [[R:%.*]] = call i64 @llvm.read_volatile_register.i64(metadata [[META1]])
70+
; CHECK-NEXT: ret i64 [[R]]
71+
;
72+
;
73+
; CHECK-LABEL: define i64 @call_mdtuple_arg_with_cycle_not_equal_2() {
74+
; CHECK-NEXT: [[R:%.*]] = call i64 @llvm.read_volatile_register.i64(metadata [[META2:![0-9]+]])
75+
; CHECK-NEXT: ret i64 [[R]]
76+
;
77+
;
78+
; CHECK-LABEL: define i64 @call_mdtuple_arg_equal_1() {
79+
; CHECK-NEXT: [[R:%.*]] = call i64 @llvm.read_volatile_register.i64(metadata [[META3:![0-9]+]])
80+
; CHECK-NEXT: ret i64 [[R]]
81+
;
82+
;
83+
; CHECK-LABEL: define i64 @call_mdtuple_arg_not_equal_2() {
84+
; CHECK-NEXT: [[TMP1:%.*]] = tail call i64 @call_mdtuple_arg_equal_1()
85+
; CHECK-NEXT: ret i64 [[TMP1]]
86+
;
87+
;
88+
; CHECK-LABEL: define i64 @call_mdtuple_arg_not_equal_1() {
89+
; CHECK-NEXT: [[TMP1:%.*]] = tail call i64 @call_mdtuple_arg_equal_1()
90+
; CHECK-NEXT: ret i64 [[TMP1]]
91+
;
92+
;
93+
; CHECK-LABEL: define i64 @call_mdtuple_arg_equal_2() {
94+
; CHECK-NEXT: [[TMP1:%.*]] = tail call i64 @call_mdtuple_arg_equal_1()
95+
; CHECK-NEXT: ret i64 [[TMP1]]
96+
;
97+
;.
98+
; CHECK: [[META0]] = distinct !{[[META0]], !"foo"}
99+
; CHECK: [[META1]] = distinct !{[[META1]], !"foo"}
100+
; CHECK: [[META2]] = distinct !{[[META2]], !"bar"}
101+
; CHECK: [[META3]] = !{!"foo", i64 10}
102+
;.

0 commit comments

Comments
 (0)