|
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) |
|
|
|