(root)/
gcc-13.2.0/
gcc/
testsuite/
g++.dg/
cpp1y/
constexpr-98672.C
// PR c++/98672
// { dg-do compile { target c++14 } }

void
foo ()
{
}

constexpr int
bar ()
{
  for (int i = 0; i < 5; ++i)
    return i;
  foo ();
  return 0;
}

constexpr int
baz ()
{
  int i = 0;
  while (i < 5)
    {
      if (i == 3)
	return i;
      else
	++i;
    }
  foo ();
  return 0;
}

constexpr int
qux (int x)
{
  if (x > 10)
    ++x;
  else
    return 7;
  foo ();
  return 0;
}

constexpr int
corge (int x)
{
  for (int a = 1; ; a++)
    {
      if (x > 10)
	++x;
      else
	return 4;
      foo ();
    }
}

constexpr int
garply (int x)
{
  for (int a = 1; ; a++)
    {
      if (x > 10)
	++x;
      else
	break;
      foo ();
    }
  return x;
}

constexpr int
waldo (int x)
{
  for (int a = 1; ; a++)
    {
      if (x > 10)
	break;
      else
	return 5;
      foo ();
    }
  foo ();
  return x;
}

constexpr int i = bar ();
constexpr int j = baz ();
constexpr int k = qux (4);
constexpr int l = corge (5);
constexpr int m = garply (2);
constexpr int n = waldo (-2);
static_assert (i == 0 && j == 3 && k == 7 && l == 4 && m == 2 && n == 5, "");