(root)/
gcc-13.2.0/
gcc/
testsuite/
gcc.dg/
vect/
pr88598-4.c
       1  /* { dg-additional-options "-fdump-tree-optimized" } */
       2  
       3  #include "tree-vect.h"
       4  
       5  #define N 4
       6  
       7  int a[N];
       8  
       9  int __attribute__ ((noipa))
      10  f1 (void)
      11  {
      12    int b[N] = { 0, 15, 15, 15 }, res = 0;
      13    for (int i = 0; i < N; ++i)
      14      res += a[i] & b[i];
      15    return res;
      16  }
      17  
      18  int __attribute__ ((noipa))
      19  f2 (void)
      20  {
      21    int b[N] = { 0, 31, 0, 31 }, res = 0;
      22    for (int i = 0; i < N; ++i)
      23      res += a[i] & b[i];
      24    return res;
      25  }
      26  
      27  int __attribute__ ((noipa))
      28  f3 (void)
      29  {
      30    int b[N] = { -1, -1, 0, 0 }, res = 0;
      31    for (int i = 0; i < N; ++i)
      32      res += a[i] & b[i];
      33    return res;
      34  }
      35  
      36  int
      37  main ()
      38  {
      39    check_vect ();
      40  
      41    for (int i = 0; i < N; ++i)
      42      a[i] = 0xe0 + i;
      43  
      44    if (f1 () != (a[1] & 15) + (a[2] & 15) + (a[3] & 15)
      45        || f2 () != (a[1] & 31) + (a[3] & 31)
      46        || f3 () != a[0] + a[1])
      47      __builtin_abort ();
      48  
      49    return 0;
      50  }