| // RUN: rm -rf %t |
| // RUN: split-file %s %t |
| |
| // RUN: %clang_cc1 -triple x86_64-linux-gnu -fsanitize=signed-integer-overflow,unsigned-integer-overflow -fsanitize-ignorelist=%t/order-0.ignorelist -emit-llvm %t/test.c -o - | FileCheck %s --check-prefixes=CHECK,SANITIZE |
| // RUN: %clang_cc1 -triple x86_64-linux-gnu -fsanitize=signed-integer-overflow,unsigned-integer-overflow -fsanitize-ignorelist=%t/order-1.ignorelist -emit-llvm %t/test.c -o - | FileCheck %s --check-prefixes=CHECK,IGNORE |
| // RUN: %clang_cc1 -triple x86_64-linux-gnu -fsanitize=signed-integer-overflow,unsigned-integer-overflow -fsanitize-ignorelist=%t/order-2.ignorelist -emit-llvm %t/test.c -o - | FileCheck %s --check-prefixes=CHECK,SANITIZE |
| // RUN: %clang_cc1 -triple x86_64-linux-gnu -fsanitize=signed-integer-overflow,unsigned-integer-overflow -fsanitize-ignorelist=%t/order-3.ignorelist -emit-llvm %t/test.c -o - | FileCheck %s --check-prefixes=CHECK,IGNORE |
| // RUN: %clang_cc1 -triple x86_64-linux-gnu -fsanitize=signed-integer-overflow,unsigned-integer-overflow -fsanitize-ignorelist=%t/order-4.ignorelist -emit-llvm %t/test.c -o - | FileCheck %s --check-prefixes=CHECK,SANITIZE |
| // RUN: %clang_cc1 -triple x86_64-linux-gnu -fsanitize=signed-integer-overflow,unsigned-integer-overflow -fsanitize-ignorelist=%t/order-5.ignorelist -emit-llvm %t/test.c -o - | FileCheck %s --check-prefixes=CHECK,IGNORE |
| // RUN: %clang_cc1 -triple x86_64-linux-gnu -fsanitize=signed-integer-overflow,unsigned-integer-overflow -fsanitize-ignorelist=%t/order-6.ignorelist -emit-llvm %t/test.c -o - | FileCheck %s --check-prefixes=CHECK,SANITIZE |
| // RUN: %clang_cc1 -triple x86_64-linux-gnu -fsanitize=signed-integer-overflow,unsigned-integer-overflow -fsanitize-ignorelist=%t/order-7.ignorelist -emit-llvm %t/test.c -o - | FileCheck %s --check-prefixes=CHECK,IGNORE |
| // RUN: %clang_cc1 -triple x86_64-linux-gnu -fsanitize=signed-integer-overflow,unsigned-integer-overflow -fsanitize-ignorelist=%t/order-8.ignorelist -emit-llvm %t/test.c -o - | FileCheck %s --check-prefixes=CHECK,SANITIZE |
| |
| |
| // The same type can appear multiple times within an ignorelist. Any ``=sanitize`` type |
| // entries enable sanitizer instrumentation, even if it was ignored by entries before. |
| // If multiple entries match the source, then the latest entry takes the |
| // precedence. |
| |
| |
| //--- order-0.ignorelist |
| fun:add |
| fun:add=sanitize |
| |
| //--- order-1.ignorelist |
| fun:add=sanitize |
| fun:add |
| |
| //--- order-2.ignorelist |
| fun:ad* |
| fun:add=sanitize |
| |
| //--- order-3.ignorelist |
| fun:ad*=sanitize |
| fun:add |
| |
| //--- order-4.ignorelist |
| fun:add |
| fun:ad*=sanitize |
| |
| //--- order-5.ignorelist |
| fun:add=sanitize |
| fun:ad* |
| |
| //--- order-6.ignorelist |
| fun:add |
| fun:add=sanitize |
| fun:a*d |
| fun:*dd=sanitize |
| |
| //--- order-7.ignorelist |
| [{unsigned-integer-overflow,signed-integer-overflow}] |
| fun:* |
| fun:add=sanitize |
| fun:a*d |
| fun:*dd=sanitize |
| [{unsigned-integer-overflow,signed-integer-overflow}] |
| fun:* |
| fun:add |
| fun:a*d=sanitize |
| fun:*d |
| |
| //--- order-8.ignorelist |
| [{unsigned-integer-overflow,signed-integer-overflow}] |
| fun:* |
| fun:add |
| fun:a*d=sanitize |
| fun:*dd |
| [{unsigned-integer-overflow,signed-integer-overflow}] |
| fun:* |
| fun:add=sanitize |
| fun:a*d |
| fun:*dd=sanitize |
| |
| |
| //--- test.c |
| // CHECK-LABEL: define dso_local void @add |
| void add(int A) { |
| // IGNORE: %inc = add nsw |
| // SANITIZE: @llvm.sadd.with.overflow.i32 |
| ++A; |
| } |
| |