(root)/
gcc-13.2.0/
gcc/
testsuite/
g++.dg/
vect/
pr97255.cc
// { dg-require-effective-target c++11 }
// { dg-additional-options "-O3" }

template<class T, unsigned N>
class Array{
public:
    T& operator[](unsigned x) {return m_arr[x];}
private:
    T m_arr[N];
};

int
__attribute__((noipa))
logicalOr(Array< char, 4 > in1[60],
          Array< bool, 4 > out[60])
{
  for (unsigned k0 = 0u; k0 < 60u; ++k0) {
      Array< char, 4 > in1m = in1[k0];
      Array< bool, 4 > x;
      for (unsigned k1 = 0u; k1 < 4u; ++k1) {
          char in1s = in1m[k1];
          x[k1] = in1s != char(0) || in1s != char(0);
      }
      out[k0] = x;
  }
  return out[0][0];
}


int main()
{
  Array< char, 4 > In1[60]{};
  Array< bool, 4 > Out7[60]{};

  for( int i = 0; i < 60; ++i){
      for( int j = 0; j < 4; ++j){
          In1[i][j] = 240 - i*4 - j;
      }
  }

  if (logicalOr(In1, Out7) != 1)
    __builtin_abort ();
  return 0;
}