view gcc/testsuite/g++.dg/cpp1y/constexpr-86767.C @ 131:84e7813d76e9

gcc-8.2
author mir3636
date Thu, 25 Oct 2018 07:37:49 +0900
parents
children
line wrap: on
line source

// PR c++/86767
// { dg-do compile { target c++14 } }

constexpr int
fn0 () noexcept
{
  int r = 0;
  for (int i = 0; i < 10; ++i)
    {
      continue;
      r++;
      for (int j = 0; j < 10; ++j )
	{
	}
    }
  return r;
}
static_assert (fn0 () == 0, "");

constexpr int
fn1 () noexcept
{
  int r = 0;
  for (int i = 0; i < 10; ++i)
    for (int j = 0; j < 10; ++j)
      {
	continue;
	r++;
      }
  return r;
}
static_assert (fn1 () == 0, "");

constexpr int
fn2 () noexcept
{
  int r = 0;
  for (int i = 0; i < 10; ++i)
    {
      continue;
      r++;
    }
  return r;
}
static_assert (fn2 () == 0, "");

constexpr int
fn3 () noexcept
{
  int r = 0;
  for (int i = 0; i < 10; ++i)
    {
      continue;
      r++;
      while (1)
	{
	}
    }
  return r;
}
static_assert (fn3 () == 0, "");

constexpr int
fn4 () noexcept
{
  for (int i = 0; i < 10; ++i)
    {
      switch (i)
	{
	case 5:
	  return i;
	default:
	  continue;
	}
      while (1)
	{
	}
    }
  return 0;
}
static_assert (fn4 () == 5, "");

constexpr int
fn5 () noexcept
{
  for (int i = 0; i < 10; ++i)
    {
      switch (i)
	{
	case 0:
	case 1:
	case 2:
	case 3:
	case 4:
	  continue;
	default:
	  return i;
	}
      while (1)
	{
	}
    }
  return 0;
}
static_assert (fn5 () == 5, "");

constexpr int
fn6 () noexcept
{
  int r = 0;
  for (int i = 0; i < 10; ++i)
    {
      continue;
      for (int j = 0; j < 10; ++j )
	r++;
    }
  return r;
}
static_assert (fn6 () == 0, "");