summaryrefslogtreecommitdiff
path: root/test/asan/TestCases/pass-struct-byval.cc
diff options
context:
space:
mode:
Diffstat (limited to 'test/asan/TestCases/pass-struct-byval.cc')
-rw-r--r--test/asan/TestCases/pass-struct-byval.cc23
1 files changed, 23 insertions, 0 deletions
diff --git a/test/asan/TestCases/pass-struct-byval.cc b/test/asan/TestCases/pass-struct-byval.cc
new file mode 100644
index 000000000000..ba49eccf41ca
--- /dev/null
+++ b/test/asan/TestCases/pass-struct-byval.cc
@@ -0,0 +1,23 @@
+// RUN: %clangxx_asan -O0 %s -o %t
+// RUN: not %run %t 2>&1 | FileCheck %s
+
+struct A {
+ int a[8];
+};
+
+int bar(A *a) {
+ int *volatile ptr = &a->a[0];
+ return *(ptr - 1);
+}
+
+void foo(A a) {
+ bar(&a);
+}
+
+int main() {
+ foo(A());
+}
+
+// CHECK: ERROR: AddressSanitizer: stack-buffer-underflow
+// CHECK: READ of size 4 at
+// CHECK: is located in stack of thread