blob: 06f7e42ed246271ef93eded2a857b82e35b077e8 [file] [log] [blame]
// 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, "");