(root)/
gcc-13.2.0/
gcc/
testsuite/
gcc.dg/
analyzer/
pr99044-2.c
       1  struct node
       2  {
       3    struct node *next;
       4  };
       5  
       6  void test_1 (struct node *n)
       7  {
       8    while (n)
       9      {
      10        struct node *next = n->next;
      11        __builtin_free (n);
      12        n = next;
      13      }
      14  }
      15  
      16  extern void *get_ptr (void);
      17  
      18  void test_2 (void)
      19  {
      20    void *p;
      21    while (p = get_ptr ())
      22      __builtin_free (p); /* { dg-bogus "double-'free' of 'p'" } */
      23  }
      24  
      25  extern void **get_ptr_ptr (void);
      26  
      27  void test_3 (void)
      28  {
      29    void **p;
      30    while (p = get_ptr_ptr ())
      31      __builtin_free (*p); /* { dg-bogus "double-'free'" } */
      32  }
      33  
      34  void test_4 (void)
      35  {
      36    void *p = (void *)0;
      37    while (1)
      38      {
      39        __builtin_free (p); /* { dg-bogus "double-'free' of 'p'" } */
      40        p = get_ptr ();
      41      }
      42  }