1// RUN: %clangxx_asan -O0 %s -o %t && not %run %t 2>&1 | FileCheck %s
2// RUN: %clangxx_asan -O1 %s -o %t && not %run %t 2>&1 | FileCheck %s
3// RUN: %clangxx_asan -O2 %s -o %t && not %run %t 2>&1 | FileCheck %s
4// RUN: %clangxx_asan -O3 %s -o %t && not %run %t 2>&1 | FileCheck %s
5
6// CHECK: AddressSanitizer: global-buffer-overflow
7int global[10];
8// CHECK: {{#0.*call4}}
9void __attribute__((noinline)) call4(int i) { global[i+10]++; }
10// CHECK: {{#1.*call3}}
11void __attribute__((noinline)) call3(int i) { call4(i); }
12// CHECK: {{#2.*call2}}
13void __attribute__((noinline)) call2(int i) { call3(i); }
14// CHECK: {{#3.*call1}}
15void __attribute__((noinline)) call1(int i) { call2(i); }
16// CHECK: {{#4.*main}}
17int main(int argc, char **argv) {
18 call1(i: argc);
19 return global[0];
20}
21

source code of compiler-rt/test/asan/TestCases/deep_tail_call.cpp