| 
  
     ‘recursive_free’: events 1-3 
|     3 | void recursive_free (void *ptr) |  
 |      ^~~~~~~~~~~~~~ |  
 |      | |  
 |      (1) entry to ‘recursive_free’ |  
|     4 | { |  
|     5 |   free (ptr); /* { dg-warning "double-'free' of 'ptr'" } */ |  
 |   ~~~~~~~~~~ |  
 |   | |  
 |   (2) first ‘free’ here |  
|     6 |   recursive_free (ptr); |  
 |   ~~~~~~~~~~~~~~~~~~~~ |  
 |   | |  
 |   (3) passing freed pointer ‘ptr’ in call to ‘recursive_free’ from ‘recursive_free’ |  
 
 |