(root)/
gcc-13.2.0/
gcc/
testsuite/
gcc.dg/
vect/
pr51581-3.c
       1  /* PR tree-optimization/51581 */
       2  
       3  #include "tree-vect.h"
       4  
       5  int a[8], b[8];
       6  unsigned int c[8], d[8];
       7  
       8  void
       9  f1 (void)
      10  {
      11    a[0] = b[0] / 8;
      12    a[1] = b[1] / 8;
      13    a[2] = b[2] / 8;
      14    a[3] = b[3] / 8;
      15    a[4] = b[4] / 8;
      16    a[5] = b[5] / 8;
      17    a[6] = b[6] / 8;
      18    a[7] = b[7] / 8;
      19  }
      20  
      21  void
      22  f2 (void)
      23  {
      24    c[0] = d[0] / 3;
      25    c[1] = d[1] / 3;
      26    c[2] = d[2] / 3;
      27    c[3] = d[3] / 3;
      28    c[4] = d[4] / 3;
      29    c[5] = d[5] / 3;
      30    c[6] = d[6] / 3;
      31    c[7] = d[7] / 3;
      32  }
      33  
      34  void
      35  f3 (void)
      36  {
      37    a[0] = b[0] / 8;
      38    a[1] = b[1] / 4;
      39    a[2] = b[2] / 8;
      40    a[3] = b[3] / 4;
      41    a[4] = b[4] / 8;
      42    a[5] = b[5] / 4;
      43    a[6] = b[6] / 8;
      44    a[7] = b[7] / 4;
      45  }
      46  
      47  void
      48  f4 (void)
      49  {
      50    c[0] = d[0] / 3;
      51    c[1] = d[1] / 5;
      52    c[2] = d[2] / 3;
      53    c[3] = d[3] / 5;
      54    c[4] = d[4] / 3;
      55    c[5] = d[5] / 5;
      56    c[6] = d[6] / 3;
      57    c[7] = d[7] / 5;
      58  }
      59  
      60  void
      61  f5 (void)
      62  {
      63    a[0] = b[0] / 14;
      64    a[1] = b[1] / 15;
      65    a[2] = b[2] / 14;
      66    a[3] = b[3] / 15;
      67    a[4] = b[4] / 14;
      68    a[5] = b[5] / 15;
      69    a[6] = b[6] / 14;
      70    a[7] = b[7] / 15;
      71  }
      72  
      73  void
      74  f6 (void)
      75  {
      76    c[0] = d[0] / 6;
      77    c[1] = d[1] / 5;
      78    c[2] = d[2] / 6;
      79    c[3] = d[3] / 5;
      80    c[4] = d[4] / 6;
      81    c[5] = d[5] / 5;
      82    c[6] = d[6] / 13;
      83    c[7] = d[7] / 5;
      84  }
      85  
      86  int
      87  main ()
      88  {
      89    int i;
      90    check_vect ();
      91    asm ("");
      92    for (i = 0; i < 8; i++)
      93      {
      94        asm ("");
      95        b[i] = i - 4;
      96        d[i] = i - 4;
      97      }
      98    f1 ();
      99    f2 ();
     100    for (i = 0; i < 8; i++)
     101      if (a[i] != b[i] / 8 || c[i] != d[i] / 3)
     102        abort ();
     103    f3 ();
     104    f4 ();
     105    for (i = 0; i < 8; i+= 2)
     106      if (a[i] != b[i] / 8 || a[i + 1] != b[i + 1] / 4
     107  	|| c[i] != d[i] / 3 || c[i + 1] != d[i + 1] / 5)
     108        abort ();
     109    f5 ();
     110    f6 ();
     111    for (i = 0; i < 8; i+= 2)
     112      if (a[i] != b[i] / 14 || a[i + 1] != b[i + 1] / 15
     113  	|| c[i] != d[i] / (i == 6 ? 13 : 6) || c[i + 1] != d[i + 1] / 5)
     114        abort ();
     115    return 0;
     116  }
     117