xref: /llvm-project/compiler-rt/test/asan/TestCases/use-after-scope-temp.cpp (revision cd269daf25016f7115424a51ab5e7977a80e072d)
1 // RUN: %clangxx_asan -O1 %s -o %t && not %run %t 2>&1 | FileCheck %s
2 
3 struct IntHolder {
4   int val;
5 };
6 
7 const IntHolder *saved;
8 
save(const IntHolder & holder)9 __attribute__((noinline)) void save(const IntHolder &holder) {
10   saved = &holder;
11 }
12 
main(int argc,char * argv[])13 int main(int argc, char *argv[]) {
14   save({argc});
15   int x = saved->val;  // BOOM
16   // CHECK: ERROR: AddressSanitizer: stack-use-after-scope
17   // CHECK:  #0 0x{{.*}} in main {{.*}}use-after-scope-temp.cpp:[[@LINE-2]]
18   return x;
19 }
20