1
1
; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: --check-attributes --version 5
2
- ; RUN: opt < %s -passes=" lto<O2>" -S | FileCheck %s
2
+ ; RUN: opt < %s -passes=function-attrs -force- lto-funcattrs -S | FileCheck %s
3
3
4
4
; This test includes a call graph with multiple SCCs. The purpose of this is
5
5
; to check that norecurse is not added when a function is part of non-singular
6
6
; SCC.
7
7
; There are three different SCCs in this test:
8
- ; SCC#1: main , foo, bar, foo1, bar1
8
+ ; SCC#1: f1 , foo, bar, foo1, bar1
9
9
; SCC#2: bar2, bar3, bar4
10
10
; SCC#3: baz, fun
11
11
; None of these functions should be marked as norecurse
12
12
13
13
; Function Attrs: nofree noinline nosync nounwind memory(none) uwtable
14
- define internal void @bar1 () local_unnamed_addr #0 {
14
+ define internal void @bar1 () #0 {
15
15
; CHECK: Function Attrs: nofree noinline nosync nounwind memory(none) uwtable
16
- ; CHECK-LABEL: define internal fastcc void @bar1(
17
- ; CHECK-SAME: ) unnamed_addr #[[ATTR0:[0-9]+]] {
16
+ ; CHECK-LABEL: define internal void @bar1(
17
+ ; CHECK-SAME: ) #[[ATTR0:[0-9]+]] {
18
18
; CHECK-NEXT: [[ENTRY:.*:]]
19
- ; CHECK-NEXT: [[CALL:%.*]] = tail call i32 @main ()
19
+ ; CHECK-NEXT: tail call void @f1 ()
20
20
; CHECK-NEXT: ret void
21
21
;
22
22
entry:
23
- %call = tail call i32 @main ()
23
+ tail call void @f1 ()
24
24
ret void
25
25
}
26
26
27
27
; Function Attrs: nofree noinline nosync nounwind memory(none) uwtable
28
- define dso_local noundef i32 @main () local_unnamed_addr #0 {
28
+ define internal void @f1 () #0 {
29
29
; CHECK: Function Attrs: nofree noinline nosync nounwind memory(none) uwtable
30
- ; CHECK-LABEL: define dso_local noundef i32 @main (
31
- ; CHECK-SAME: ) local_unnamed_addr #[[ATTR0]] {
30
+ ; CHECK-LABEL: define internal void @f1 (
31
+ ; CHECK-SAME: ) #[[ATTR0]] {
32
32
; CHECK-NEXT: [[ENTRY:.*:]]
33
- ; CHECK-NEXT: tail call fastcc void @foo()
34
- ; CHECK-NEXT: tail call fastcc void @bar2()
35
- ; CHECK-NEXT: tail call fastcc void @baz()
36
- ; CHECK-NEXT: ret i32 0
33
+ ; CHECK-NEXT: tail call void @foo()
34
+ ; CHECK-NEXT: tail call void @bar2()
35
+ ; CHECK-NEXT: tail call void @baz()
36
+ ; CHECK-NEXT: ret void
37
37
;
38
38
entry:
39
39
tail call void @foo ()
40
40
tail call void @bar2 ()
41
41
tail call void @baz ()
42
+ ret void
43
+ }
44
+
45
+ ; Function Attrs: nofree noinline norecurse nosync nounwind memory(none) uwtable
46
+ define dso_local noundef i32 @main () #1 {
47
+ ; CHECK: Function Attrs: nofree noinline norecurse nosync nounwind memory(none) uwtable
48
+ ; CHECK-LABEL: define dso_local noundef i32 @main(
49
+ ; CHECK-SAME: ) #[[ATTR1:[0-9]+]] {
50
+ ; CHECK-NEXT: [[ENTRY:.*:]]
51
+ ; CHECK-NEXT: tail call void @f1()
52
+ ; CHECK-NEXT: ret i32 0
53
+ ;
54
+ entry:
55
+ tail call void @f1 ()
42
56
ret i32 0
43
57
}
44
58
45
59
; Function Attrs: nofree noinline nosync nounwind memory(none) uwtable
46
- define internal void @foo1 () local_unnamed_addr #0 {
60
+ define internal void @foo1 () #0 {
47
61
; CHECK: Function Attrs: nofree noinline nosync nounwind memory(none) uwtable
48
- ; CHECK-LABEL: define internal fastcc void @foo1(
49
- ; CHECK-SAME: ) unnamed_addr #[[ATTR0]] {
62
+ ; CHECK-LABEL: define internal void @foo1(
63
+ ; CHECK-SAME: ) #[[ATTR0]] {
50
64
; CHECK-NEXT: [[ENTRY:.*:]]
51
- ; CHECK-NEXT: tail call fastcc void @bar1()
65
+ ; CHECK-NEXT: tail call void @bar1()
52
66
; CHECK-NEXT: ret void
53
67
;
54
68
entry:
@@ -57,12 +71,12 @@ entry:
57
71
}
58
72
59
73
; Function Attrs: nofree noinline nosync nounwind memory(none) uwtable
60
- define internal void @bar () local_unnamed_addr #0 {
74
+ define internal void @bar () #0 {
61
75
; CHECK: Function Attrs: nofree noinline nosync nounwind memory(none) uwtable
62
- ; CHECK-LABEL: define internal fastcc void @bar(
63
- ; CHECK-SAME: ) unnamed_addr #[[ATTR0]] {
76
+ ; CHECK-LABEL: define internal void @bar(
77
+ ; CHECK-SAME: ) #[[ATTR0]] {
64
78
; CHECK-NEXT: [[ENTRY:.*:]]
65
- ; CHECK-NEXT: tail call fastcc void @foo1()
79
+ ; CHECK-NEXT: tail call void @foo1()
66
80
; CHECK-NEXT: ret void
67
81
;
68
82
entry:
@@ -71,12 +85,12 @@ entry:
71
85
}
72
86
73
87
; Function Attrs: nofree noinline nosync nounwind memory(none) uwtable
74
- define internal void @foo () local_unnamed_addr #0 {
88
+ define internal void @foo () #0 {
75
89
; CHECK: Function Attrs: nofree noinline nosync nounwind memory(none) uwtable
76
- ; CHECK-LABEL: define internal fastcc void @foo(
77
- ; CHECK-SAME: ) unnamed_addr #[[ATTR0]] {
90
+ ; CHECK-LABEL: define internal void @foo(
91
+ ; CHECK-SAME: ) #[[ATTR0]] {
78
92
; CHECK-NEXT: [[ENTRY:.*:]]
79
- ; CHECK-NEXT: tail call fastcc void @bar()
93
+ ; CHECK-NEXT: tail call void @bar()
80
94
; CHECK-NEXT: ret void
81
95
;
82
96
entry:
@@ -85,12 +99,12 @@ entry:
85
99
}
86
100
87
101
; Function Attrs: nofree noinline nosync nounwind memory(none) uwtable
88
- define internal void @bar4 () local_unnamed_addr #0 {
102
+ define internal void @bar4 () #0 {
89
103
; CHECK: Function Attrs: nofree noinline nosync nounwind memory(none) uwtable
90
- ; CHECK-LABEL: define internal fastcc void @bar4(
91
- ; CHECK-SAME: ) unnamed_addr #[[ATTR0]] {
104
+ ; CHECK-LABEL: define internal void @bar4(
105
+ ; CHECK-SAME: ) #[[ATTR0]] {
92
106
; CHECK-NEXT: [[ENTRY:.*:]]
93
- ; CHECK-NEXT: tail call fastcc void @bar2()
107
+ ; CHECK-NEXT: tail call void @bar2()
94
108
; CHECK-NEXT: ret void
95
109
;
96
110
entry:
@@ -99,12 +113,12 @@ entry:
99
113
}
100
114
101
115
; Function Attrs: nofree noinline nosync nounwind memory(none) uwtable
102
- define internal void @bar2 () local_unnamed_addr #0 {
116
+ define internal void @bar2 () #0 {
103
117
; CHECK: Function Attrs: nofree noinline nosync nounwind memory(none) uwtable
104
- ; CHECK-LABEL: define internal fastcc void @bar2(
105
- ; CHECK-SAME: ) unnamed_addr #[[ATTR0]] {
118
+ ; CHECK-LABEL: define internal void @bar2(
119
+ ; CHECK-SAME: ) #[[ATTR0]] {
106
120
; CHECK-NEXT: [[ENTRY:.*:]]
107
- ; CHECK-NEXT: tail call fastcc void @bar3()
121
+ ; CHECK-NEXT: tail call void @bar3()
108
122
; CHECK-NEXT: ret void
109
123
;
110
124
entry:
@@ -113,12 +127,12 @@ entry:
113
127
}
114
128
115
129
; Function Attrs: nofree noinline nosync nounwind memory(none) uwtable
116
- define internal void @bar3 () local_unnamed_addr #0 {
130
+ define internal void @bar3 () #0 {
117
131
; CHECK: Function Attrs: nofree noinline nosync nounwind memory(none) uwtable
118
- ; CHECK-LABEL: define internal fastcc void @bar3(
119
- ; CHECK-SAME: ) unnamed_addr #[[ATTR0]] {
132
+ ; CHECK-LABEL: define internal void @bar3(
133
+ ; CHECK-SAME: ) #[[ATTR0]] {
120
134
; CHECK-NEXT: [[ENTRY:.*:]]
121
- ; CHECK-NEXT: tail call fastcc void @bar4()
135
+ ; CHECK-NEXT: tail call void @bar4()
122
136
; CHECK-NEXT: ret void
123
137
;
124
138
entry:
@@ -127,12 +141,12 @@ entry:
127
141
}
128
142
129
143
; Function Attrs: nofree noinline nosync nounwind memory(none) uwtable
130
- define internal void @fun () local_unnamed_addr #0 {
144
+ define internal void @fun () #0 {
131
145
; CHECK: Function Attrs: nofree noinline nosync nounwind memory(none) uwtable
132
- ; CHECK-LABEL: define internal fastcc void @fun(
133
- ; CHECK-SAME: ) unnamed_addr #[[ATTR0]] {
146
+ ; CHECK-LABEL: define internal void @fun(
147
+ ; CHECK-SAME: ) #[[ATTR0]] {
134
148
; CHECK-NEXT: [[ENTRY:.*:]]
135
- ; CHECK-NEXT: tail call fastcc void @baz()
149
+ ; CHECK-NEXT: tail call void @baz()
136
150
; CHECK-NEXT: ret void
137
151
;
138
152
entry:
@@ -141,12 +155,12 @@ entry:
141
155
}
142
156
143
157
; Function Attrs: nofree noinline nosync nounwind memory(none) uwtable
144
- define internal void @baz () local_unnamed_addr #0 {
158
+ define internal void @baz () #0 {
145
159
; CHECK: Function Attrs: nofree noinline nosync nounwind memory(none) uwtable
146
- ; CHECK-LABEL: define internal fastcc void @baz(
147
- ; CHECK-SAME: ) unnamed_addr #[[ATTR0]] {
160
+ ; CHECK-LABEL: define internal void @baz(
161
+ ; CHECK-SAME: ) #[[ATTR0]] {
148
162
; CHECK-NEXT: [[ENTRY:.*:]]
149
- ; CHECK-NEXT: tail call fastcc void @fun()
163
+ ; CHECK-NEXT: tail call void @fun()
150
164
; CHECK-NEXT: ret void
151
165
;
152
166
entry:
@@ -155,3 +169,4 @@ entry:
155
169
}
156
170
157
171
attributes #0 = { nofree noinline nosync nounwind memory(none) uwtable }
172
+ attributes #1 = { nofree noinline norecurse nosync nounwind memory(none) uwtable }
0 commit comments