xref: /llvm-project/clang/test/CodeGen/sanitizer-special-case-list.c (revision adc402bf3d0565ac2bc7efbdd05f0d846e818041)
1 // Verify that ignorelist sections correctly select sanitizers to apply ignorelist entries to.
2 //
3 // RUN: %clang_cc1 -fsanitize=unsigned-integer-overflow,cfi-icall -fsanitize-ignorelist=%S/Inputs/sanitizer-special-case-list.unsanitized1.txt -emit-llvm %s -o - | FileCheck %s --check-prefix=UNSANITIZED
4 // RUN: %clang_cc1 -fsanitize=unsigned-integer-overflow,cfi-icall -fsanitize-ignorelist=%S/Inputs/sanitizer-special-case-list.unsanitized2.txt -emit-llvm %s -o - | FileCheck %s --check-prefix=UNSANITIZED
5 // RUN: %clang_cc1 -fsanitize=unsigned-integer-overflow,cfi-icall -fsanitize-ignorelist=%S/Inputs/sanitizer-special-case-list.unsanitized3.txt -emit-llvm %s -o - | FileCheck %s --check-prefix=UNSANITIZED
6 // RUN: %clang_cc1 -fsanitize=unsigned-integer-overflow,cfi-icall -fsanitize-ignorelist=%S/Inputs/sanitizer-special-case-list.unsanitized4.txt -emit-llvm %s -o - | FileCheck %s --check-prefix=UNSANITIZED
7 //
8 // RUN: %clang_cc1 -fsanitize=unsigned-integer-overflow,cfi-icall -fsanitize-ignorelist=%S/Inputs/sanitizer-special-case-list.sanitized.txt -emit-llvm %s -o - | FileCheck %s --check-prefix=SANITIZED
9 
10 unsigned i;
11 
12 // SANITIZED: @overflow
13 // UNSANITIZED: @overflow
overflow(void)14 unsigned overflow(void) {
15   // SANITIZED: call {{.*}}void @__ubsan
16   // UNSANITIZED-NOT: call {{.*}}void @__ubsan
17   return i * 37;
18 }
19 
20 // SANITIZED: @cfi
21 // UNSANITIZED: @cfi
cfi(void (* fp)(void))22 void cfi(void (*fp)(void)) {
23   // SANITIZED: llvm.type.test
24   // UNSANITIZED-NOT: llvm.type.test
25   fp();
26 }
27