Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
136 changes: 69 additions & 67 deletions clang/test/BoundsSafety/CodeGen/access-size-check-elt-size.c

Large diffs are not rendered by default.

15 changes: 8 additions & 7 deletions clang/test/BoundsSafety/CodeGen/access-size-check-unsized-elt.c
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
// REQUIRES: system-darwin
// NOTE: Assertions have been autogenerated by utils/update_cc_test_checks.py UTC_ARGS: --version 5
// REQUIRES: system-darwin
// RUN: %clang_cc1 -O0 -fbounds-safety -fbounds-safety-bringup-missing-checks=access_size -triple arm64-apple-iphoneos -emit-llvm %s -o - | FileCheck --check-prefix ACCESS-SIZE %s
// RUN: %clang_cc1 -O0 -fbounds-safety -fno-bounds-safety-bringup-missing-checks=access_size -triple arm64-apple-iphoneos -emit-llvm %s -o - | FileCheck --check-prefix ACCESS-SIZE %s
#include <ptrcheck.h>
Expand Down Expand Up @@ -42,16 +42,16 @@ void receive(fn_t);
// ACCESS-SIZE-NEXT: br i1 [[TMP3]], label %[[BOUNDSCHECK_NOTNULL:.*]], label %[[CONT9:.*]], !annotation [[META2]]
// ACCESS-SIZE: [[BOUNDSCHECK_NOTNULL]]:
// ACCESS-SIZE-NEXT: [[TMP4:%.*]] = icmp ult ptr [[WIDE_PTR_PTR3]], [[WIDE_PTR_UB5]], !annotation [[META3:![0-9]+]]
// ACCESS-SIZE-NEXT: br i1 [[TMP4]], label %[[CONT:.*]], label %[[TRAP:.*]], !annotation [[META3]]
// ACCESS-SIZE-NEXT: br i1 [[TMP4]], label %[[CONT:.*]], label %[[TRAP:.*]], !prof [[PROF4:![0-9]+]], !annotation [[META3]]
// ACCESS-SIZE: [[TRAP]]:
// ACCESS-SIZE-NEXT: call void @llvm.ubsantrap(i8 25) #[[ATTR5:[0-9]+]], !annotation [[META3]]
// ACCESS-SIZE-NEXT: unreachable, !annotation [[META3]]
// ACCESS-SIZE: [[CONT]]:
// ACCESS-SIZE-NEXT: [[TMP5:%.*]] = icmp uge ptr [[WIDE_PTR_PTR3]], [[WIDE_PTR_LB7]], !annotation [[META4:![0-9]+]]
// ACCESS-SIZE-NEXT: br i1 [[TMP5]], label %[[CONT9]], label %[[TRAP8:.*]], !annotation [[META4]]
// ACCESS-SIZE-NEXT: [[TMP5:%.*]] = icmp uge ptr [[WIDE_PTR_PTR3]], [[WIDE_PTR_LB7]], !annotation [[META5:![0-9]+]]
// ACCESS-SIZE-NEXT: br i1 [[TMP5]], label %[[CONT9]], label %[[TRAP8:.*]], !prof [[PROF4]], !annotation [[META5]]
// ACCESS-SIZE: [[TRAP8]]:
// ACCESS-SIZE-NEXT: call void @llvm.ubsantrap(i8 25) #[[ATTR5]], !annotation [[META4]]
// ACCESS-SIZE-NEXT: unreachable, !annotation [[META4]]
// ACCESS-SIZE-NEXT: call void @llvm.ubsantrap(i8 25) #[[ATTR5]], !annotation [[META5]]
// ACCESS-SIZE-NEXT: unreachable, !annotation [[META5]]
// ACCESS-SIZE: [[CONT9]]:
// ACCESS-SIZE-NEXT: store ptr [[WIDE_PTR_PTR3]], ptr [[F]], align 8
// ACCESS-SIZE-NEXT: [[TMP6:%.*]] = load ptr, ptr [[F]], align 8
Expand All @@ -73,5 +73,6 @@ void borked(void)
//.
// ACCESS-SIZE: [[META2]] = !{!"bounds-safety-check-ptr-neq-null"}
// ACCESS-SIZE: [[META3]] = !{!"bounds-safety-check-ptr-lt-upper-bound"}
// ACCESS-SIZE: [[META4]] = !{!"bounds-safety-check-ptr-ge-lower-bound"}
// ACCESS-SIZE: [[PROF4]] = !{!"branch_weights", i32 1048575, i32 1}
// ACCESS-SIZE: [[META5]] = !{!"bounds-safety-check-ptr-ge-lower-bound"}
//.
308 changes: 155 additions & 153 deletions clang/test/BoundsSafety/CodeGen/array_subscript_agg.c

Large diffs are not rendered by default.

Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ void consume(int* __bidi_indexable);
// CHECK-NEXT: [[ENTRY:.*:]]
// CHECK-NEXT: [[BYVAL_TEMP:%.*]] = alloca %"__bounds_safety::wide_ptr.bidi_indexable", align 8
// CHECK-NEXT: [[CMP_I:%.*]] = icmp eq i32 [[COUNT]], 0, !annotation [[META2:![0-9]+]]
// CHECK-NEXT: br i1 [[CMP_I]], label %[[INLINE_HEADER_FUNC_UNSPECIFIED_PTR_EXIT:.*]], label %[[TRAP_I:.*]], !annotation [[META2]]
// CHECK-NEXT: br i1 [[CMP_I]], label %[[INLINE_HEADER_FUNC_UNSPECIFIED_PTR_EXIT:.*]], label %[[TRAP_I:.*]], !prof [[PROF3:![0-9]+]], !annotation [[META2]]
// CHECK: [[TRAP_I]]:
// CHECK-NEXT: tail call void @llvm.ubsantrap(i8 25) #[[ATTR5:[0-9]+]], !annotation [[META2]]
// CHECK-NEXT: unreachable, !annotation [[META2]]
Expand Down Expand Up @@ -47,7 +47,7 @@ void use_inline_header_func_unspecified_ptr(int count) {
// CHECK-NEXT: [[ENTRY:.*:]]
// CHECK-NEXT: [[BYVAL_TEMP:%.*]] = alloca %"__bounds_safety::wide_ptr.bidi_indexable", align 8
// CHECK-NEXT: [[CMP_I:%.*]] = icmp eq i32 [[COUNT]], 0, !annotation [[META2]]
// CHECK-NEXT: br i1 [[CMP_I]], label %[[INLINE_HEADER_FUNC_UNSAFE_INDEXABLE_PTR_EXIT:.*]], label %[[TRAP_I:.*]], !annotation [[META2]]
// CHECK-NEXT: br i1 [[CMP_I]], label %[[INLINE_HEADER_FUNC_UNSAFE_INDEXABLE_PTR_EXIT:.*]], label %[[TRAP_I:.*]], !prof [[PROF3]], !annotation [[META2]]
// CHECK: [[TRAP_I]]:
// CHECK-NEXT: tail call void @llvm.ubsantrap(i8 25) #[[ATTR5]], !annotation [[META2]]
// CHECK-NEXT: unreachable, !annotation [[META2]]
Expand Down Expand Up @@ -80,6 +80,7 @@ void use_inline_header_func_unsafe_indexable_ptr(int count) {
}
//.
// CHECK: [[META2]] = !{!"bounds-safety-generic"}
// CHECK: [[PROF3]] = !{!"branch_weights", i32 1048575, i32 1}
//.
// LEGACY: [[TBAA2]] = !{[[META3:![0-9]+]], [[META3]], i64 0}
// LEGACY: [[META3]] = !{!"p1 int", [[META4:![0-9]+]], i64 0}
Expand Down
27 changes: 16 additions & 11 deletions clang/test/BoundsSafety/CodeGen/bounds-attributed-return-O0.c
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
// REQUIRES: system-darwin
// NOTE: Assertions have been autogenerated by utils/update_cc_test_checks.py UTC_ARGS: --version 5
// REQUIRES: system-darwin
// RUN: %clang_cc1 -O0 -triple arm64-apple-iphoneos -fbounds-safety -fbounds-safety-bringup-missing-checks=return_size -emit-llvm %s -o - | FileCheck %s

#include <ptrcheck.h>
Expand Down Expand Up @@ -70,7 +70,7 @@
// CHECK-NEXT: br label %[[LAND_END30]], !annotation [[META2]]
// CHECK: [[LAND_END30]]:
// CHECK-NEXT: [[TMP2:%.*]] = phi i1 [ false, %[[LAND_LHS_TRUE]] ], [ false, %[[ENTRY]] ], [ [[TMP1]], %[[LAND_END]] ], !annotation [[META2]]
// CHECK-NEXT: br i1 [[TMP2]], label %[[CONT:.*]], label %[[TRAP:.*]], !annotation [[META2]]
// CHECK-NEXT: br i1 [[TMP2]], label %[[CONT:.*]], label %[[TRAP:.*]], !prof [[PROF3:![0-9]+]], !annotation [[META2]]
// CHECK: [[TRAP]]:
// CHECK-NEXT: call void @llvm.ubsantrap(i8 25) #[[ATTR3:[0-9]+]], !annotation [[META2]]
// CHECK-NEXT: unreachable, !annotation [[META2]]
Expand All @@ -88,6 +88,9 @@ int *__counted_by(count) cb_in_from_bidi(int count, int *__bidi_indexable p) {
return p;
}

//

int *__counted_by(*count) cb_in_from_bidi_redecl(int *count, int *__bidi_indexable p);
// CHECK-LABEL: define dso_local ptr @cb_in_from_bidi_redecl(
// CHECK-SAME: ptr noundef [[COUNT:%.*]], ptr noundef [[P:%.*]]) #[[ATTR0]] {
// CHECK-NEXT: [[ENTRY:.*]]:
Expand Down Expand Up @@ -156,7 +159,7 @@ int *__counted_by(count) cb_in_from_bidi(int count, int *__bidi_indexable p) {
// CHECK-NEXT: br label %[[LAND_END30]], !annotation [[META2]]
// CHECK: [[LAND_END30]]:
// CHECK-NEXT: [[TMP4:%.*]] = phi i1 [ false, %[[LAND_LHS_TRUE]] ], [ false, %[[ENTRY]] ], [ [[TMP3]], %[[LAND_END]] ], !annotation [[META2]]
// CHECK-NEXT: br i1 [[TMP4]], label %[[CONT:.*]], label %[[TRAP:.*]], !annotation [[META2]]
// CHECK-NEXT: br i1 [[TMP4]], label %[[CONT:.*]], label %[[TRAP:.*]], !prof [[PROF3]], !annotation [[META2]]
// CHECK: [[TRAP]]:
// CHECK-NEXT: call void @llvm.ubsantrap(i8 25) #[[ATTR3]], !annotation [[META2]]
// CHECK-NEXT: unreachable, !annotation [[META2]]
Expand All @@ -170,12 +173,13 @@ int *__counted_by(count) cb_in_from_bidi(int count, int *__bidi_indexable p) {
// CHECK-NEXT: [[WIDE_PTR_LB37:%.*]] = load ptr, ptr [[WIDE_PTR_LB_ADDR36]], align 8
// CHECK-NEXT: ret ptr [[WIDE_PTR_PTR33]]
//

int *__counted_by(*count) cb_in_from_bidi_redecl(int *count, int *__bidi_indexable p);
int *__counted_by(*count) cb_in_from_bidi_redecl(int *count, int *__bidi_indexable p) {
return p;
}

// FIXME: This had to be patched manually. `utils/update_cc_test_checks.py` seems
// to generate CHECK lines here for something that's not a function body and so it
// tries to match the IR for the same function twice.
int *__counted_by(*count) cb_in_from_bidi_typeof(int *count, int *__bidi_indexable p);
__typeof__(cb_in_from_bidi_typeof) cb_in_from_bidi_typeof;
extern __attribute__((weak_import)) __typeof__(cb_in_from_bidi_typeof) cb_in_from_bidi_typeof;
Expand Down Expand Up @@ -248,7 +252,7 @@ extern __attribute__((weak_import)) __typeof__(cb_in_from_bidi_typeof) cb_in_fro
// CHECK-NEXT: br label %[[LAND_END30]], !annotation [[META2]]
// CHECK: [[LAND_END30]]:
// CHECK-NEXT: [[TMP4:%.*]] = phi i1 [ false, %[[LAND_LHS_TRUE]] ], [ false, %[[ENTRY]] ], [ [[TMP3]], %[[LAND_END]] ], !annotation [[META2]]
// CHECK-NEXT: br i1 [[TMP4]], label %[[CONT:.*]], label %[[TRAP:.*]], !annotation [[META2]]
// CHECK-NEXT: br i1 [[TMP4]], label %[[CONT:.*]], label %[[TRAP:.*]], !prof [[PROF3]], !annotation [[META2]]
// CHECK: [[TRAP]]:
// CHECK-NEXT: call void @llvm.ubsantrap(i8 25) #[[ATTR3]], !annotation [[META2]]
// CHECK-NEXT: unreachable, !annotation [[META2]]
Expand Down Expand Up @@ -326,7 +330,7 @@ int *__counted_by(*count) cb_in_from_bidi_typeof(int *count, int *__bidi_indexab
// CHECK-NEXT: br label %[[LAND_END13]], !annotation [[META2]]
// CHECK: [[LAND_END13]]:
// CHECK-NEXT: [[TMP12:%.*]] = phi i1 [ false, %[[LAND_LHS_TRUE]] ], [ false, %[[ENTRY]] ], [ [[TMP11]], %[[LAND_END]] ], !annotation [[META2]]
// CHECK-NEXT: br i1 [[TMP12]], label %[[CONT:.*]], label %[[TRAP:.*]], !annotation [[META2]]
// CHECK-NEXT: br i1 [[TMP12]], label %[[CONT:.*]], label %[[TRAP:.*]], !prof [[PROF3]], !annotation [[META2]]
// CHECK: [[TRAP]]:
// CHECK-NEXT: call void @llvm.ubsantrap(i8 25) #[[ATTR3]], !annotation [[META2]]
// CHECK-NEXT: unreachable, !annotation [[META2]]
Expand Down Expand Up @@ -399,7 +403,7 @@ int *__counted_by(count) cb_in_from_single(int count, int *__single p) {
// CHECK-NEXT: br label %[[LAND_END13]], !annotation [[META2]]
// CHECK: [[LAND_END13]]:
// CHECK-NEXT: [[TMP14:%.*]] = phi i1 [ false, %[[LAND_LHS_TRUE]] ], [ false, %[[ENTRY]] ], [ [[TMP13]], %[[LAND_END]] ], !annotation [[META2]]
// CHECK-NEXT: br i1 [[TMP14]], label %[[CONT:.*]], label %[[TRAP:.*]], !annotation [[META2]]
// CHECK-NEXT: br i1 [[TMP14]], label %[[CONT:.*]], label %[[TRAP:.*]], !prof [[PROF3]], !annotation [[META2]]
// CHECK: [[TRAP]]:
// CHECK-NEXT: call void @llvm.ubsantrap(i8 25) #[[ATTR3]], !annotation [[META2]]
// CHECK-NEXT: unreachable, !annotation [[META2]]
Expand Down Expand Up @@ -476,7 +480,7 @@ int *__counted_by(*count) cb_out_from_single(int *count, int *__single p) {
// CHECK-NEXT: br label %[[LAND_END13]], !annotation [[META2]]
// CHECK: [[LAND_END13]]:
// CHECK-NEXT: [[TMP13:%.*]] = phi i1 [ false, %[[LAND_LHS_TRUE]] ], [ false, %[[ENTRY]] ], [ [[TMP12]], %[[LOR_END]] ], !annotation [[META2]]
// CHECK-NEXT: br i1 [[TMP13]], label %[[CONT:.*]], label %[[TRAP:.*]], !annotation [[META2]]
// CHECK-NEXT: br i1 [[TMP13]], label %[[CONT:.*]], label %[[TRAP:.*]], !prof [[PROF3]], !annotation [[META2]]
// CHECK: [[TRAP]]:
// CHECK-NEXT: call void @llvm.ubsantrap(i8 25) #[[ATTR3]], !annotation [[META2]]
// CHECK-NEXT: unreachable, !annotation [[META2]]
Expand Down Expand Up @@ -565,7 +569,7 @@ int *__counted_by_or_null(count) cbn_in_from_single(int count, int *__single p)
// CHECK-NEXT: br label %[[LAND_END37]], !annotation [[META2]]
// CHECK: [[LAND_END37]]:
// CHECK-NEXT: [[TMP5:%.*]] = phi i1 [ false, %[[LAND_LHS_TRUE]] ], [ false, %[[ENTRY]] ], [ [[TMP4]], %[[LAND_END]] ], !annotation [[META2]]
// CHECK-NEXT: br i1 [[TMP5]], label %[[CONT:.*]], label %[[TRAP:.*]], !annotation [[META2]]
// CHECK-NEXT: br i1 [[TMP5]], label %[[CONT:.*]], label %[[TRAP:.*]], !prof [[PROF3]], !annotation [[META2]]
// CHECK: [[TRAP]]:
// CHECK-NEXT: call void @llvm.ubsantrap(i8 25) #[[ATTR3]], !annotation [[META2]]
// CHECK-NEXT: unreachable, !annotation [[META2]]
Expand Down Expand Up @@ -626,7 +630,7 @@ void *__sized_by(size) sb_in_from_bidi(int size, void *__bidi_indexable p) {
// CHECK-NEXT: br label %[[LAND_END]], !annotation [[META2]]
// CHECK: [[LAND_END]]:
// CHECK-NEXT: [[TMP1:%.*]] = phi i1 [ false, %[[LAND_LHS_TRUE]] ], [ false, %[[ENTRY]] ], [ [[CMP15]], %[[LAND_RHS]] ], !annotation [[META2]]
// CHECK-NEXT: br i1 [[TMP1]], label %[[CONT:.*]], label %[[TRAP:.*]], !annotation [[META2]]
// CHECK-NEXT: br i1 [[TMP1]], label %[[CONT:.*]], label %[[TRAP:.*]], !prof [[PROF3]], !annotation [[META2]]
// CHECK: [[TRAP]]:
// CHECK-NEXT: call void @llvm.ubsantrap(i8 25) #[[ATTR3]], !annotation [[META2]]
// CHECK-NEXT: unreachable, !annotation [[META2]]
Expand All @@ -646,4 +650,5 @@ void *__ended_by(end) eb_from_bidi(void *end, void *__bidi_indexable p) {

//.
// CHECK: [[META2]] = !{!"bounds-safety-generic"}
// CHECK: [[PROF3]] = !{!"branch_weights", i32 1048575, i32 1}
//.
Loading