From 1b87c9918084cc4cefecb3b34b4001b01583df25 Mon Sep 17 00:00:00 2001 From: Jason Merrill Date: Mon, 27 Jan 2014 23:31:07 -0500 Subject: re PR c++/58639 (ICE on self-referential struct member) PR c++/58639 * call.c (build_aggr_conv): Reject value-initialization of reference. From-SVN: r207166 --- gcc/cp/ChangeLog | 3 +++ gcc/cp/call.c | 3 +++ 2 files changed, 6 insertions(+) (limited to 'gcc/cp') diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index fdd9bca..99c00a2 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,5 +1,8 @@ 2014-01-27 Jason Merrill + PR c++/58639 + * call.c (build_aggr_conv): Reject value-initialization of reference. + PR c++/58812 PR c++/58651 * call.c (convert_like_real): Give helpful error about excess braces diff --git a/gcc/cp/call.c b/gcc/cp/call.c index b72f2d4..b3db840 100644 --- a/gcc/cp/call.c +++ b/gcc/cp/call.c @@ -894,6 +894,9 @@ build_aggr_conv (tree type, tree ctor, int flags, tsubst_flags_t complain) if (i < CONSTRUCTOR_NELTS (ctor)) val = CONSTRUCTOR_ELT (ctor, i)->value; + else if (TREE_CODE (ftype) == REFERENCE_TYPE) + /* Value-initialization of reference is ill-formed. */ + return NULL; else { if (empty_ctor == NULL_TREE) -- cgit v1.1