Bug path

test_1
‘test_1’: events 1-2
11void 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
5static 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
5static 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)