blob: 730bf3a3ebe338423c0a62fac07dd129934004fa [file] [log] [blame]
Vitaly Buka0ba360b2016-07-14 21:18:06 +00001// RUN: %clangxx_asan -O1 -fsanitize-address-use-after-scope %s -o %t && \
Evgeniy Stepanov4c0f6af2016-04-22 00:10:23 +00002// RUN: not %run %t 2>&1 | FileCheck %s
Evgeniy Stepanov4c0f6af2016-04-22 00:10:23 +00003
4#include <stdlib.h>
5
6int *p;
7
8int main() {
9 for (int i = 0; i < 3; i++) {
10 int x;
11 p = &x;
12 }
Vitaly Buka49dd9d22016-07-28 23:03:27 +000013 return *p; // BOOM
Evgeniy Stepanov4c0f6af2016-04-22 00:10:23 +000014 // CHECK: ERROR: AddressSanitizer: stack-use-after-scope
Vitaly Buka49dd9d22016-07-28 23:03:27 +000015 // CHECK: #0 0x{{.*}} in main {{.*}}use-after-scope-loop-removed.cc:[[@LINE-2]]
16 // CHECK: Address 0x{{.*}} is located in stack of thread T{{.*}} at offset [[OFFSET:[^ ]+]] in frame
17 // {{\[}}[[OFFSET]], {{[0-9]+}}) 'x'
Evgeniy Stepanov4c0f6af2016-04-22 00:10:23 +000018}