diff options
author | jason <jason@138bc75d-0d04-0410-961f-82ee72b054a4> | 2016-11-16 22:42:24 +0000 |
---|---|---|
committer | jason <jason@138bc75d-0d04-0410-961f-82ee72b054a4> | 2016-11-16 22:42:24 +0000 |
commit | 39682fd5acff8328768ba720cb87ebc28ba9cf8e (patch) | |
tree | f3a4b93a42b0d4a6d52610ed1b0c016684d17afc /gcc/cp/typeck2.c | |
parent | 387c03a0e7e98d7255f3c06fdcff30e037893898 (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.c | 4 |
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); |