1
- // REQUIRES: system-darwin
2
1
// NOTE: Assertions have been autogenerated by utils/update_cc_test_checks.py UTC_ARGS: --version 5
2
+ // REQUIRES: system-darwin
3
3
// RUN: %clang_cc1 -O0 -triple arm64-apple-iphoneos -fbounds-safety -fbounds-safety-bringup-missing-checks=return_size -emit-llvm %s -o - | FileCheck %s
4
4
5
5
#include <ptrcheck.h>
70
70
// CHECK-NEXT: br label %[[LAND_END30]], !annotation [[META2]]
71
71
// CHECK: [[LAND_END30]]:
72
72
// CHECK-NEXT: [[TMP2:%.*]] = phi i1 [ false, %[[LAND_LHS_TRUE]] ], [ false, %[[ENTRY]] ], [ [[TMP1]], %[[LAND_END]] ], !annotation [[META2]]
73
- // CHECK-NEXT: br i1 [[TMP2]], label %[[CONT:.*]], label %[[TRAP:.*]], !annotation [[META2]]
73
+ // CHECK-NEXT: br i1 [[TMP2]], label %[[CONT:.*]], label %[[TRAP:.*]], !prof [[PROF3:![0-9]+]], ! annotation [[META2]]
74
74
// CHECK: [[TRAP]]:
75
75
// CHECK-NEXT: call void @llvm.ubsantrap(i8 25) #[[ATTR3:[0-9]+]], !annotation [[META2]]
76
76
// CHECK-NEXT: unreachable, !annotation [[META2]]
@@ -88,6 +88,9 @@ int *__counted_by(count) cb_in_from_bidi(int count, int *__bidi_indexable p) {
88
88
return p ;
89
89
}
90
90
91
+ //
92
+
93
+ int * __counted_by (* count ) cb_in_from_bidi_redecl (int * count , int * __bidi_indexable p );
91
94
// CHECK-LABEL: define dso_local ptr @cb_in_from_bidi_redecl(
92
95
// CHECK-SAME: ptr noundef [[COUNT:%.*]], ptr noundef [[P:%.*]]) #[[ATTR0]] {
93
96
// CHECK-NEXT: [[ENTRY:.*]]:
@@ -156,7 +159,7 @@ int *__counted_by(count) cb_in_from_bidi(int count, int *__bidi_indexable p) {
156
159
// CHECK-NEXT: br label %[[LAND_END30]], !annotation [[META2]]
157
160
// CHECK: [[LAND_END30]]:
158
161
// CHECK-NEXT: [[TMP4:%.*]] = phi i1 [ false, %[[LAND_LHS_TRUE]] ], [ false, %[[ENTRY]] ], [ [[TMP3]], %[[LAND_END]] ], !annotation [[META2]]
159
- // CHECK-NEXT: br i1 [[TMP4]], label %[[CONT:.*]], label %[[TRAP:.*]], !annotation [[META2]]
162
+ // CHECK-NEXT: br i1 [[TMP4]], label %[[CONT:.*]], label %[[TRAP:.*]], !prof [[PROF3]], ! annotation [[META2]]
160
163
// CHECK: [[TRAP]]:
161
164
// CHECK-NEXT: call void @llvm.ubsantrap(i8 25) #[[ATTR3]], !annotation [[META2]]
162
165
// CHECK-NEXT: unreachable, !annotation [[META2]]
@@ -170,12 +173,13 @@ int *__counted_by(count) cb_in_from_bidi(int count, int *__bidi_indexable p) {
170
173
// CHECK-NEXT: [[WIDE_PTR_LB37:%.*]] = load ptr, ptr [[WIDE_PTR_LB_ADDR36]], align 8
171
174
// CHECK-NEXT: ret ptr [[WIDE_PTR_PTR33]]
172
175
//
173
-
174
- int * __counted_by (* count ) cb_in_from_bidi_redecl (int * count , int * __bidi_indexable p );
175
176
int * __counted_by (* count ) cb_in_from_bidi_redecl (int * count , int * __bidi_indexable p ) {
176
177
return p ;
177
178
}
178
179
180
+ // FIXME: This had to be patched manually. `utils/update_cc_test_checks.py` seems
181
+ // to generate CHECK lines here for something that's not a function body and so it
182
+ // tries to match the IR for the same function twice.
179
183
int * __counted_by (* count ) cb_in_from_bidi_typeof (int * count , int * __bidi_indexable p );
180
184
__typeof__ (cb_in_from_bidi_typeof ) cb_in_from_bidi_typeof ;
181
185
extern __attribute__((weak_import )) __typeof__ (cb_in_from_bidi_typeof ) cb_in_from_bidi_typeof ;
@@ -248,7 +252,7 @@ extern __attribute__((weak_import)) __typeof__(cb_in_from_bidi_typeof) cb_in_fro
248
252
// CHECK-NEXT: br label %[[LAND_END30]], !annotation [[META2]]
249
253
// CHECK: [[LAND_END30]]:
250
254
// CHECK-NEXT: [[TMP4:%.*]] = phi i1 [ false, %[[LAND_LHS_TRUE]] ], [ false, %[[ENTRY]] ], [ [[TMP3]], %[[LAND_END]] ], !annotation [[META2]]
251
- // CHECK-NEXT: br i1 [[TMP4]], label %[[CONT:.*]], label %[[TRAP:.*]], !annotation [[META2]]
255
+ // CHECK-NEXT: br i1 [[TMP4]], label %[[CONT:.*]], label %[[TRAP:.*]], !prof [[PROF3]], ! annotation [[META2]]
252
256
// CHECK: [[TRAP]]:
253
257
// CHECK-NEXT: call void @llvm.ubsantrap(i8 25) #[[ATTR3]], !annotation [[META2]]
254
258
// CHECK-NEXT: unreachable, !annotation [[META2]]
@@ -326,7 +330,7 @@ int *__counted_by(*count) cb_in_from_bidi_typeof(int *count, int *__bidi_indexab
326
330
// CHECK-NEXT: br label %[[LAND_END13]], !annotation [[META2]]
327
331
// CHECK: [[LAND_END13]]:
328
332
// CHECK-NEXT: [[TMP12:%.*]] = phi i1 [ false, %[[LAND_LHS_TRUE]] ], [ false, %[[ENTRY]] ], [ [[TMP11]], %[[LAND_END]] ], !annotation [[META2]]
329
- // CHECK-NEXT: br i1 [[TMP12]], label %[[CONT:.*]], label %[[TRAP:.*]], !annotation [[META2]]
333
+ // CHECK-NEXT: br i1 [[TMP12]], label %[[CONT:.*]], label %[[TRAP:.*]], !prof [[PROF3]], ! annotation [[META2]]
330
334
// CHECK: [[TRAP]]:
331
335
// CHECK-NEXT: call void @llvm.ubsantrap(i8 25) #[[ATTR3]], !annotation [[META2]]
332
336
// CHECK-NEXT: unreachable, !annotation [[META2]]
@@ -399,7 +403,7 @@ int *__counted_by(count) cb_in_from_single(int count, int *__single p) {
399
403
// CHECK-NEXT: br label %[[LAND_END13]], !annotation [[META2]]
400
404
// CHECK: [[LAND_END13]]:
401
405
// CHECK-NEXT: [[TMP14:%.*]] = phi i1 [ false, %[[LAND_LHS_TRUE]] ], [ false, %[[ENTRY]] ], [ [[TMP13]], %[[LAND_END]] ], !annotation [[META2]]
402
- // CHECK-NEXT: br i1 [[TMP14]], label %[[CONT:.*]], label %[[TRAP:.*]], !annotation [[META2]]
406
+ // CHECK-NEXT: br i1 [[TMP14]], label %[[CONT:.*]], label %[[TRAP:.*]], !prof [[PROF3]], ! annotation [[META2]]
403
407
// CHECK: [[TRAP]]:
404
408
// CHECK-NEXT: call void @llvm.ubsantrap(i8 25) #[[ATTR3]], !annotation [[META2]]
405
409
// CHECK-NEXT: unreachable, !annotation [[META2]]
@@ -476,7 +480,7 @@ int *__counted_by(*count) cb_out_from_single(int *count, int *__single p) {
476
480
// CHECK-NEXT: br label %[[LAND_END13]], !annotation [[META2]]
477
481
// CHECK: [[LAND_END13]]:
478
482
// CHECK-NEXT: [[TMP13:%.*]] = phi i1 [ false, %[[LAND_LHS_TRUE]] ], [ false, %[[ENTRY]] ], [ [[TMP12]], %[[LOR_END]] ], !annotation [[META2]]
479
- // CHECK-NEXT: br i1 [[TMP13]], label %[[CONT:.*]], label %[[TRAP:.*]], !annotation [[META2]]
483
+ // CHECK-NEXT: br i1 [[TMP13]], label %[[CONT:.*]], label %[[TRAP:.*]], !prof [[PROF3]], ! annotation [[META2]]
480
484
// CHECK: [[TRAP]]:
481
485
// CHECK-NEXT: call void @llvm.ubsantrap(i8 25) #[[ATTR3]], !annotation [[META2]]
482
486
// CHECK-NEXT: unreachable, !annotation [[META2]]
@@ -565,7 +569,7 @@ int *__counted_by_or_null(count) cbn_in_from_single(int count, int *__single p)
565
569
// CHECK-NEXT: br label %[[LAND_END37]], !annotation [[META2]]
566
570
// CHECK: [[LAND_END37]]:
567
571
// CHECK-NEXT: [[TMP5:%.*]] = phi i1 [ false, %[[LAND_LHS_TRUE]] ], [ false, %[[ENTRY]] ], [ [[TMP4]], %[[LAND_END]] ], !annotation [[META2]]
568
- // CHECK-NEXT: br i1 [[TMP5]], label %[[CONT:.*]], label %[[TRAP:.*]], !annotation [[META2]]
572
+ // CHECK-NEXT: br i1 [[TMP5]], label %[[CONT:.*]], label %[[TRAP:.*]], !prof [[PROF3]], ! annotation [[META2]]
569
573
// CHECK: [[TRAP]]:
570
574
// CHECK-NEXT: call void @llvm.ubsantrap(i8 25) #[[ATTR3]], !annotation [[META2]]
571
575
// CHECK-NEXT: unreachable, !annotation [[META2]]
@@ -626,7 +630,7 @@ void *__sized_by(size) sb_in_from_bidi(int size, void *__bidi_indexable p) {
626
630
// CHECK-NEXT: br label %[[LAND_END]], !annotation [[META2]]
627
631
// CHECK: [[LAND_END]]:
628
632
// CHECK-NEXT: [[TMP1:%.*]] = phi i1 [ false, %[[LAND_LHS_TRUE]] ], [ false, %[[ENTRY]] ], [ [[CMP15]], %[[LAND_RHS]] ], !annotation [[META2]]
629
- // CHECK-NEXT: br i1 [[TMP1]], label %[[CONT:.*]], label %[[TRAP:.*]], !annotation [[META2]]
633
+ // CHECK-NEXT: br i1 [[TMP1]], label %[[CONT:.*]], label %[[TRAP:.*]], !prof [[PROF3]], ! annotation [[META2]]
630
634
// CHECK: [[TRAP]]:
631
635
// CHECK-NEXT: call void @llvm.ubsantrap(i8 25) #[[ATTR3]], !annotation [[META2]]
632
636
// CHECK-NEXT: unreachable, !annotation [[META2]]
@@ -646,4 +650,5 @@ void *__ended_by(end) eb_from_bidi(void *end, void *__bidi_indexable p) {
646
650
647
651
//.
648
652
// CHECK: [[META2]] = !{!"bounds-safety-generic"}
653
+ // CHECK: [[PROF3]] = !{!"branch_weights", i32 1048575, i32 1}
649
654
//.
0 commit comments