diff options
Diffstat (limited to 'compiler-rt/test/asan/TestCases/use-after-scope-loop-bug.cpp')
-rw-r--r-- | compiler-rt/test/asan/TestCases/use-after-scope-loop-bug.cpp | 17 |
1 files changed, 17 insertions, 0 deletions
diff --git a/compiler-rt/test/asan/TestCases/use-after-scope-loop-bug.cpp b/compiler-rt/test/asan/TestCases/use-after-scope-loop-bug.cpp new file mode 100644 index 00000000000..b5b02d7f101 --- /dev/null +++ b/compiler-rt/test/asan/TestCases/use-after-scope-loop-bug.cpp @@ -0,0 +1,17 @@ +// RUN: %clangxx_asan -O1 -fsanitize-address-use-after-scope %s -o %t && \ +// RUN: not %run %t 2>&1 | FileCheck %s + +volatile int *p; + +int main() { + // Variable goes in and out of scope. + for (int i = 0; i < 3; ++i) { + int x[3] = {i, i, i}; + p = x + i; + } + return *p; // BOOM + // CHECK: ERROR: AddressSanitizer: stack-use-after-scope + // CHECK: #0 0x{{.*}} in main {{.*}}use-after-scope-loop-bug.cpp:[[@LINE-2]] + // CHECK: Address 0x{{.*}} is located in stack of thread T{{.*}} at offset [[OFFSET:[^ ]+]] in frame + // {{\[}}[[OFFSET]], {{[0-9]+}}) 'x' +} |