111
|
1 // { dg-do run }
|
|
2 // { dg-shouldfail "asan" }
|
|
3
|
|
4 struct IntHolder {
|
|
5 int val;
|
|
6 };
|
|
7
|
|
8 const IntHolder *saved;
|
|
9
|
|
10 void save(const IntHolder &holder) {
|
|
11 saved = &holder;
|
|
12 }
|
|
13
|
|
14 int main(int argc, char *argv[]) {
|
|
15 save({10});
|
|
16 int x = saved->val; // BOOM
|
|
17 return x;
|
|
18 }
|
|
19
|
|
20 // { dg-output "ERROR: AddressSanitizer: stack-use-after-scope on address.*(\n|\r\n|\r)" }
|
|
21 // { dg-output "READ of size 4 at.*" }
|
|
22 // { dg-output ".*'<unknown>' <== Memory access at offset \[0-9\]* is inside this variable.*" }
|