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