1- // RUN: %clang_cc1 -fsanitize=alignment,null,object-size,shift-base,shift-exponent,return,signed-integer-overflow,vla-bound,float-cast-overflow,integer-divide-by-zero,bool,returns-nonnull-attribute,nonnull-attribute -fsanitize-recover=alignment,null,object-size,shift-base,shift-exponent,signed-integer-overflow,vla-bound,float-cast-overflow,integer-divide-by-zero,bool,returns-nonnull-attribute,nonnull-attribute -emit-llvm %s -o - -triple x86_64-linux-gnu | FileCheck %s --check-prefixes =CHECK-COMMON,CHECK-UBSAN,CHECK-ALIGNMENT-BUILTIN
2- // RUN: %clang_cc1 -fsanitize-trap=alignment,null,object-size,shift-base,shift-exponent,return,signed-integer-overflow,vla-bound,float-cast-overflow,integer-divide-by-zero,bool,returns-nonnull-attribute,nonnull-attribute -fsanitize-recover=alignment,null,object-size,shift-base,shift-exponent,signed-integer-overflow,vla-bound,float-cast-overflow,integer-divide-by-zero,bool,returns-nonnull-attribute,nonnull-attribute -fsanitize=alignment,null,object-size,shift-base,shift-exponent,return,signed-integer-overflow,vla-bound,float-cast-overflow,integer-divide-by-zero,bool,returns-nonnull-attribute,nonnull-attribute -fsanitize-recover=alignment,null,object-size,shift-base,shift-exponent,signed-integer-overflow,vla-bound,float-cast-overflow,integer-divide-by-zero,bool,returns-nonnull-attribute,nonnull-attribute -emit-llvm %s -o - -triple x86_64-linux-gnu | FileCheck %s --check-prefixes =CHECK-COMMON,CHECK-ALIGNMENT-BUILTIN, CHECK-TRAP
1+ // RUN: %clang_cc1 -fsanitize=alignment,null,object-size,shift-base,shift-exponent,return,signed-integer-overflow,vla-bound,float-cast-overflow,integer-divide-by-zero,bool,returns-nonnull-attribute,nonnull-attribute -fsanitize-recover=alignment,null,object-size,shift-base,shift-exponent,signed-integer-overflow,vla-bound,float-cast-overflow,integer-divide-by-zero,bool,returns-nonnull-attribute,nonnull-attribute -emit-llvm %s -o - -triple x86_64-linux-gnu | FileCheck %s --check-prefix =CHECK-COMMON --check-prefix=CHECK-UBSAN
2+ // RUN: %clang_cc1 -fsanitize-trap=alignment,null,object-size,shift-base,shift-exponent,return,signed-integer-overflow,vla-bound,float-cast-overflow,integer-divide-by-zero,bool,returns-nonnull-attribute,nonnull-attribute -fsanitize-recover=alignment,null,object-size,shift-base,shift-exponent,signed-integer-overflow,vla-bound,float-cast-overflow,integer-divide-by-zero,bool,returns-nonnull-attribute,nonnull-attribute -fsanitize=alignment,null,object-size,shift-base,shift-exponent,return,signed-integer-overflow,vla-bound,float-cast-overflow,integer-divide-by-zero,bool,returns-nonnull-attribute,nonnull-attribute -fsanitize-recover=alignment,null,object-size,shift-base,shift-exponent,signed-integer-overflow,vla-bound,float-cast-overflow,integer-divide-by-zero,bool,returns-nonnull-attribute,nonnull-attribute -emit-llvm %s -o - -triple x86_64-linux-gnu | FileCheck %s --check-prefix =CHECK-COMMON --check-prefix= CHECK-TRAP
33// RUN: %clang_cc1 -fsanitize=signed-integer-overflow -emit-llvm %s -o - -triple x86_64-linux-gnu | FileCheck %s --check-prefix=CHECK-OVERFLOW
4- /// A variant of CHECK-UBSAN with -sanitize-alignment-builtin disabled
5- // RUN: %clang_cc1 -fsanitize=alignment,null,object-size,shift-base,shift-exponent,return,signed-integer-overflow,vla-bound,float-cast-overflow,integer-divide-by-zero,bool,returns-nonnull-attribute,nonnull-attribute -fsanitize-recover=alignment,null,object-size,shift-base,shift-exponent,signed-integer-overflow,vla-bound,float-cast-overflow,integer-divide-by-zero,bool,returns-nonnull-attribute,nonnull-attribute -emit-llvm %s -o - -triple x86_64-linux-gnu -mllvm -sanitize-alignment-builtin=0 | FileCheck %s --check-prefixes=CHECK-COMMON,CHECK-UBSAN-NO-ALIGNMENT-BUILTIN
64
75// CHECK-UBSAN: @[[INT:.*]] = private unnamed_addr constant { i16, i16, [6 x i8] } { i16 0, i16 11, [6 x i8] c"'int'\00" }
86
@@ -365,13 +363,11 @@ extern void *memcpy(void *, const void *, unsigned long) __attribute__((nonnull(
365363void call_memcpy_nonnull (void * p , void * q , int sz ) {
366364 // CHECK-COMMON: icmp ne ptr {{.*}}, null
367365 // CHECK-UBSAN: call void @__ubsan_handle_nonnull_arg
368- // CHECK-UBSAN-NO-ALIGNMENT-BUILTIN: call void @__ubsan_handle_nonnull_arg
369366 // CHECK-TRAP: call void @llvm.ubsantrap(i8 16)
370367 // CHECK-COMMON-NOT: call
371368
372369 // CHECK-COMMON: icmp ne ptr {{.*}}, null
373370 // CHECK-UBSAN: call void @__ubsan_handle_nonnull_arg
374- // CHECK-UBSAN-NO-ALIGNMENT-BUILTIN: call void @__ubsan_handle_nonnull_arg
375371 // CHECK-TRAP: call void @llvm.ubsantrap(i8 16)
376372 // CHECK-COMMON-NOT: call
377373
@@ -383,23 +379,18 @@ void call_memcpy_nonnull(void *p, void *q, int sz) {
383379void call_memcpy (long * p , short * q , int sz ) {
384380 // CHECK-COMMON: icmp ne ptr {{.*}}, null
385381 // CHECK-UBSAN: call void @__ubsan_handle_nonnull_arg(
386- // CHECK-UBSAN-NO-ALIGNMENT-BUILTIN: call void @__ubsan_handle_nonnull_arg(
387382 // CHECK-TRAP: call void @llvm.ubsantrap(i8 16)
388- // CHECK-ALIGNMENT-BUILTIN : and i64 %[[#]], 7, !nosanitize
389- // CHECK-ALIGNMENT-BUILTIN : icmp eq i64 %[[#]], 0, !nosanitize
383+ // CHECK-COMMON : and i64 %[[#]], 7, !nosanitize
384+ // CHECK-COMMON : icmp eq i64 %[[#]], 0, !nosanitize
390385 // CHECK-UBSAN: call void @__ubsan_handle_type_mismatch_v1(ptr @[[LINE_1600]]
391- // CHECK-UBSAN-NO-ALIGNMENT-BUILTIN-NOT: call void @__ubsan_handle_type_mismatch_v1(
392386 // CHECK-TRAP: call void @llvm.ubsantrap(i8 22)
393387
394388 // CHECK-COMMON: icmp ne ptr {{.*}}, null
395389 // CHECK-UBSAN: call void @__ubsan_handle_nonnull_arg(
396- // CHECK-UBSAN-NO-ALIGNMENT-BUILTIN: call void @__ubsan_handle_nonnull_arg(
397- // CHECK-UBSAN-DISABLE-BUILTIN: call
398390 // CHECK-TRAP: call void @llvm.ubsantrap(i8 16)
399- // CHECK-ALIGNMENT-BUILTIN : and i64 %[[#]], 1, !nosanitize
400- // CHECK-ALIGNMENT-BUILTIN : icmp eq i64 %[[#]], 0, !nosanitize
391+ // CHECK-COMMON : and i64 %[[#]], 1, !nosanitize
392+ // CHECK-COMMON : icmp eq i64 %[[#]], 0, !nosanitize
401393 // CHECK-UBSAN: call void @__ubsan_handle_type_mismatch_v1(
402- // CHECK-UBSAN-NO-ALIGNMENT-BUILTIN-NOT: call
403394 // CHECK-TRAP: call void @llvm.ubsantrap(i8 22)
404395
405396 // CHECK-COMMON: call void @llvm.memcpy.p0.p0.i64(ptr align 8 %0, ptr align 2 %1, i64 %conv, i1 false)
@@ -414,16 +405,14 @@ void call_memcpy(long *p, short *q, int sz) {
414405
415406// CHECK-COMMON-LABEL: define{{.*}} void @call_memcpy_inline(
416407void call_memcpy_inline (long * p , short * q ) {
417- // CHECK-ALIGNMENT-BUILTIN : and i64 %[[#]], 7, !nosanitize
418- // CHECK-ALIGNMENT-BUILTIN : icmp eq i64 %[[#]], 0, !nosanitize
408+ // CHECK-COMMON : and i64 %[[#]], 7, !nosanitize
409+ // CHECK-COMMON : icmp eq i64 %[[#]], 0, !nosanitize
419410 // CHECK-UBSAN: call void @__ubsan_handle_type_mismatch_v1(
420- // CHECK-UBSAN-NO-ALIGNMENT-BUILTIN-NOT: call
421411 // CHECK-TRAP: call void @llvm.ubsantrap(i8 22)
422412
423- // CHECK-ALIGNMENT-BUILTIN : and i64 %[[#]], 1, !nosanitize
424- // CHECK-ALIGNMENT-BUILTIN : icmp eq i64 %[[#]], 0, !nosanitize
413+ // CHECK-COMMON : and i64 %[[#]], 1, !nosanitize
414+ // CHECK-COMMON : icmp eq i64 %[[#]], 0, !nosanitize
425415 // CHECK-UBSAN: call void @__ubsan_handle_type_mismatch_v1(
426- // CHECK-UBSAN-NO-ALIGNMENT-BUILTIN-NOT: call
427416 // CHECK-TRAP: call void @llvm.ubsantrap(i8 22)
428417
429418 // CHECK-COMMON: call void @llvm.memcpy.inline.p0.p0.i64(ptr align 8 %0, ptr align 2 %1, i64 2, i1 false)
@@ -436,12 +425,10 @@ extern void *memmove(void *, const void *, unsigned long) __attribute__((nonnull
436425void call_memmove_nonnull (void * p , void * q , int sz ) {
437426 // CHECK-COMMON: icmp ne ptr {{.*}}, null
438427 // CHECK-UBSAN: call void @__ubsan_handle_nonnull_arg
439- // CHECK-UBSAN-NO-ALIGNMENT-BUILTIN: call void @__ubsan_handle_nonnull_arg(
440428 // CHECK-TRAP: call void @llvm.ubsantrap(i8 16)
441429
442430 // CHECK-COMMON: icmp ne ptr {{.*}}, null
443431 // CHECK-UBSAN: call void @__ubsan_handle_nonnull_arg
444- // CHECK-UBSAN-NO-ALIGNMENT-BUILTIN: call void @__ubsan_handle_nonnull_arg(
445432 // CHECK-TRAP: call void @llvm.ubsantrap(i8 16)
446433 memmove (p , q , sz );
447434}
@@ -450,22 +437,18 @@ void call_memmove_nonnull(void *p, void *q, int sz) {
450437void call_memmove (long * p , short * q , int sz ) {
451438 // CHECK-COMMON: icmp ne ptr {{.*}}, null
452439 // CHECK-UBSAN: call void @__ubsan_handle_nonnull_arg(
453- // CHECK-UBSAN-NO-ALIGNMENT-BUILTIN: call void @__ubsan_handle_nonnull_arg(
454440 // CHECK-TRAP: call void @llvm.ubsantrap(i8 16)
455- // CHECK-ALIGNMENT-BUILTIN : and i64 %[[#]], 7, !nosanitize
456- // CHECK-ALIGNMENT-BUILTIN : icmp eq i64 %[[#]], 0, !nosanitize
441+ // CHECK-COMMON : and i64 %[[#]], 7, !nosanitize
442+ // CHECK-COMMON : icmp eq i64 %[[#]], 0, !nosanitize
457443 // CHECK-UBSAN: call void @__ubsan_handle_type_mismatch_v1(
458- // CHECK-UBSAN-NO-ALIGNMENT-BUILTIN-NOT: call
459444 // CHECK-TRAP: call void @llvm.ubsantrap(i8 22)
460445
461446 // CHECK-COMMON: icmp ne ptr {{.*}}, null
462447 // CHECK-UBSAN: call void @__ubsan_handle_nonnull_arg(
463- // CHECK-UBSAN-NO-ALIGNMENT-BUILTIN: call void @__ubsan_handle_nonnull_arg(
464448 // CHECK-TRAP: call void @llvm.ubsantrap(i8 16)
465- // CHECK-ALIGNMENT-BUILTIN : and i64 %[[#]], 1, !nosanitize
466- // CHECK-ALIGNMENT-BUILTIN : icmp eq i64 %[[#]], 0, !nosanitize
449+ // CHECK-COMMON : and i64 %[[#]], 1, !nosanitize
450+ // CHECK-COMMON : icmp eq i64 %[[#]], 0, !nosanitize
467451 // CHECK-UBSAN: call void @__ubsan_handle_type_mismatch_v1(
468- // CHECK-UBSAN-NO-ALIGNMENT-BUILTIN-NOT: call
469452 // CHECK-TRAP: call void @llvm.ubsantrap(i8 22)
470453
471454 // CHECK-COMMON: call void @llvm.memmove.p0.p0.i64(ptr align 8 %0, ptr align 2 %1, i64 %conv, i1 false)
0 commit comments