(root)/
gcc-13.2.0/
gcc/
testsuite/
gcc.dg/
vect/
vect-reduc-epilogue-gaps.c
       1  /* { dg-options "-O3 -fno-vect-cost-model" } */
       2  struct {
       3      float real;
       4      float img;
       5  } g[11];
       6  
       7  float __attribute__ ((noclone))
       8  foo_11 (void)
       9  {
      10    float sum = 0.0;
      11    for (int i = 0; i < 11; ++i)
      12      sum += g[i].real;
      13    return sum;
      14  }
      15  
      16  float __attribute__ ((noclone))
      17  foo_10 (void)
      18  {
      19    float sum = 0.0;
      20    for (int i = 0; i < 10; ++i)
      21      sum += g[i].real;
      22    return sum;
      23  }
      24  
      25  int main (void)
      26  {
      27    float check_10 = 0.0;
      28    float check_11 = 0.0;
      29    for (int i = 0; i < 11; ++i)
      30      {
      31        asm volatile ("" : : : "memory");
      32        g[i].real = (float) i;
      33        g[i].img = (float) -i;
      34        if (i < 10)
      35  	check_10 += (float) i;
      36        check_11 += (float) i;
      37      }
      38  
      39    if (foo_10 () != check_10)
      40      __builtin_abort ();
      41    if (foo_11 () != check_11)
      42      __builtin_abort ();
      43  
      44    return 0;
      45  }