1  /* Disabling epilogues until we find a better way to deal with scans.  */
       2  /* { dg-additional-options "--param vect-epilogues-nomask=0" } */
       3  /* { dg-require-effective-target vect_float_strict } */
       4  
       5  #include <stdarg.h>
       6  #include "tree-vect.h"
       7  
       8  #define N 16
       9  #define DIFF 240
      10  
      11  __attribute__ ((noinline))
      12  int main1 ()
      13  {
      14    int i;
      15    float b[N] = {0,3,6,9,12,15,18,21,24,27,30,33,36,39,42,45};
      16    float c[N] = {0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15};
      17    float diff;
      18  
      19    diff = 0;
      20    for (i = 0; i < N; i++) {
      21      diff += (b[i] - c[i]);
      22    }
      23  
      24    /* check results:  */
      25    if (diff != DIFF)
      26      abort ();
      27  
      28    return 0;
      29  }
      30  
      31  int main (void)
      32  { 
      33    check_vect ();
      34    
      35    return main1 ();
      36  }
      37  
      38  /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" } } */
      39  /* { dg-final { scan-tree-dump-times {using an in-order \(fold-left\) reduction} 1 "vect" } } */