1*882ce178SVitaly Buka // RUN: %clangxx_asan -O1 -fsanitize-address-use-after-scope %s -o %t && not %run %t 2>&1 | FileCheck %s 2673dc3d4SNico Weber 3673dc3d4SNico Weber struct IntHolder { 4673dc3d4SNico Weber int val; 5673dc3d4SNico Weber }; 6673dc3d4SNico Weber 7673dc3d4SNico Weber const IntHolder *saved; 8673dc3d4SNico Weber save(const IntHolder & holder)95ee902bbSJinsong Ji__attribute__((noinline)) void save(const IntHolder &holder) { 10673dc3d4SNico Weber saved = &holder; 11673dc3d4SNico Weber } 12673dc3d4SNico Weber main(int argc,char * argv[])13673dc3d4SNico Weberint main(int argc, char *argv[]) { 14673dc3d4SNico Weber save({argc}); 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-temp.cpp:[[@LINE-2]] 18673dc3d4SNico Weber return x; 19673dc3d4SNico Weber } 20