(root)/
gcc-13.2.0/
gcc/
testsuite/
gcc.dg/
torture/
pr61964.c
       1  /* { dg-do run } */
       2  
       3  extern void abort (void);
       4  
       5  struct node { struct node *next, *prev; } node;
       6  struct head { struct node *first; } heads[5];
       7  int k = 2;
       8  struct head *head = &heads[2];
       9  
      10  static int __attribute__((noinline))
      11  foo()
      12  {
      13    node.prev = (void *)head;
      14    head->first = &node;
      15  
      16    struct node *n = head->first;
      17    struct head *h = &heads[k];
      18  
      19    if (n->prev == (void *)h)
      20      h->first = n->next;
      21    else
      22      n->prev->next = n->next;
      23  
      24    n->next = h->first;
      25    return n->next == &node;
      26  }
      27  
      28  int main()
      29  {
      30    if (foo ())
      31      abort ();
      32    return 0;
      33  }