1*882ce178SVitaly Buka // RUN: %clangxx_asan -O1 -fsanitize-address-use-after-scope %s -o %t && \ 2673dc3d4SNico Weber // RUN: not %run %t 2>&1 | FileCheck %s 3673dc3d4SNico Weber 4673dc3d4SNico Weber struct IntHolder { SelfIntHolder55ee902bbSJinsong Ji __attribute__((noinline)) const IntHolder &Self() const { 6673dc3d4SNico Weber return *this; 7673dc3d4SNico Weber } 8673dc3d4SNico Weber int val = 3; 9673dc3d4SNico Weber }; 10673dc3d4SNico Weber 11673dc3d4SNico Weber const IntHolder *saved; 12673dc3d4SNico Weber main(int argc,char * argv[])13673dc3d4SNico Weberint main(int argc, char *argv[]) { 14673dc3d4SNico Weber saved = &IntHolder().Self(); 15673dc3d4SNico Weber int x = saved->val; // BOOM 16673dc3d4SNico Weber // CHECK: ERROR: AddressSanitizer: stack-use-after-scope 17673dc3d4SNico Weber // CHECK: #0 0x{{.*}} in main {{.*}}use-after-scope-temp2.cpp:[[@LINE-2]] 18673dc3d4SNico Weber return x; 19673dc3d4SNico Weber } 20