Bug path

a5
‘a5’: events 1-2
16void a5 (void)
^~
|
(1) entry to ‘a5’
[...]
19 hv (&qb);
~~~~~~~~
|
(2) calling ‘hv’ from ‘a5’
hv
‘hv’: events 3-7
7void *hv (struct foo **tm)
^~
|
(3) entry to ‘hv’
8{
9 void *p = __builtin_malloc (4);
~~~~~~~~~~~~~~~~~~~~
|
(4) allocated here
10 *tm = p;
11 if (!p)
~
|
(5) assuming ‘qb’ is non-NULL
(6) following ‘false’ branch (when ‘p’ is non-NULL)...
12 abort ();
13 return p;
~
|
(7) ...to here
‘a5’: events 8-9
19 hv (&qb);
^~~~~~~~
|
(8) returning to ‘a5’ from ‘hv’
20} /* { dg-warning "leak of 'qb'" } */
~
|
(9) ‘qb’ leaks here; was allocated at (4)