@@ -36,6 +36,10 @@ define void @new() {
36
36
; HOTCOLD: @_Znwm12__hot_cold_t(i64 10, i8 [[HOT]])
37
37
%call2 = call ptr @_Znwm (i64 10 ) #2
38
38
call void @dummy (ptr %call2 )
39
+ ;; Attribute cold on a nobuiltin call has no effect.
40
+ ; HOTCOLD: @_Znwm(i64 10)
41
+ %call3 = call ptr @_Znwm (i64 10 ) #6
42
+ call void @dummy (ptr %call3 )
39
43
ret void
40
44
}
41
45
@@ -56,6 +60,10 @@ define void @new_align() {
56
60
; HOTCOLD: @_ZnwmSt11align_val_t12__hot_cold_t(i64 10, i64 8, i8 [[HOT]])
57
61
%call2 = call ptr @_ZnwmSt11align_val_t (i64 10 , i64 8 ) #2
58
62
call void @dummy (ptr %call2 )
63
+ ;; Attribute cold on a nobuiltin call has no effect.
64
+ ; HOTCOLD: @_ZnwmSt11align_val_t(i64 10, i64 8)
65
+ %call3 = call ptr @_ZnwmSt11align_val_t (i64 10 , i64 8 ) #6
66
+ call void @dummy (ptr %call3 )
59
67
ret void
60
68
}
61
69
@@ -77,6 +85,10 @@ define void @new_nothrow() {
77
85
; HOTCOLD: @_ZnwmRKSt9nothrow_t12__hot_cold_t(i64 10, ptr nonnull %nt, i8 [[HOT]])
78
86
%call2 = call ptr @_ZnwmRKSt9nothrow_t (i64 10 , ptr %nt ) #2
79
87
call void @dummy (ptr %call2 )
88
+ ;; Attribute cold on a nobuiltin call has no effect.
89
+ ; HOTCOLD: @_ZnwmRKSt9nothrow_t(i64 10, ptr nonnull %nt)
90
+ %call3 = call ptr @_ZnwmRKSt9nothrow_t (i64 10 , ptr %nt ) #6
91
+ call void @dummy (ptr %call3 )
80
92
ret void
81
93
}
82
94
@@ -99,6 +111,10 @@ define void @new_align_nothrow() {
99
111
; HOTCOLD: @_ZnwmSt11align_val_tRKSt9nothrow_t12__hot_cold_t(i64 10, i64 8, ptr nonnull %nt, i8 [[HOT]])
100
112
%call2 = call ptr @_ZnwmSt11align_val_tRKSt9nothrow_t (i64 10 , i64 8 , ptr %nt ) #2
101
113
call void @dummy (ptr %call2 )
114
+ ;; Attribute cold on a nobuiltin call has no effect.
115
+ ; HOTCOLD: @_ZnwmSt11align_val_tRKSt9nothrow_t(i64 10, i64 8, ptr nonnull %nt)
116
+ %call3 = call ptr @_ZnwmSt11align_val_tRKSt9nothrow_t (i64 10 , i64 8 , ptr %nt ) #6
117
+ call void @dummy (ptr %call3 )
102
118
ret void
103
119
}
104
120
@@ -118,6 +134,10 @@ define void @array_new() {
118
134
; HOTCOLD: @_Znam12__hot_cold_t(i64 10, i8 [[HOT]])
119
135
%call2 = call ptr @_Znam (i64 10 ) #2
120
136
call void @dummy (ptr %call2 )
137
+ ;; Attribute cold on a nobuiltin call has no effect.
138
+ ; HOTCOLD: @_Znam(i64 10)
139
+ %call3 = call ptr @_Znam (i64 10 ) #6
140
+ call void @dummy (ptr %call3 )
121
141
ret void
122
142
}
123
143
@@ -138,6 +158,10 @@ define void @array_new_align() {
138
158
; HOTCOLD: @_ZnamSt11align_val_t12__hot_cold_t(i64 10, i64 8, i8 [[HOT]])
139
159
%call2 = call ptr @_ZnamSt11align_val_t (i64 10 , i64 8 ) #2
140
160
call void @dummy (ptr %call2 )
161
+ ;; Attribute cold on a nobuiltin call has no effect.
162
+ ; HOTCOLD: @_ZnamSt11align_val_t(i64 10, i64 8)
163
+ %call3 = call ptr @_ZnamSt11align_val_t (i64 10 , i64 8 ) #6
164
+ call void @dummy (ptr %call3 )
141
165
ret void
142
166
}
143
167
@@ -159,6 +183,10 @@ define void @array_new_nothrow() {
159
183
; HOTCOLD: @_ZnamRKSt9nothrow_t12__hot_cold_t(i64 10, ptr nonnull %nt, i8 [[HOT]])
160
184
%call2 = call ptr @_ZnamRKSt9nothrow_t (i64 10 , ptr %nt ) #2
161
185
call void @dummy (ptr %call2 )
186
+ ;; Attribute cold on a nobuiltin call has no effect.
187
+ ; HOTCOLD: @_ZnamRKSt9nothrow_t(i64 10, ptr nonnull %nt)
188
+ %call3 = call ptr @_ZnamRKSt9nothrow_t (i64 10 , ptr %nt ) #6
189
+ call void @dummy (ptr %call3 )
162
190
ret void
163
191
}
164
192
@@ -181,6 +209,10 @@ define void @array_new_align_nothrow() {
181
209
; HOTCOLD: @_ZnamSt11align_val_tRKSt9nothrow_t12__hot_cold_t(i64 10, i64 8, ptr nonnull %nt, i8 [[HOT]])
182
210
%call2 = call ptr @_ZnamSt11align_val_tRKSt9nothrow_t (i64 10 , i64 8 , ptr %nt ) #2
183
211
call void @dummy (ptr %call2 )
212
+ ;; Attribute cold on a nobuiltin call has no effect.
213
+ ; HOTCOLD: @_ZnamSt11align_val_tRKSt9nothrow_t(i64 10, i64 8, ptr nonnull %nt)
214
+ %call3 = call ptr @_ZnamSt11align_val_tRKSt9nothrow_t (i64 10 , i64 8 , ptr %nt ) #6
215
+ call void @dummy (ptr %call3 )
184
216
ret void
185
217
}
186
218
@@ -200,6 +232,10 @@ define void @new_hot_cold() {
200
232
; HOTCOLD: @_Znwm12__hot_cold_t(i64 10, i8 [[PREVHINTHOT]])
201
233
%call2 = call ptr @_Znwm12__hot_cold_t (i64 10 , i8 7 ) #2
202
234
call void @dummy (ptr %call2 )
235
+ ;; Attribute cold on a nobuiltin existing hot/cold call updates the hint.
236
+ ; HOTCOLD: @_Znwm12__hot_cold_t(i64 10, i8 [[PREVHINTCOLD]])
237
+ %call3 = call ptr @_Znwm12__hot_cold_t (i64 10 , i8 7 ) #6
238
+ call void @dummy (ptr %call3 )
203
239
ret void
204
240
}
205
241
@@ -219,6 +255,10 @@ define void @new_align_hot_cold() {
219
255
; HOTCOLD: @_ZnwmSt11align_val_t12__hot_cold_t(i64 10, i64 8, i8 [[PREVHINTHOT]])
220
256
%call2 = call ptr @_ZnwmSt11align_val_t12__hot_cold_t (i64 10 , i64 8 , i8 7 ) #2
221
257
call void @dummy (ptr %call2 )
258
+ ;; Attribute cold on a nobuiltin existing hot/cold call updates the hint.
259
+ ; HOTCOLD: @_ZnwmSt11align_val_t12__hot_cold_t(i64 10, i64 8, i8 [[PREVHINTCOLD]])
260
+ %call3 = call ptr @_ZnwmSt11align_val_t12__hot_cold_t (i64 10 , i64 8 , i8 7 ) #6
261
+ call void @dummy (ptr %call3 )
222
262
ret void
223
263
}
224
264
@@ -239,6 +279,10 @@ define void @new_nothrow_hot_cold() {
239
279
; HOTCOLD: @_ZnwmRKSt9nothrow_t12__hot_cold_t(i64 10, ptr nonnull %nt, i8 [[PREVHINTHOT]])
240
280
%call2 = call ptr @_ZnwmRKSt9nothrow_t12__hot_cold_t (i64 10 , ptr %nt , i8 7 ) #2
241
281
call void @dummy (ptr %call2 )
282
+ ;; Attribute cold on a nobuiltin existing hot/cold call updates the hint.
283
+ ; HOTCOLD: @_ZnwmRKSt9nothrow_t12__hot_cold_t(i64 10, ptr nonnull %nt, i8 [[PREVHINTCOLD]])
284
+ %call3 = call ptr @_ZnwmRKSt9nothrow_t12__hot_cold_t (i64 10 , ptr %nt , i8 7 ) #6
285
+ call void @dummy (ptr %call3 )
242
286
ret void
243
287
}
244
288
@@ -259,6 +303,10 @@ define void @new_align_nothrow_hot_cold() {
259
303
; HOTCOLD: @_ZnwmSt11align_val_tRKSt9nothrow_t12__hot_cold_t(i64 10, i64 8, ptr nonnull %nt, i8 [[PREVHINTHOT]])
260
304
%call2 = call ptr @_ZnwmSt11align_val_tRKSt9nothrow_t12__hot_cold_t (i64 10 , i64 8 , ptr %nt , i8 7 ) #2
261
305
call void @dummy (ptr %call2 )
306
+ ;; Attribute cold on a nobuiltin existing hot/cold call updates the hint.
307
+ ; HOTCOLD: @_ZnwmSt11align_val_tRKSt9nothrow_t12__hot_cold_t(i64 10, i64 8, ptr nonnull %nt, i8 [[PREVHINTCOLD]])
308
+ %call3 = call ptr @_ZnwmSt11align_val_tRKSt9nothrow_t12__hot_cold_t (i64 10 , i64 8 , ptr %nt , i8 7 ) #6
309
+ call void @dummy (ptr %call3 )
262
310
ret void
263
311
}
264
312
@@ -278,6 +326,10 @@ define void @array_new_hot_cold() {
278
326
; HOTCOLD: @_Znam12__hot_cold_t(i64 10, i8 [[PREVHINTHOT]])
279
327
%call2 = call ptr @_Znam12__hot_cold_t (i64 10 , i8 7 ) #2
280
328
call void @dummy (ptr %call2 )
329
+ ;; Attribute cold on a nobuiltin existing hot/cold call updates the hint.
330
+ ; HOTCOLD: @_Znam12__hot_cold_t(i64 10, i8 [[PREVHINTCOLD]])
331
+ %call3 = call ptr @_Znam12__hot_cold_t (i64 10 , i8 7 ) #6
332
+ call void @dummy (ptr %call3 )
281
333
ret void
282
334
}
283
335
@@ -297,6 +349,10 @@ define void @array_new_align_hot_cold() {
297
349
; HOTCOLD: @_ZnamSt11align_val_t12__hot_cold_t(i64 10, i64 8, i8 [[PREVHINTHOT]])
298
350
%call2 = call ptr @_ZnamSt11align_val_t12__hot_cold_t (i64 10 , i64 8 , i8 7 ) #2
299
351
call void @dummy (ptr %call2 )
352
+ ;; Attribute cold on a nobuiltin existing hot/cold call updates the hint.
353
+ ; HOTCOLD: @_ZnamSt11align_val_t12__hot_cold_t(i64 10, i64 8, i8 [[PREVHINTCOLD]])
354
+ %call3 = call ptr @_ZnamSt11align_val_t12__hot_cold_t (i64 10 , i64 8 , i8 7 ) #6
355
+ call void @dummy (ptr %call3 )
300
356
ret void
301
357
}
302
358
@@ -317,6 +373,10 @@ define void @array_new_nothrow_hot_cold() {
317
373
; HOTCOLD: @_ZnamRKSt9nothrow_t12__hot_cold_t(i64 10, ptr nonnull %nt, i8 [[PREVHINTHOT]])
318
374
%call2 = call ptr @_ZnamRKSt9nothrow_t12__hot_cold_t (i64 10 , ptr %nt , i8 7 ) #2
319
375
call void @dummy (ptr %call2 )
376
+ ;; Attribute cold on a nobuiltin existing hot/cold call updates the hint.
377
+ ; HOTCOLD: @_ZnamRKSt9nothrow_t12__hot_cold_t(i64 10, ptr nonnull %nt, i8 [[PREVHINTCOLD]])
378
+ %call3 = call ptr @_ZnamRKSt9nothrow_t12__hot_cold_t (i64 10 , ptr %nt , i8 7 ) #6
379
+ call void @dummy (ptr %call3 )
320
380
ret void
321
381
}
322
382
@@ -337,6 +397,10 @@ define void @array_new_align_nothrow_hot_cold() {
337
397
; HOTCOLD: @_ZnamSt11align_val_tRKSt9nothrow_t12__hot_cold_t(i64 10, i64 8, ptr nonnull %nt, i8 [[PREVHINTHOT]])
338
398
%call2 = call ptr @_ZnamSt11align_val_tRKSt9nothrow_t12__hot_cold_t (i64 10 , i64 8 , ptr %nt , i8 7 ) #2
339
399
call void @dummy (ptr %call2 )
400
+ ;; Attribute cold on a nobuiltin existing hot/cold call updates the hint.
401
+ ; HOTCOLD: @_ZnamSt11align_val_tRKSt9nothrow_t12__hot_cold_t(i64 10, i64 8, ptr nonnull %nt, i8 [[PREVHINTCOLD]])
402
+ %call3 = call ptr @_ZnamSt11align_val_tRKSt9nothrow_t12__hot_cold_t (i64 10 , i64 8 , ptr %nt , i8 7 ) #6
403
+ call void @dummy (ptr %call3 )
340
404
ret void
341
405
}
342
406
@@ -359,6 +423,11 @@ define void @size_returning_test() {
359
423
%call2 = call {ptr , i64 } @__size_returning_new (i64 10 ) #5
360
424
%p2 = extractvalue {ptr , i64 } %call2 , 0
361
425
call void @dummy (ptr %p2 )
426
+ ;; Attribute cold on a nobuiltin call has no effect.
427
+ ; HOTCOLD: @__size_returning_new(i64 10)
428
+ %call3 = call {ptr , i64 } @__size_returning_new (i64 10 ) #6
429
+ %p3 = extractvalue {ptr , i64 } %call3 , 0
430
+ call void @dummy (ptr %p3 )
362
431
ret void
363
432
}
364
433
@@ -381,6 +450,11 @@ define void @size_returning_aligned_test() {
381
450
%call2 = call {ptr , i64 } @__size_returning_new_aligned (i64 10 , i64 8 ) #5
382
451
%p2 = extractvalue {ptr , i64 } %call2 , 0
383
452
call void @dummy (ptr %p2 )
453
+ ;; Attribute cold on a nobuiltin call has no effect.
454
+ ; HOTCOLD: @__size_returning_new_aligned(i64 10, i64 8)
455
+ %call3 = call {ptr , i64 } @__size_returning_new_aligned (i64 10 , i64 8 ) #6
456
+ %p3 = extractvalue {ptr , i64 } %call3 , 0
457
+ call void @dummy (ptr %p3 )
384
458
ret void
385
459
}
386
460
@@ -403,6 +477,11 @@ define void @size_returning_update_test() {
403
477
%call2 = call {ptr , i64 } @__size_returning_new_hot_cold (i64 10 , i8 7 ) #5
404
478
%p2 = extractvalue {ptr , i64 } %call2 , 0
405
479
call void @dummy (ptr %p2 )
480
+ ;; Attribute cold on a nobuiltin existing hot/cold call updates the hint.
481
+ ; HOTCOLD: @__size_returning_new_hot_cold(i64 10, i8 [[PREVHINTCOLD]])
482
+ %call3 = call {ptr , i64 } @__size_returning_new_hot_cold (i64 10 , i8 7 ) #6
483
+ %p3 = extractvalue {ptr , i64 } %call3 , 0
484
+ call void @dummy (ptr %p3 )
406
485
ret void
407
486
}
408
487
@@ -425,6 +504,11 @@ define void @size_returning_aligned_update_test() {
425
504
%call2 = call {ptr , i64 } @__size_returning_new_aligned_hot_cold (i64 10 , i64 8 , i8 7 ) #5
426
505
%p2 = extractvalue {ptr , i64 } %call2 , 0
427
506
call void @dummy (ptr %p2 )
507
+ ;; Attribute cold on a nobuiltin existing hot/cold call updates the hint.
508
+ ; HOTCOLD: @__size_returning_new_aligned_hot_cold(i64 10, i64 8, i8 [[PREVHINTCOLD]])
509
+ %call3 = call {ptr , i64 } @__size_returning_new_aligned_hot_cold (i64 10 , i64 8 , i8 7 ) #6
510
+ %p3 = extractvalue {ptr , i64 } %call3 , 0
511
+ call void @dummy (ptr %p3 )
428
512
ret void
429
513
}
430
514
@@ -463,3 +547,5 @@ attributes #2 = { builtin allocsize(0) "memprof"="hot" }
463
547
attributes #3 = { "memprof" = "cold" }
464
548
attributes #4 = { "memprof" = "notcold" }
465
549
attributes #5 = { "memprof" = "hot" }
550
+
551
+ attributes #6 = { nobuiltin allocsize(0 ) "memprof" ="cold" }
0 commit comments