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
3
3
// 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
6
4
7
5
// CHECK-UBSAN: @[[INT:.*]] = private unnamed_addr constant { i16, i16, [6 x i8] } { i16 0, i16 11, [6 x i8] c"'int'\00" }
8
6
@@ -365,13 +363,11 @@ extern void *memcpy(void *, const void *, unsigned long) __attribute__((nonnull(
365
363
void call_memcpy_nonnull (void * p , void * q , int sz ) {
366
364
// CHECK-COMMON: icmp ne ptr {{.*}}, null
367
365
// CHECK-UBSAN: call void @__ubsan_handle_nonnull_arg
368
- // CHECK-UBSAN-NO-ALIGNMENT-BUILTIN: call void @__ubsan_handle_nonnull_arg
369
366
// CHECK-TRAP: call void @llvm.ubsantrap(i8 16)
370
367
// CHECK-COMMON-NOT: call
371
368
372
369
// CHECK-COMMON: icmp ne ptr {{.*}}, null
373
370
// CHECK-UBSAN: call void @__ubsan_handle_nonnull_arg
374
- // CHECK-UBSAN-NO-ALIGNMENT-BUILTIN: call void @__ubsan_handle_nonnull_arg
375
371
// CHECK-TRAP: call void @llvm.ubsantrap(i8 16)
376
372
// CHECK-COMMON-NOT: call
377
373
@@ -383,23 +379,18 @@ void call_memcpy_nonnull(void *p, void *q, int sz) {
383
379
void call_memcpy (long * p , short * q , int sz ) {
384
380
// CHECK-COMMON: icmp ne ptr {{.*}}, null
385
381
// CHECK-UBSAN: call void @__ubsan_handle_nonnull_arg(
386
- // CHECK-UBSAN-NO-ALIGNMENT-BUILTIN: call void @__ubsan_handle_nonnull_arg(
387
382
// 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
390
385
// 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(
392
386
// CHECK-TRAP: call void @llvm.ubsantrap(i8 22)
393
387
394
388
// CHECK-COMMON: icmp ne ptr {{.*}}, null
395
389
// 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
398
390
// 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
401
393
// CHECK-UBSAN: call void @__ubsan_handle_type_mismatch_v1(
402
- // CHECK-UBSAN-NO-ALIGNMENT-BUILTIN-NOT: call
403
394
// CHECK-TRAP: call void @llvm.ubsantrap(i8 22)
404
395
405
396
// 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) {
414
405
415
406
// CHECK-COMMON-LABEL: define{{.*}} void @call_memcpy_inline(
416
407
void 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
419
410
// CHECK-UBSAN: call void @__ubsan_handle_type_mismatch_v1(
420
- // CHECK-UBSAN-NO-ALIGNMENT-BUILTIN-NOT: call
421
411
// CHECK-TRAP: call void @llvm.ubsantrap(i8 22)
422
412
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
425
415
// CHECK-UBSAN: call void @__ubsan_handle_type_mismatch_v1(
426
- // CHECK-UBSAN-NO-ALIGNMENT-BUILTIN-NOT: call
427
416
// CHECK-TRAP: call void @llvm.ubsantrap(i8 22)
428
417
429
418
// 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
436
425
void call_memmove_nonnull (void * p , void * q , int sz ) {
437
426
// CHECK-COMMON: icmp ne ptr {{.*}}, null
438
427
// CHECK-UBSAN: call void @__ubsan_handle_nonnull_arg
439
- // CHECK-UBSAN-NO-ALIGNMENT-BUILTIN: call void @__ubsan_handle_nonnull_arg(
440
428
// CHECK-TRAP: call void @llvm.ubsantrap(i8 16)
441
429
442
430
// CHECK-COMMON: icmp ne ptr {{.*}}, null
443
431
// CHECK-UBSAN: call void @__ubsan_handle_nonnull_arg
444
- // CHECK-UBSAN-NO-ALIGNMENT-BUILTIN: call void @__ubsan_handle_nonnull_arg(
445
432
// CHECK-TRAP: call void @llvm.ubsantrap(i8 16)
446
433
memmove (p , q , sz );
447
434
}
@@ -450,22 +437,18 @@ void call_memmove_nonnull(void *p, void *q, int sz) {
450
437
void call_memmove (long * p , short * q , int sz ) {
451
438
// CHECK-COMMON: icmp ne ptr {{.*}}, null
452
439
// CHECK-UBSAN: call void @__ubsan_handle_nonnull_arg(
453
- // CHECK-UBSAN-NO-ALIGNMENT-BUILTIN: call void @__ubsan_handle_nonnull_arg(
454
440
// 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
457
443
// CHECK-UBSAN: call void @__ubsan_handle_type_mismatch_v1(
458
- // CHECK-UBSAN-NO-ALIGNMENT-BUILTIN-NOT: call
459
444
// CHECK-TRAP: call void @llvm.ubsantrap(i8 22)
460
445
461
446
// CHECK-COMMON: icmp ne ptr {{.*}}, null
462
447
// CHECK-UBSAN: call void @__ubsan_handle_nonnull_arg(
463
- // CHECK-UBSAN-NO-ALIGNMENT-BUILTIN: call void @__ubsan_handle_nonnull_arg(
464
448
// 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
467
451
// CHECK-UBSAN: call void @__ubsan_handle_type_mismatch_v1(
468
- // CHECK-UBSAN-NO-ALIGNMENT-BUILTIN-NOT: call
469
452
// CHECK-TRAP: call void @llvm.ubsantrap(i8 22)
470
453
471
454
// CHECK-COMMON: call void @llvm.memmove.p0.p0.i64(ptr align 8 %0, ptr align 2 %1, i64 %conv, i1 false)
0 commit comments