(root)/
gcc-13.2.0/
gcc/
testsuite/
gcc.dg/
pr63914.c
       1  /* { dg-do compile } */
       2  /* { dg-options "-O2 -ffast-math" } */
       3  /* { dg-prune-output "non-standard ABI extension" } */
       4  /* { dg-additional-options "-fno-common" { target hppa*-*-hpux* } } */
       5  /* { dg-additional-options "-msse" { target { i?86-*-* x86_64-*-* } } } */
       6  /* { dg-require-effective-target int32plus } */
       7  
       8  typedef float __m128 __attribute__ ((__vector_size__ (16)));
       9  __m128 a, d, e;
      10  int b;
      11  struct dt_interpolation c;
      12  __m128
      13  fn1 (float p1)
      14  {
      15    return (__attribute__ ((__vector_size__ (4 * sizeof 0))) float){ p1 };
      16  }
      17  __m128
      18  fn2 (float p1)
      19  {
      20    return fn1 (p1);
      21  }
      22  struct dt_interpolation
      23  {
      24    int width;
      25  };
      26  void
      27  fn3 (struct dt_interpolation *p1, int *p2)
      28  {
      29    int i = 0, n = 0;
      30    while (i < 2 * p1->width)
      31      n = i++;
      32    *p2 = n;
      33  }
      34  void
      35  fn4 ()
      36  {
      37    __m128 f;
      38    fn3 (&c, &b);
      39    __m128 g = fn2 (1.f / b);
      40    e = (__m128){};
      41    __m128 h = e;
      42    for (int i = 0; i < 2 * c.width; i++)
      43      {
      44        for (; c.width;)
      45  	f = a;
      46        h = f;
      47      }
      48    d = h * g;
      49  }