aboutsummaryrefslogtreecommitdiff
path: root/gcc/cp/init.c
diff options
context:
space:
mode:
authorZdenek Dvorak <dvorakz@suse.cz>2006-01-04 23:46:09 +0100
committerZdenek Dvorak <rakdver@gcc.gnu.org>2006-01-04 22:46:09 +0000
commit57b37fe381dc02993b054c441223f9c295249c6d (patch)
treebd6d5e00be1065df3fd6e7d3df2a441d292ab597 /gcc/cp/init.c
parent7a6d30ce0d067ddd40c6d1f000c9d7de27ea4d09 (diff)
downloadgcc-57b37fe381dc02993b054c441223f9c295249c6d.zip
gcc-57b37fe381dc02993b054c441223f9c295249c6d.tar.gz
gcc-57b37fe381dc02993b054c441223f9c295249c6d.tar.bz2
re PR c++/25632 (ICE with const int copied into two different functions)
PR c++/25632 * init.c (constant_value_1): Unshare use of DECL_INITIAL. Fix a typo in condition. From-SVN: r109354
Diffstat (limited to 'gcc/cp/init.c')
-rw-r--r--gcc/cp/init.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/gcc/cp/init.c b/gcc/cp/init.c
index dbdd866..3ec5510 100644
--- a/gcc/cp/init.c
+++ b/gcc/cp/init.c
@@ -1503,7 +1503,7 @@ constant_value_1 (tree decl, bool integral_p)
mark_used (decl);
init = DECL_INITIAL (decl);
}
- if (!(init || init == error_mark_node)
+ if (!init || init == error_mark_node
|| !TREE_TYPE (init)
|| (integral_p
? !INTEGRAL_OR_ENUMERATION_TYPE_P (TREE_TYPE (init))
@@ -1516,7 +1516,7 @@ constant_value_1 (tree decl, bool integral_p)
|| TREE_CODE (init) == CONSTRUCTOR
|| TREE_CODE (init) == STRING_CST)))
break;
- decl = init;
+ decl = unshare_expr (init);
}
return decl;
}