| 
                
                   
                    test
                   
                  
                    
                      | 
                         test: events 1-2 
                        
                          
                            |    28 |   | test () |  
                            |       |   | ^~~~ |  
                            |       |   | | |  
                            |       |   | (1) entry to ‘test’
  |  
                            |    29 |   | { |  
                            |    30 |   |   if (!append_value (42)) |  
                            |       |   |        ~~~~~~~~~~~~~~~~~ |  
                            |       |   |        | |  
                            |       |   |        (2) calling ‘append_value’ from ‘test’
  |  
                          
                         
                       | 
                     
                   
                  
                    
                       | 
                      
                         
                          append_value
                         
                        
                          
                            | 
                               append_value: events 3-7 
                              
                                
                                  |    12 |   | append_value (int value) |  
                                  |       |   | ^~~~~~~~~~~~ |  
                                  |       |   | | |  
                                  |       |   | (3) entry to ‘append_value’
  |  
                                  |    13 |   | { |  
                                  |    14 |   |   struct node *n = __builtin_malloc (sizeof (struct node)); |  
                                  |       |   |                    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ |  
                                  |       |   |                    | |  
                                  |       |   |                    (4) allocated here
  |  
                                  |    15 |   |   if (!n) |  
                                  |       |   |      ~ |  
                                  |       |   |      | |  
                                  |       |   |      (5) assuming ‘n’ is non-NULL
  |  
                                  |       |   |      (6) following ‘false’ branch (when ‘n’ is non-NULL)...
   ─>─┐ |  
                                  |       |   |                                                                │ |  
                                  |       |   |                                                                │ |  
                                  |       | ┌ | ───────────────────────────────────────────────────────────────┘ |  
                                  |    16 | │ |     return 0; |  
                                  |    17 | │ |   n->m_val = value; |  
                                  |       | │ |   ~~~~~~~~~~~~~~~~ |  
                                  |       | │ |            | |  
                                  |       | └ | ──────────>(7) ...to here
  |  
                                
                               
                             | 
                           
                         
                       | 
                     
                   
                  
                    
                      | 
                         test: event 8 
                        
                          
                            |    30 |   |   if (!append_value (42)) |  
                            |       |   |        ^~~~~~~~~~~~~~~~~ |  
                            |       |   |        | |  
                            |       |   |        (8) returning to ‘test’ from ‘append_value’
  |  
                          
                         
                       | 
                     
                   
                  
                    
                      | 
                         test: events 9-11 
                        
                          
                            |    30 |   |   if (!append_value (42)) |  
                            |       |   |      ^ |  
                            |       |   |      | |  
                            |       |   |      (9) following ‘false’ branch...
   ─>─┐ |  
                            |       |   |                                         │ |  
                            |       |   |                                         │ |  
                            |       | ┌ | ────────────────────────────────────────┘ |  
                            |    31 | │ |     return; |  
                            |    32 | │ |   if (!append_value (1066)) |  
                            |       | │ |        ~~~~~~~~~~~~~~~~~~~ |  
                            |       | │ |        | |  
                            |       | └ | ──────>(10) ...to here
  |  
                            |       |   |        (11) calling ‘append_value’ from ‘test’
  |  
                          
                         
                       | 
                     
                   
                  
                    
                       | 
                      
                         
                          append_value
                         
                        
                          
                            | 
                               append_value: events 12-14 
                              
                                
                                  |    12 |   | append_value (int value) |  
                                  |       |   | ^~~~~~~~~~~~ |  
                                  |       |   | | |  
                                  |       |   | (12) entry to ‘append_value’
  |  
                                
| [...] |  |  
                                
                                  |    15 |   |   if (!n) |  
                                  |       |   |      ~ |  
                                  |       |   |      | |  
                                  |       |   |      (13) following ‘false’ branch (when ‘n’ is non-NULL)...
   ─>─┐ |  
                                  |       |   |                                                                 │ |  
                                  |       |   |                                                                 │ |  
                                  |       | ┌ | ────────────────────────────────────────────────────────────────┘ |  
                                  |    16 | │ |     return 0; |  
                                  |    17 | │ |   n->m_val = value; |  
                                  |       | │ |   ~~~~~~~~~~~~~~~~ |  
                                  |       | │ |            | |  
                                  |       | └ | ──────────>(14) ...to here
  |  
                                
                               
                             | 
                           
                         
                       | 
                     
                   
                  
                    
                      | 
                         test: event 15 
                        
                          
                            |    32 |   |   if (!append_value (1066)) |  
                            |       |   |        ^~~~~~~~~~~~~~~~~~~ |  
                            |       |   |        | |  
                            |       |   |        (15) returning to ‘test’ from ‘append_value’
  |  
                          
                         
                       | 
                     
                   
                  
                    
                      | 
                         test: events 16-18 
                        
                          
                            |    32 |   |   if (!append_value (1066)) |  
                            |       |   |      ^ |  
                            |       |   |      | |  
                            |       |   |      (16) following ‘false’ branch...
   ─>─┐ |  
                            |       |   |                                          │ |  
                            |       |   |                                          │ |  
                            |       | ┌ | ─────────────────────────────────────────┘ |  
                            |    33 | │ |     return; |  
                            |    34 | │ |   if (!append_value (1776)) |  
                            |       | │ |        ~~~~~~~~~~~~~~~~~~~ |  
                            |       | │ |        | |  
                            |       | └ | ──────>(17) ...to here
  |  
                            |       |   |        (18) calling ‘append_value’ from ‘test’
  |  
                          
                         
                       | 
                     
                   
                  
                    
                       | 
                      
                         
                          append_value
                         
                        
                          
                            | 
                               append_value: events 19-21 
                              
                                
                                  |    12 |   | append_value (int value) |  
                                  |       |   | ^~~~~~~~~~~~ |  
                                  |       |   | | |  
                                  |       |   | (19) entry to ‘append_value’
  |  
                                
| [...] |  |  
                                
                                  |    15 |   |   if (!n) |  
                                  |       |   |      ~ |  
                                  |       |   |      | |  
                                  |       |   |      (20) following ‘false’ branch (when ‘n’ is non-NULL)...
   ─>─┐ |  
                                  |       |   |                                                                 │ |  
                                  |       |   |                                                                 │ |  
                                  |       | ┌ | ────────────────────────────────────────────────────────────────┘ |  
                                  |    16 | │ |     return 0; |  
                                  |    17 | │ |   n->m_val = value; |  
                                  |       | │ |   ~~~~~~~~~~~~~~~~ |  
                                  |       | │ |            | |  
                                  |       | └ | ──────────>(21) ...to here
  |  
                                
                               
                             | 
                           
                         
                       | 
                     
                   
                  
                    
                      | 
                         test: event 22 
                        
                          
                            |    34 |   |   if (!append_value (1776)) |  
                            |       |   |        ^~~~~~~~~~~~~~~~~~~ |  
                            |       |   |        | |  
                            |       |   |        (22) returning to ‘test’ from ‘append_value’
  |  
                          
                         
                       | 
                     
                   
                  
                    
                      | 
                         test: events 23-24 
                        
                          
                            |    34 |   |   if (!append_value (1776)) |  
                            |       |   |      ^ |  
                            |       |   |      | |  
                            |       |   |      (23) following ‘false’ branch...
   ─>─┐ |  
                            |       |   |                                          │ |  
                          
| [...] |  |  
                          
                            |       |   |                                          │ |  
                            |       | ┌ | ─────────────────────────────────────────┘ |  
                            |    37 | │ |   __builtin_free (first->m_next->m_next); |  
                            |       | │ |                        ~~ |  
                            |       | │ |                        | |  
                            |       | └ | ──────────────────────>(24) ...to here
  |  
                          
                         
                       | 
                     
                   
                  
                    
                      | 
                         test: events 25-26 
                        
                          
                            |    37 |   |   __builtin_free (first->m_next->m_next); |  
                            |       |   |   ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ |  
                            |       |   |   | |  
                            |       |   |   (25) freed here
  |  
                            |    38 |   |   first->m_next->m_next->m_next->m_next = NULL;  /* { dg-warning "-Wanalyzer-use-after-free" } */ |  
                            |       |   |   ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ |  
                            |       |   |                        | |  
                            |       |   |                        (26) ⚠️  use after ‘free’ of ‘*first.2_7->m_next.m_next’; freed at (25)
  |  
                          
                         
                       | 
                     
                   
                 |