|    16 |   |     if ((arr[i] = (struct foo *)malloc(sizeof(struct foo))) == NULL) { | 
                          |       |   |        ^ | 
                          |       |   |        | | 
                          |       |   |        (11) following ‘true’ branch... ─>─┐ | 
                          |       |   |                                           │ | 
                          |       |   |                                           │ | 
                          |       | ┌ | ──────────────────────────────────────────┘ | 
                          |    17 | │ |       for (; i >= 0; i--) { | 
                          |       | │ |       ~~~    ~~~~~~ | 
                          |       | │ |       |        | | 
                          |       | │ |       |        (13) following ‘true’ branch (when ‘i >= 0’)... ─>─┐ | 
                          |       | └ | ─────>(12) ...to here                                             │ | 
                          |       |   |                                                                   │ | 
                          |       |   |                                                                   │ | 
                          |       | ┌ | ──────────────────────────────────────────────────────────────────┘ | 
                          |    18 | │ |         free(arr[i]); /* { dg-bogus "double-'free'" } */ | 
                          |       | │ |                 ~ | 
                          |       | │ |                 | | 
                          |       | └ | ───────────────>(14) ...to here | 
                          |    19 |   |       } | 
                          |    20 |   |       free(arr); /* { dg-bogus "leak" "" { xfail *-*-* } } */ | 
                          |       |   |       ~~~~~~~~~ | 
                          |       |   |       | | 
                          |       |   |       (15) ⚠️  ‘<unknown>’ leaks here; was allocated at (5)
  |