|
outer
‘outer’: event 1
23 | void outer (void) |
| ^~~~~ |
| | |
| (1) entry to ‘outer’ |
|
‘outer’: event 2
29 | i = SETJMP(env); |
| ^~~~~~ |
| | |
| (2) ‘setjmp’ called here |
|
‘outer’: events 3-5
31 | if (i == 0) |
| ^ |
| | |
| (3) following ‘true’ branch (when ‘i == 0’)... |
32 | { |
33 | foo (1); |
| ~~~~~~~ |
| | |
| (4) ...to here |
34 | middle (); |
| ~~~~~~~~~ |
| | |
| (5) calling ‘middle’ from ‘outer’ |
|
|
middle
‘middle’: events 6-8
16 | static void middle (void) |
| ^~~~~~ |
| | |
| (6) entry to ‘middle’ |
17 | { |
18 | void *ptr = malloc (1024); /* { dg-message "allocated here" } */ |
| ~~~~~~~~~~~~~ |
| | |
| (7) allocated here |
19 | inner (); |
| ~~~~~~~~ |
| | |
| (8) calling ‘inner’ from ‘middle’ |
|
|
inner
‘inner’: events 9-11
11 | static void inner (void) |
| ^~~~~ |
| | |
| (9) entry to ‘inner’ |
12 | { |
13 | longjmp (env, 1); /* { dg-warning "leak of 'ptr'" } */ |
| ~~~~~~~~~~~~~~~~ |
| | |
| (10) ‘ptr’ leaks here; was allocated at (7) |
| (11) rewinding from ‘longjmp’ in ‘inner’... |
|
|
|
‘outer’: event 12
29 | i = SETJMP(env); |
| ^~~~~~ |
| | |
| (12) ...to ‘setjmp’ in ‘outer’ (saved at (2)) |
|
|