Bug path

test
‘test’: events 1-2
19void test (void *ptr) /* { dg-message "\\(1\\) entry to 'test'" } */
^~~~
|
(1) entry to ‘test’
[...]
23 calls_free (ptr); /* { dg-message "\\(2\\) calling 'calls_free' from 'test'" "event 2" } */
~~~~~~~~~~~~~~~~
|
(2) calling ‘calls_free’ from ‘test’
calls_free
‘calls_free’: events 3-4
6calls_free (void *victim) /* { dg-message "\\(3\\) entry to 'calls_free'" "event 3" } */
^~~~~~~~~~
|
(3) entry to ‘calls_free’
[...]
9 free (victim); /* { dg-warning "double-'free' of 'victim'" "warning" } */
~~~~~~~~~~~~~
|
(4) first ‘free’ here
‘test’: events 5-6
23 calls_free (ptr); /* { dg-message "\\(2\\) calling 'calls_free' from 'test'" "event 2" } */
^~~~~~~~~~~~~~~~
|
(5) returning to ‘test’ from ‘calls_free’
[...]
28 calls_free (ptr); /* { dg-message "\\(6\\) passing freed pointer 'ptr' in call to 'calls_free' from 'test'" } */
~~~~~~~~~~~~~~~~
|
(6) passing freed pointer ‘ptr’ in call to ‘calls_free’ from ‘test’
calls_free
‘calls_free’: events 7-8
6calls_free (void *victim) /* { dg-message "\\(3\\) entry to 'calls_free'" "event 3" } */
^~~~~~~~~~
|
(7) entry to ‘calls_free’
[...]
9 free (victim); /* { dg-warning "double-'free' of 'victim'" "warning" } */
~~~~~~~~~~~~~
|
(8) second ‘free’ here; first ‘free’ was at (4)