106 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 -fsanitize-ignorelist=%t/src.ignorelist -emit-llvm %t/test2.c -o - | FileCheck %s --check-prefixes=CHECK25 6// RUN: %clang_cc1 -triple x86_64-linux-gnu -fsanitize=signed-integer-overflow -fsanitize-ignorelist=%t/src.ignorelist -emit-llvm %t/test1.c -o - | FileCheck %s --check-prefixes=CHECK1,SANITIZE7// RUN: %clang_cc1 -triple x86_64-linux-gnu -fsanitize=signed-integer-overflow -fsanitize-ignorelist=%t/src.ignorelist.contradict1 -emit-llvm %t/test1.c -o - | FileCheck %s --check-prefixes=CHECK1,IGNORE8// RUN: %clang_cc1 -triple x86_64-linux-gnu -fsanitize=signed-integer-overflow -fsanitize-ignorelist=%t/src.ignorelist.contradict2 -emit-llvm %t/test1.c -o - | FileCheck %s --check-prefixes=CHECK1,SANITIZE9// RUN: %clang_cc1 -triple x86_64-linux-gnu -fsanitize=signed-integer-overflow -fsanitize-ignorelist=%t/src.ignorelist.contradict3 -emit-llvm %t/test1.c -o - | FileCheck %s --check-prefixes=CHECK1,IGNORE10// RUN: %clang_cc1 -triple x86_64-linux-gnu -fsanitize=signed-integer-overflow -fsanitize-ignorelist=%t/src.ignorelist.contradict4 -emit-llvm %t/test1.c -o - | FileCheck %s --check-prefixes=CHECK1,SANITIZE11// RUN: %clang_cc1 -triple x86_64-linux-gnu -fsanitize=signed-integer-overflow -fsanitize-ignorelist=%t/src.ignorelist.contradict5 -emit-llvm %t/test1.c -o - | FileCheck %s --check-prefixes=CHECK1,IGNORE12// RUN: %clang_cc1 -triple x86_64-linux-gnu -fsanitize=signed-integer-overflow -fsanitize-ignorelist=%t/src.ignorelist.contradict6 -emit-llvm %t/test1.c -o - | FileCheck %s --check-prefixes=CHECK1,SANITIZE13// RUN: %clang_cc1 -triple x86_64-linux-gnu -fsanitize=signed-integer-overflow -fsanitize-ignorelist=%t/src.ignorelist.contradict7 -emit-llvm %t/test1.c -o - | FileCheck %s --check-prefixes=CHECK1,IGNORE14// RUN: %clang_cc1 -triple x86_64-linux-gnu -fsanitize=signed-integer-overflow -fsanitize-ignorelist=%t/src.ignorelist.contradict8 -emit-llvm %t/test1.c -o - | FileCheck %s --check-prefixes=CHECK1,SANITIZE15// RUN: %clang_cc1 -triple x86_64-linux-gnu -fsanitize=signed-integer-overflow -fsanitize-ignorelist=%t/src.ignorelist -fsanitize-ignorelist=%t/src.ignorelist.contradict9 -emit-llvm %t/test1.c -o - | FileCheck %s --check-prefixes=CHECK1,IGNORE16// RUN: %clang_cc1 -triple x86_64-linux-gnu -fsanitize=signed-integer-overflow -fsanitize-ignorelist=%t/src.ignorelist.contradict9 -fsanitize-ignorelist=%t/src.ignorelist -emit-llvm %t/test1.c -o - | FileCheck %s --check-prefixes=CHECK1,SANITIZE17 18 19// Verify ubsan only emits checks for files in the allowlist20 21//--- src.ignorelist22src:*23src:*/test1.c=sanitize24 25//--- src.ignorelist.contradict126src:*27src:*/test1.c=sanitize28src:*/test1.c29 30//--- src.ignorelist.contradict231src:*32src:*/test1.c33src:*/test1.c=sanitize34 35//--- src.ignorelist.contradict336src:*37src:*/test1.c38src:*/test1.c=sanitize39src:*/test1.c40 41//--- src.ignorelist.contradict442src:*43src:*/test1.c=sanitize44src:*/test1.c45src:*/test1.c=sanitize46 47//--- src.ignorelist.contradict548src:*49src:*/te*t1.c50src:*/tes*1.c=sanitize51src:*/test1.c52 53//--- src.ignorelist.contradict654src:*55src:*/tes*1.c=sanitize56src:*/te*t1.c57src:*/t*st1.c=sanitize58 59//--- src.ignorelist.contradict760[{unsigned-integer-overflow,signed-integer-overflow}]61src:*62src:*/tes*1.c=sanitize63src:*/te*t1.c64src:*/t*st1.c=sanitize65[{unsigned-integer-overflow,signed-integer-overflow}]66src:*67src:*/te*t1.c68src:*/tes*1.c=sanitize69src:*/test1.c70 71//--- src.ignorelist.contradict872[{unsigned-integer-overflow,signed-integer-overflow}]73src:*74src:*/te*t1.c75src:*/tes*1.c=sanitize76src:*/test1.c77[{unsigned-integer-overflow,signed-integer-overflow}]78src:*79src:*/tes*1.c=sanitize80src:*/te*t1.c81src:*/t*st1.c=sanitize82 83//--- src.ignorelist.contradict984src:*85src:*/test1.c=sanitize86src:*/test1.c87src:*/test1.c=sanitize88src:*/te*t1.c89src:*/test*.c90 91 92//--- test1.c93// CHECK1-LABEL: define dso_local i32 @add94int add(int a, int b) {95// IGNORE: %add = add nsw96// SANITIZE: = call { i32, i1 } @llvm.sadd.with.overflow.i3297 return a+b;98}99 100//--- test2.c101// CHECK2-LABEL: define dso_local i32 @sub102int sub(int a, int b) {103 // CHECK2: %sub = sub nsw104 return a-b;105}106