1// Verify ubsan doesn't emit checks for blacklisted functions and files
2// RUN: echo "fun:hash" > %t-func.blacklist
3// RUN: echo "src:%s" > %t-file.blacklist
4// RUN: %clang_cc1 -fsanitize=unsigned-integer-overflow -emit-llvm %s -o - | FileCheck %s --check-prefix=DEFAULT
5// RUN: %clang_cc1 -fsanitize=unsigned-integer-overflow -fsanitize-blacklist=%t-func.blacklist -emit-llvm %s -o - | FileCheck %s --check-prefix=FUNC
6// RUN: %clang_cc1 -fsanitize=unsigned-integer-overflow -fsanitize-blacklist=%t-file.blacklist -emit-llvm %s -o - | FileCheck %s --check-prefix=FILE
7
8// FIXME: %t-file.blacklist contains DOSish paths.
9// REQUIRES: shell
10
11unsigned i;
12
13// DEFAULT: @hash
14// FUNC: @hash
15// FILE: @hash
16unsigned hash() {
17// DEFAULT: call void @__ubsan
18// FUNC-NOT: call void @__ubsan
19// FILE-NOT: call void @__ubsan
20  return i * 37;
21}
22
23// DEFAULT: @add
24// FUNC: @add
25// FILE: @add
26unsigned add() {
27// DEFAULT: call void @__ubsan
28// FUNC: call void @__ubsan
29// FILE-NOT: call void @__ubsan
30  return i + 1;
31}
32