xref: /llvm-project/compiler-rt/test/asan/TestCases/pass-struct-byval.cpp (revision 673dc3d4a0b0fbb3b9b34ae2ecbfa522627fe582)
1 // RUN: %clangxx_asan -O0 %s -o %t
2 // RUN: not %run %t 2>&1 | FileCheck %s
3 
4 struct A {
5   int a[8];
6 };
7 
bar(A * a)8 int bar(A *a) {
9   int *volatile ptr = &a->a[0];
10   return *(ptr - 1);
11 }
12 
foo(A a)13 void foo(A a) {
14   bar(&a);
15 }
16 
main()17 int main() {
18   foo(A());
19 }
20 
21 // CHECK: ERROR: AddressSanitizer: stack-buffer-underflow
22 // CHECK: READ of size 4 at
23 // CHECK: is located in stack of thread
24