aboutsummaryrefslogtreecommitdiff
path: root/gcc/cp/typeck2.c
diff options
context:
space:
mode:
authorjason <jason@138bc75d-0d04-0410-961f-82ee72b054a4>2016-11-16 22:42:24 +0000
committerjason <jason@138bc75d-0d04-0410-961f-82ee72b054a4>2016-11-16 22:42:24 +0000
commit39682fd5acff8328768ba720cb87ebc28ba9cf8e (patch)
treef3a4b93a42b0d4a6d52610ed1b0c016684d17afc /gcc/cp/typeck2.c
parent387c03a0e7e98d7255f3c06fdcff30e037893898 (diff)
PR c++/78373 - ICE with TREE_CONSTANT reference
* decl.c (cp_finish_decl): Don't set TREE_CONSTANT on a reference. * typeck2.c (store_init_value): Likewise. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@242523 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/cp/typeck2.c')
-rw-r--r--gcc/cp/typeck2.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/gcc/cp/typeck2.c b/gcc/cp/typeck2.c
index 022a47883a0..2ca4bf241ec 100644
--- a/gcc/cp/typeck2.c
+++ b/gcc/cp/typeck2.c
@@ -824,7 +824,9 @@ store_init_value (tree decl, tree init, vec<tree, va_gc>** cleanups, int flags)
const_init = (reduced_constant_expression_p (value)
|| error_operand_p (value));
DECL_INITIALIZED_BY_CONSTANT_EXPRESSION_P (decl) = const_init;
- TREE_CONSTANT (decl) = const_init && decl_maybe_constant_var_p (decl);
+ /* FIXME setting TREE_CONSTANT on refs breaks the back end. */
+ if (TREE_CODE (type) != REFERENCE_TYPE)
+ TREE_CONSTANT (decl) = const_init && decl_maybe_constant_var_p (decl);
}
value = cp_fully_fold (value);