|
a5
‘a5’: events 1-2
16 | void a5 (void) |
| ^~ |
| | |
| (1) entry to ‘a5’ |
[...] | |
19 | hv (&qb); |
| ~~~~~~~~ |
| | |
| (2) calling ‘hv’ from ‘a5’ |
|
|
hv
‘hv’: events 3-7
7 | void *hv (struct foo **tm) |
| ^~ |
| | |
| (3) entry to ‘hv’ |
8 | { |
9 | void *p = __builtin_malloc (4); |
| ~~~~~~~~~~~~~~~~~~~~ |
| | |
| (4) allocated here |
10 | *tm = p; |
11 | if (!p) |
| ~ |
| | |
| (5) assuming ‘qb’ is non-NULL |
| (6) following ‘false’ branch (when ‘p’ is non-NULL)... |
12 | abort (); |
13 | return p; |
| ~ |
| | |
| (7) ...to here |
|
|
‘a5’: events 8-9
19 | hv (&qb); |
| ^~~~~~~~ |
| | |
| (8) returning to ‘a5’ from ‘hv’ |
20 | } /* { dg-warning "leak of 'qb'" } */ |
| ~ |
| | |
| (9) ‘qb’ leaks here; was allocated at (4) |
|
|