(root)/
gcc-13.2.0/
gcc/
testsuite/
gcc.dg/
vect/
pr64252.c
       1  /* PR target/64252 */
       2  /* Test correctness of size 3 store groups permutation.  */
       3  /* { dg-additional-options "-O3" } */
       4  /* { dg-additional-options "-mavx" { target avx_runtime } } */
       5  
       6  #include "tree-vect.h"
       7  
       8  #define N 50
       9  
      10  enum num3
      11  {
      12    a, b, c
      13  };
      14  
      15  struct flags
      16  {
      17    enum num3 f;
      18    unsigned int c;
      19    unsigned int p;
      20  };
      21  
      22  struct flagsN
      23  {
      24    struct flags a[N];
      25  };
      26  
      27  void
      28  bar (int n, struct flagsN *ff)
      29  {
      30    struct flagsN *fc;
      31    for (fc = ff + 1; fc < (ff + n); fc++)
      32      {
      33        int i;
      34        for (i = 0; i < N; ++i)
      35         {
      36           ff->a[i].f = 0;
      37           ff->a[i].c = i;
      38           ff->a[i].p = -1;
      39         }
      40        for (i = 0; i < n; i++)
      41         {
      42           int j;
      43           for (j = 0; j < N - n; ++j)
      44             {
      45               fc->a[i + j].f = 0;
      46               fc->a[i + j].c = j + i;
      47               fc->a[i + j].p = -1;
      48             }
      49         }
      50      }
      51  }
      52  
      53  struct flagsN q[2];
      54  
      55  int main()
      56  {
      57    int i;
      58    check_vect ();
      59    bar(2, q);
      60    for (i = 0; i < N; i++)
      61      if (q[0].a[i].f != 0 || q[0].a[i].c != i || q[0].a[i].p != -1)
      62        abort ();
      63    return 0;
      64  }