re PR c++/55419 (ICE in gimplify_init_ctor_preeval, at gimplify.c:3587)

PR c++/55419
	* tree.c (build_target_expr): Don't set TREE_CONSTANT.

From-SVN: r194319
This commit is contained in:
Jason Merrill 2012-12-07 22:31:56 -05:00 committed by Jason Merrill
parent 92639b9e07
commit 2cf0f2caff
3 changed files with 32 additions and 2 deletions

View File

@ -1,3 +1,8 @@
2012-12-07 Jason Merrill <jason@redhat.com>
PR c++/55419
* tree.c (build_target_expr): Don't set TREE_CONSTANT.
2012-12-07 Matthias Klose <doko@ubuntu.com>
* tree.c (build_aggr_init_expr): Add parameter name, mark as unused.

View File

@ -318,8 +318,6 @@ build_target_expr (tree decl, tree value, tsubst_flags_t complain)
side-effects, then the optimizer should be able to get rid of
whatever code is generated anyhow. */
TREE_SIDE_EFFECTS (t) = 1;
if (literal_type_p (type))
TREE_CONSTANT (t) = TREE_CONSTANT (value);
return t;
}

View File

@ -0,0 +1,27 @@
// PR c++/55419
// { dg-options -std=c++11 }
struct P
{
P () = default;
explicit constexpr P (int x) : p (x) {}
int p;
};
struct Q
{
constexpr Q () : q (0x7f) {}
int q;
};
struct R
{
Q q;
P p;
};
void
foo (R *x)
{
*x = {};
}