aboutsummaryrefslogtreecommitdiff
path: root/gcc/testsuite/gcc.dg/analyzer/pr98918.c
blob: c3bbce3e6ec189d3c7c77bacf522780764dc91b5 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
/* { dg-additional-options "-Wno-analyzer-symbol-too-complex" } */

#include <stdlib.h>

struct marker {
  struct marker *next;
  void *ref;
};
struct data {
  struct marker *marker;
};

void data_free(struct data d)
{
  struct marker *nm, *m;

  m = d.marker;
  while (m) {
    nm = m->next;
    free(m->ref);
    free(m);
    m = nm;
  }
}