|
test_1
‘test_1’: events 1-2
11 | void test_1(void *p) |
| ^~~~~~ |
| | |
| (1) entry to ‘test_1’ |
12 | { |
13 | maybe_calls_free_1(p, 1); |
| ~~~~~~~~~~~~~~~~~~~~~~~~ |
| | |
| (2) calling ‘maybe_calls_free_1’ from ‘test_1’ |
|
|
maybe_calls_free_1
‘maybe_calls_free_1’: events 3-6
5 | static void maybe_calls_free_1(int *q, int flag) |
| ^~~~~~~~~~~~~~~~~~ |
| | |
| (3) entry to ‘maybe_calls_free_1’ |
6 | { |
7 | if (flag) |
| ~ |
| | |
| (4) following ‘true’ branch (when ‘flag != 0’)... |
8 | free(q); /* { dg-warning "double-'free' of 'q'" } */ |
| ~~~~~~~ |
| | |
| (5) ...to here |
| (6) first ‘free’ here |
|
|
‘test_1’: events 7-8
13 | maybe_calls_free_1(p, 1); |
| ^~~~~~~~~~~~~~~~~~~~~~~~ |
| | |
| (7) returning to ‘test_1’ from ‘maybe_calls_free_1’ |
14 | maybe_calls_free_1(p, 1); |
| ~~~~~~~~~~~~~~~~~~~~~~~~ |
| | |
| (8) passing freed pointer ‘p’ in call to ‘maybe_calls_free_1’ from ‘test_1’ |
|
|
maybe_calls_free_1
‘maybe_calls_free_1’: events 9-12
5 | static void maybe_calls_free_1(int *q, int flag) |
| ^~~~~~~~~~~~~~~~~~ |
| | |
| (9) entry to ‘maybe_calls_free_1’ |
6 | { |
7 | if (flag) |
| ~ |
| | |
| (10) following ‘true’ branch (when ‘flag != 0’)... |
8 | free(q); /* { dg-warning "double-'free' of 'q'" } */ |
| ~~~~~~~ |
| | |
| (11) ...to here |
| (12) second ‘free’ here; first ‘free’ was at (6) |
|
|
|