(root)/
gcc-13.2.0/
gcc/
testsuite/
gcc.dg/
torture/
pr57864.c
       1  /* { dg-do compile } */
       2  
       3  union U {
       4      double val;
       5      union U *ptr;
       6  };
       7  
       8  union U *d;
       9  double a;
      10  int b;
      11  int c;
      12  
      13  static void fn1(union U *p1, int p2, _Bool p3)
      14  {
      15      union U *e;
      16  
      17      if (p2 == 0)
      18  	a = ((union U*)((__SIZE_TYPE__)p1 & ~1))->val;
      19  
      20      if (b) {
      21  	e = p1;
      22      } else if (c) {
      23  	e = ((union U*)((__SIZE_TYPE__)p1 & ~1))->ptr;
      24  	d = e;
      25      } else {
      26  	e = 0;
      27  	d = ((union U*)0)->ptr;
      28      }
      29  
      30      fn1 (e, 0, 0);
      31      fn1 (0, 0, p3);
      32  }
      33  
      34  void fn2 (void)
      35  {
      36    fn1 (0, 0, 0);
      37  }