6
6
; OFF-LABEL: @new_hot_cold()
7
7
8
8
;; First check with the default hint values (254 = -2, 128 = -128, 222 = -34).
9
- ; RUN: opt < %s -passes=instcombine -optimize-hot-cold-new -S | FileCheck %s --check-prefix =HOTCOLD -DCOLD=1 -DHOT=-2 -DNOTCOLD=-128 -DAMBIG=-34 -DPREVHINTCOLD=7 -DPREVHINTNOTCOLD=7 -DPREVHINTHOT=7 -DPREVHINTAMBIG=7
9
+ ; RUN: opt < %s -passes=instcombine -optimize-hot-cold-new -S | FileCheck %s --check-prefixes =HOTCOLD,NOBUILTIN-OFF -DCOLD=1 -DHOT=-2 -DNOTCOLD=-128 -DAMBIG=-34 -DPREVHINTCOLD=7 -DPREVHINTNOTCOLD=7 -DPREVHINTHOT=7 -DPREVHINTAMBIG=7
10
10
11
11
;; Next check with the non-default cold and hot hint values (200 =-56).
12
- ; RUN: opt < %s -passes=instcombine -optimize-hot-cold-new -cold-new-hint-value=5 -hot-new-hint-value=200 -notcold-new-hint-value=99 -ambiguous-new-hint-value=44 -S | FileCheck %s --check-prefix=HOTCOLD -DCOLD=5 -DHOT=-56 -DAMBIG=44 -DNOTCOLD=99 -DPREVHINTCOLD=7 -DPREVHINTNOTCOLD=7 -DPREVHINTHOT=7 -DPREVHINTAMBIG=7
12
+ ; RUN: opt < %s -passes=instcombine -optimize-hot-cold-new -cold-new-hint-value=5 -hot-new-hint-value=200 -notcold-new-hint-value=99 -ambiguous-new-hint-value=44 -S | FileCheck %s --check-prefixes=HOTCOLD,NOBUILTIN-OFF -DCOLD=5 -DHOT=-56 -DAMBIG=44 -DNOTCOLD=99 -DPREVHINTCOLD=7 -DPREVHINTNOTCOLD=7 -DPREVHINTHOT=7 -DPREVHINTAMBIG=7
13
+
14
+ ;; Next check with the same non-default cold and hot hint values (200 =-56),
15
+ ;; but with transformation of nobuiltin calls enabled.
16
+ ; RUN: opt < %s -passes=instcombine -optimize-hot-cold-new -optimize-nobuiltin-hot-cold-new-new -cold-new-hint-value=5 -hot-new-hint-value=200 -notcold-new-hint-value=99 -ambiguous-new-hint-value=44 -S | FileCheck %s --check-prefixes=HOTCOLD,NOBUILTIN-ON -DCOLD=5 -DHOT=-56 -DAMBIG=44 -DNOTCOLD=99 -DPREVHINTCOLD=7 -DPREVHINTNOTCOLD=7 -DPREVHINTHOT=7 -DPREVHINTAMBIG=7
13
17
14
18
;; Try again with the non-default cold and hot hint values (200 =-56), and this
15
19
;; time specify that existing hints should be updated.
16
- ; RUN: opt < %s -passes=instcombine -optimize-hot-cold-new -cold-new-hint-value=5 -notcold-new-hint-value=100 -hot-new-hint-value=200 -ambiguous-new-hint-value=44 -optimize-existing-hot-cold-new -S | FileCheck %s --check-prefix =HOTCOLD -DCOLD=5 -DHOT=-56 -DNOTCOLD=100 -DAMBIG=44 -DPREVHINTCOLD=5 -DPREVHINTNOTCOLD=100 -DPREVHINTHOT=-56 -DPREVHINTAMBIG=44
20
+ ; RUN: opt < %s -passes=instcombine -optimize-hot-cold-new -cold-new-hint-value=5 -notcold-new-hint-value=100 -hot-new-hint-value=200 -ambiguous-new-hint-value=44 -optimize-existing-hot-cold-new -S | FileCheck %s --check-prefixes =HOTCOLD,NOBUILTIN-OFF -DCOLD=5 -DHOT=-56 -DNOTCOLD=100 -DAMBIG=44 -DPREVHINTCOLD=5 -DPREVHINTNOTCOLD=100 -DPREVHINTHOT=-56 -DPREVHINTAMBIG=44
17
21
18
22
;; Make sure that values not in 0..255 are flagged with an error
19
23
; RUN: not opt < %s -passes=instcombine -optimize-hot-cold-new -cold-new-hint-value=256 -S 2>&1 | FileCheck %s --check-prefix=ERROR
@@ -40,8 +44,9 @@ define void @new() {
40
44
; HOTCOLD: @_Znwm12__hot_cold_t(i64 10, i8 [[AMBIG]])
41
45
%call4 = call ptr @_Znwm (i64 10 ) #7
42
46
call void @dummy (ptr %call4 )
43
- ;; Attribute cold on a nobuiltin call has no effect.
44
- ; HOTCOLD: @_Znwm(i64 10)
47
+ ;; Attribute cold on a nobuiltin call has no effect, unless optionally enabled.
48
+ ; NOBUILTIN-OFF: @_Znwm(i64 10)
49
+ ; NOBUILTIN-ON: @_Znwm12__hot_cold_t(i64 10, i8 [[COLD]])
45
50
%call3 = call ptr @_Znwm (i64 10 ) #6
46
51
call void @dummy (ptr %call3 )
47
52
ret void
@@ -68,8 +73,9 @@ define void @new_align() {
68
73
; HOTCOLD: @_ZnwmSt11align_val_t12__hot_cold_t(i64 10, i64 8, i8 [[AMBIG]])
69
74
%call4 = call ptr @_ZnwmSt11align_val_t (i64 10 , i64 8 ) #7
70
75
call void @dummy (ptr %call4 )
71
- ;; Attribute cold on a nobuiltin call has no effect.
72
- ; HOTCOLD: @_ZnwmSt11align_val_t(i64 10, i64 8)
76
+ ;; Attribute cold on a nobuiltin call has no effect, unless optionally enabled.
77
+ ; NOBUILTIN-OFF: @_ZnwmSt11align_val_t(i64 10, i64 8)
78
+ ; NOBUILTIN-ON: @_ZnwmSt11align_val_t12__hot_cold_t(i64 10, i64 8, i8 [[COLD]])
73
79
%call3 = call ptr @_ZnwmSt11align_val_t (i64 10 , i64 8 ) #6
74
80
call void @dummy (ptr %call3 )
75
81
ret void
@@ -97,8 +103,9 @@ define void @new_nothrow() {
97
103
; HOTCOLD: @_ZnwmRKSt9nothrow_t12__hot_cold_t(i64 10, ptr nonnull %nt, i8 [[AMBIG]])
98
104
%call4 = call ptr @_ZnwmRKSt9nothrow_t (i64 10 , ptr %nt ) #7
99
105
call void @dummy (ptr %call4 )
100
- ;; Attribute cold on a nobuiltin call has no effect.
101
- ; HOTCOLD: @_ZnwmRKSt9nothrow_t(i64 10, ptr nonnull %nt)
106
+ ;; Attribute cold on a nobuiltin call has no effect, unless optionally enabled.
107
+ ; NOBUILTIN-OFF: @_ZnwmRKSt9nothrow_t(i64 10, ptr nonnull %nt)
108
+ ; NOBUILTIN-ON: @_ZnwmRKSt9nothrow_t12__hot_cold_t(i64 10, ptr nonnull %nt, i8 [[COLD]])
102
109
%call3 = call ptr @_ZnwmRKSt9nothrow_t (i64 10 , ptr %nt ) #6
103
110
call void @dummy (ptr %call3 )
104
111
ret void
@@ -127,8 +134,9 @@ define void @new_align_nothrow() {
127
134
; HOTCOLD: @_ZnwmSt11align_val_tRKSt9nothrow_t12__hot_cold_t(i64 10, i64 8, ptr nonnull %nt, i8 [[AMBIG]])
128
135
%call4 = call ptr @_ZnwmSt11align_val_tRKSt9nothrow_t (i64 10 , i64 8 , ptr %nt ) #7
129
136
call void @dummy (ptr %call4 )
130
- ;; Attribute cold on a nobuiltin call has no effect.
131
- ; HOTCOLD: @_ZnwmSt11align_val_tRKSt9nothrow_t(i64 10, i64 8, ptr nonnull %nt)
137
+ ;; Attribute cold on a nobuiltin call has no effect, unless optionally enabled.
138
+ ; NOBUILTIN-OFF: @_ZnwmSt11align_val_tRKSt9nothrow_t(i64 10, i64 8, ptr nonnull %nt)
139
+ ; NOBUILTIN-ON: @_ZnwmSt11align_val_tRKSt9nothrow_t12__hot_cold_t(i64 10, i64 8, ptr nonnull %nt, i8 [[COLD]])
132
140
%call3 = call ptr @_ZnwmSt11align_val_tRKSt9nothrow_t (i64 10 , i64 8 , ptr %nt ) #6
133
141
call void @dummy (ptr %call3 )
134
142
ret void
@@ -154,8 +162,9 @@ define void @array_new() {
154
162
; HOTCOLD: @_Znam12__hot_cold_t(i64 10, i8 [[AMBIG]])
155
163
%call4 = call ptr @_Znam (i64 10 ) #7
156
164
call void @dummy (ptr %call4 )
157
- ;; Attribute cold on a nobuiltin call has no effect.
158
- ; HOTCOLD: @_Znam(i64 10)
165
+ ;; Attribute cold on a nobuiltin call has no effect, unless optionally enabled.
166
+ ; NOBUILTIN-OFF: @_Znam(i64 10)
167
+ ; NOBUILTIN-ON: @_Znam12__hot_cold_t(i64 10, i8 [[COLD]])
159
168
%call3 = call ptr @_Znam (i64 10 ) #6
160
169
call void @dummy (ptr %call3 )
161
170
ret void
@@ -182,8 +191,9 @@ define void @array_new_align() {
182
191
; HOTCOLD: @_ZnamSt11align_val_t12__hot_cold_t(i64 10, i64 8, i8 [[AMBIG]])
183
192
%call4 = call ptr @_ZnamSt11align_val_t (i64 10 , i64 8 ) #7
184
193
call void @dummy (ptr %call4 )
185
- ;; Attribute cold on a nobuiltin call has no effect.
186
- ; HOTCOLD: @_ZnamSt11align_val_t(i64 10, i64 8)
194
+ ;; Attribute cold on a nobuiltin call has no effect, unless optionally enabled.
195
+ ; NOBUILTIN-OFF: @_ZnamSt11align_val_t(i64 10, i64 8)
196
+ ; NOBUILTIN-ON: @_ZnamSt11align_val_t12__hot_cold_t(i64 10, i64 8, i8 [[COLD]])
187
197
%call3 = call ptr @_ZnamSt11align_val_t (i64 10 , i64 8 ) #6
188
198
call void @dummy (ptr %call3 )
189
199
ret void
@@ -211,8 +221,9 @@ define void @array_new_nothrow() {
211
221
; HOTCOLD: @_ZnamRKSt9nothrow_t12__hot_cold_t(i64 10, ptr nonnull %nt, i8 [[AMBIG]])
212
222
%call4 = call ptr @_ZnamRKSt9nothrow_t (i64 10 , ptr %nt ) #7
213
223
call void @dummy (ptr %call4 )
214
- ;; Attribute cold on a nobuiltin call has no effect.
215
- ; HOTCOLD: @_ZnamRKSt9nothrow_t(i64 10, ptr nonnull %nt)
224
+ ;; Attribute cold on a nobuiltin call has no effect, unless optionally enabled.
225
+ ; NOBUILTIN-OFF: @_ZnamRKSt9nothrow_t(i64 10, ptr nonnull %nt)
226
+ ; NOBUILTIN-ON: @_ZnamRKSt9nothrow_t12__hot_cold_t(i64 10, ptr nonnull %nt, i8 [[COLD]])
216
227
%call3 = call ptr @_ZnamRKSt9nothrow_t (i64 10 , ptr %nt ) #6
217
228
call void @dummy (ptr %call3 )
218
229
ret void
@@ -241,8 +252,9 @@ define void @array_new_align_nothrow() {
241
252
; HOTCOLD: @_ZnamSt11align_val_tRKSt9nothrow_t12__hot_cold_t(i64 10, i64 8, ptr nonnull %nt, i8 [[AMBIG]])
242
253
%call4 = call ptr @_ZnamSt11align_val_tRKSt9nothrow_t (i64 10 , i64 8 , ptr %nt ) #7
243
254
call void @dummy (ptr %call4 )
244
- ;; Attribute cold on a nobuiltin call has no effect.
245
- ; HOTCOLD: @_ZnamSt11align_val_tRKSt9nothrow_t(i64 10, i64 8, ptr nonnull %nt)
255
+ ;; Attribute cold on a nobuiltin call has no effect, unless optionally enabled.
256
+ ; NOBUILTIN-OFF: @_ZnamSt11align_val_tRKSt9nothrow_t(i64 10, i64 8, ptr nonnull %nt)
257
+ ; NOBUILTIN-ON: @_ZnamSt11align_val_tRKSt9nothrow_t12__hot_cold_t(i64 10, i64 8, ptr nonnull %nt, i8 [[COLD]])
246
258
%call3 = call ptr @_ZnamSt11align_val_tRKSt9nothrow_t (i64 10 , i64 8 , ptr %nt ) #6
247
259
call void @dummy (ptr %call3 )
248
260
ret void
@@ -492,8 +504,9 @@ define void @size_returning_test() {
492
504
%call4 = call {ptr , i64 } @__size_returning_new (i64 10 ) #8
493
505
%p4 = extractvalue {ptr , i64 } %call4 , 0
494
506
call void @dummy (ptr %p4 )
495
- ;; Attribute cold on a nobuiltin call has no effect.
496
- ; HOTCOLD: @__size_returning_new(i64 10)
507
+ ;; Attribute cold on a nobuiltin call has no effect, unless optionally enabled.
508
+ ; NOBUILTIN-OFF: @__size_returning_new(i64 10)
509
+ ; NOBUILTIN-ON: @__size_returning_new_hot_cold(i64 10, i8 [[COLD]])
497
510
%call3 = call {ptr , i64 } @__size_returning_new (i64 10 ) #6
498
511
%p3 = extractvalue {ptr , i64 } %call3 , 0
499
512
call void @dummy (ptr %p3 )
@@ -524,8 +537,9 @@ define void @size_returning_aligned_test() {
524
537
%call4 = call {ptr , i64 } @__size_returning_new_aligned (i64 10 , i64 8 ) #8
525
538
%p4 = extractvalue {ptr , i64 } %call4 , 0
526
539
call void @dummy (ptr %p4 )
527
- ;; Attribute cold on a nobuiltin call has no effect.
528
- ; HOTCOLD: @__size_returning_new_aligned(i64 10, i64 8)
540
+ ;; Attribute cold on a nobuiltin call has no effect, unless optionally enabled.
541
+ ; NOBUILTIN-OFF: @__size_returning_new_aligned(i64 10, i64 8)
542
+ ; NOBUILTIN-ON: @__size_returning_new_aligned_hot_cold(i64 10, i64 8, i8 [[COLD]])
529
543
%call3 = call {ptr , i64 } @__size_returning_new_aligned (i64 10 , i64 8 ) #6
530
544
%p3 = extractvalue {ptr , i64 } %call3 , 0
531
545
call void @dummy (ptr %p3 )
0 commit comments