Commit a1535f52 by Paolo Carlini Committed by Paolo Carlini

re PR c++/60225 ([c++11] ICE initializing constexpr array)

/cp
2014-02-18  Paolo Carlini  <paolo.carlini@oracle.com>

	PR c++/60225
	* semantics.c (ensure_literal_type_for_constexpr_object): Use
	strip_array_types.

/testsuite
2014-02-18  Paolo Carlini  <paolo.carlini@oracle.com>

	PR c++/60225
	* g++.dg/cpp0x/constexpr-ice10.C: New.

/cp
2014-02-18  Paolo Carlini  <paolo.carlini@oracle.com>

	PR c++/60215
	* semantics.c (cxx_eval_constant_expression, [COMPONENT_REF]):
	During error recovery allow_non_constant may be false.

/testsuite
2014-02-18  Paolo Carlini  <paolo.carlini@oracle.com>

	PR c++/60215
	* g++.dg/cpp0x/pr60215.C: New.

From-SVN: r207858
parent 75e9d9a0
2014-02-18 Paolo Carlini <paolo.carlini@oracle.com>
PR c++/60225
* semantics.c (ensure_literal_type_for_constexpr_object): Use
strip_array_types.
2014-02-18 Paolo Carlini <paolo.carlini@oracle.com>
PR c++/60215
* semantics.c (cxx_eval_constant_expression, [COMPONENT_REF]):
During error recovery allow_non_constant may be false.
2014-02-18 Adam Butcher <adam@jessamine.co.uk>
PR c++/60190
......
......@@ -7380,7 +7380,8 @@ ensure_literal_type_for_constexpr_object (tree decl)
if (VAR_P (decl) && DECL_DECLARED_CONSTEXPR_P (decl)
&& !processing_template_decl)
{
if (CLASS_TYPE_P (type) && !COMPLETE_TYPE_P (complete_type (type)))
tree stype = strip_array_types (type);
if (CLASS_TYPE_P (stype) && !COMPLETE_TYPE_P (complete_type (stype)))
/* Don't complain here, we'll complain about incompleteness
when we try to initialize the variable. */;
else if (!literal_type_p (type))
......@@ -9676,7 +9677,7 @@ cxx_eval_constant_expression (const constexpr_call *call, tree t,
build_non_dependent_expr, because any expression that
calls or takes the address of the function will have
pulled a FUNCTION_DECL out of the COMPONENT_REF. */
gcc_checking_assert (allow_non_constant);
gcc_checking_assert (allow_non_constant || errorcount);
*non_constant_p = true;
return t;
}
......
2014-02-18 Paolo Carlini <paolo.carlini@oracle.com>
PR c++/60225
* g++.dg/cpp0x/constexpr-ice10.C: New.
2014-02-18 Paolo Carlini <paolo.carlini@oracle.com>
PR c++/60215
* g++.dg/cpp0x/pr60215.C: New.
2014-02-18 Tobias Burnus <burnus@net-b.de>
PR fortran/49397
......
// PR c++/60225
// { dg-do compile { target c++11 } }
struct A
{
constexpr A() {}
static constexpr A a[2] = {}; // { dg-error "incomplete" }
};
// PR c++/60215
// { dg-do compile { target c++11 } }
struct A
{
void foo();
int i : foo; // { dg-error "width" }
};
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment