PR tree-optimization/67955
[official-gcc.git] / gcc / testsuite / g++.dg / asan / deep-tail-call-1.C
bloba7cdb9fd61391b7950bcbe0d6402b365ece5e01d
1 // { dg-do run }
2 // { dg-options "-fno-omit-frame-pointer -fno-optimize-sibling-calls" }
3 // { dg-additional-options "-mno-omit-leaf-frame-pointer" { target { i?86-*-* x86_64-*-* } } }
4 // { dg-shouldfail "asan" }
6 int global[10];
7 void __attribute__((noinline)) call4(int i) { global[i+10]++; }
8 void __attribute__((noinline)) call3(int i) { call4(i); }
9 void __attribute__((noinline)) call2(int i) { call3(i); }
10 void __attribute__((noinline)) call1(int i) { call2(i); }
11 volatile int one = 1;
12 int main() {
13   call1(one);
14   return global[0];
17 // { dg-output "AddressSanitizer:? global-buffer-overflow.*(\n|\r\n|\r)" }
18 // { dg-output "    #0 0x\[0-9a-f\]+ +(in \[^\n\r]*call4\[^\n\r]*|\[(\])\[^\n\r]*(\n|\r\n|\r)" }
19 // { dg-output "    #1 0x\[0-9a-f\]+ +(in \[^\n\r]*call3\[^\n\r]*|\[(\])\[^\n\r]*(\n|\r\n|\r)" }
20 // { dg-output "    #2 0x\[0-9a-f\]+ +(in \[^\n\r]*call2\[^\n\r]*|\[(\])\[^\n\r]*(\n|\r\n|\r)" }
21 // { dg-output "    #3 0x\[0-9a-f\]+ +(in \[^\n\r]*call1\[^\n\r]*|\[(\])\[^\n\r]*(\n|\r\n|\r)" }
22 // { dg-output "    #4 0x\[0-9a-f\]+ +(in \[^\n\r]*main\[^\n\r]*|\[(\])\[^\n\r]*(\n|\r\n|\r)" }