|   111 |   if (y) | 
 |      ~                | 
 |      | | 
 |      (5) following ‘true’ branch (when ‘y != 0’)... | 
|   112 |     free (ptr); /* No double-'free' warning: we've already attempted | 
 |     ~~~~~~~~~~        | 
 |     | | 
 |     (6) ...to here | 
 |     (7) freed here | 
|   113 |                    to dereference it above.  */ | 
|   114 |   return *ptr; /* { dg-warning "use after 'free' of 'ptr'" "use-after-free" } */ | 
 |          ~~~~         | 
 |          | | 
 |          (8) use after ‘free’ of ‘ptr’; freed at (7) |