(root)/
gcc-13.2.0/
gcc/
testsuite/
gcc.dg/
torture/
pr109585.c
       1  /* { dg-do run } */
       2  
       3  #include <stdlib.h>
       4  
       5  struct P {
       6      long v;
       7      struct P *n;
       8  };
       9  
      10  struct F {
      11      long x;
      12      struct P fam[];
      13  };
      14  
      15  int __attribute__((noipa))
      16  f(struct F *f, int i)
      17  {
      18    struct P *p = f->fam;
      19    asm("" : "+r"(f): "r"(p));
      20    p->v = 0;
      21    p->n = 0;
      22    return f->fam->n != 0;
      23  }
      24  
      25  int
      26  main()
      27  {
      28    struct F *m = malloc (sizeof (long) + 2 * sizeof (struct P));
      29    m->fam[0].n = &m->fam[1];
      30    if (f (m, 0))
      31      abort ();
      32    return 0;
      33  }