1*cd269dafSVitaly Buka // RUN: %clangxx_asan -O1 %s -o %t && not %run %t 2>&1 | FileCheck %s 2673dc3d4SNico Weber 3673dc3d4SNico Weber volatile int *p; 4673dc3d4SNico Weber main()5673dc3d4SNico Weberint main() { 6673dc3d4SNico Weber // Variable goes in and out of scope. 7673dc3d4SNico Weber for (int i = 0; i < 3; ++i) { 8673dc3d4SNico Weber int x[3] = {i, i, i}; 9673dc3d4SNico Weber p = x + i; 10673dc3d4SNico Weber } 11673dc3d4SNico Weber return *p; // BOOM 12673dc3d4SNico Weber // CHECK: ERROR: AddressSanitizer: stack-use-after-scope 13673dc3d4SNico Weber // CHECK: #0 0x{{.*}} in main {{.*}}use-after-scope-loop-bug.cpp:[[@LINE-2]] 14673dc3d4SNico Weber // CHECK: Address 0x{{.*}} is located in stack of thread T{{.*}} at offset [[OFFSET:[^ ]+]] in frame 15673dc3d4SNico Weber // {{\[}}[[OFFSET]], {{[0-9]+}}) 'x' 16673dc3d4SNico Weber } 17