(root)/
gcc-13.2.0/
gcc/
testsuite/
g++.dg/
torture/
pr71792.C
// { dg-do run { target c++11 } }
// PR C++/71792

class some_class
{
public:
  unsigned int np              : 4;
  unsigned int nc              : 8;
  unsigned int nc0             : 1;
};

template<bool what>
static void test_bug (const some_class &mp) {
  if (what) {
    int t = 0;
    for (auto i = mp.nc0; i < mp.nc; i++) {
      if (t != i) __builtin_abort ();
      t++;
    }
  }
}

static void test_ok (const some_class &mp) {
  int t = 0;
  for (auto i = mp.nc0; i < mp.nc; i++) {
    if (t != i) __builtin_abort ();
    t++;
  }
}

int main ()
{
  some_class mp;
  mp.nc0 = 0;
  mp.nc = 9;
  mp.np = 3;

  test_bug<true> (mp);
  test_ok (mp);

  return 0;
}