84 lines · plain
1// RUN: rm -rf %t2// RUN: split-file %s %t3 4// 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,SANITIZE5// 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,IGNORE6// 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,SANITIZE7// 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,IGNORE8// 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,SANITIZE9// 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,IGNORE10// 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,SANITIZE11// 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,IGNORE12// 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,SANITIZE13 14 15// The same type can appear multiple times within an ignorelist. Any ``=sanitize`` type16// entries enable sanitizer instrumentation, even if it was ignored by entries before.17// If multiple entries match the source, then the latest entry takes the18// precedence.19 20 21//--- order-0.ignorelist22fun:add23fun:add=sanitize24 25//--- order-1.ignorelist26fun:add=sanitize27fun:add28 29//--- order-2.ignorelist30fun:ad*31fun:add=sanitize32 33//--- order-3.ignorelist34fun:ad*=sanitize35fun:add36 37//--- order-4.ignorelist38fun:add39fun:ad*=sanitize40 41//--- order-5.ignorelist42fun:add=sanitize43fun:ad*44 45//--- order-6.ignorelist46fun:add47fun:add=sanitize48fun:a*d49fun:*dd=sanitize50 51//--- order-7.ignorelist52[{unsigned-integer-overflow,signed-integer-overflow}]53fun:*54fun:add=sanitize55fun:a*d56fun:*dd=sanitize57[{unsigned-integer-overflow,signed-integer-overflow}]58fun:*59fun:add60fun:a*d=sanitize61fun:*d62 63//--- order-8.ignorelist64[{unsigned-integer-overflow,signed-integer-overflow}]65fun:*66fun:add67fun:a*d=sanitize68fun:*dd69[{unsigned-integer-overflow,signed-integer-overflow}]70fun:*71fun:add=sanitize72fun:a*d73fun:*dd=sanitize74 75 76//--- test.c77// CHECK-LABEL: define dso_local void @add78void add(int A) {79// IGNORE: %inc = add nsw80// SANITIZE: @llvm.sadd.with.overflow.i3281 ++A;82}83 84