diff options
author | Ollie Wild <aaw@google.com> | 2007-09-28 04:25:54 +0000 |
---|---|---|
committer | Ollie Wild <aaw@gcc.gnu.org> | 2007-09-28 04:25:54 +0000 |
commit | 12487dd07ef8c5b789ad47dc7f4341347e68f625 (patch) | |
tree | 879e65668805330d7be1aedfae2d117c74ba8aec /gcc/cp | |
parent | 3e60eff0f3e4808393ced59da85219fb99d38220 (diff) | |
download | gcc-12487dd07ef8c5b789ad47dc7f4341347e68f625.zip gcc-12487dd07ef8c5b789ad47dc7f4341347e68f625.tar.gz gcc-12487dd07ef8c5b789ad47dc7f4341347e68f625.tar.bz2 |
varasm.c (compare_constant): Removed call to lang_hooks.expand_constant.
gcc/
* varasm.c (compare_constant): Removed call to
lang_hooks.expand_constant.
(copy_constants): Removed call to lang_hooks.expand_constant.
(compute_reloc_for_constant): Removed call to
lang_hooks.expand_constant.
(output_addressed_constants): Removed call to
lang_hooks.expand_constant.
(constructor_static_from_elts_p): Removed call to
lang_hooks.expand_constant.
(output_constant): Removed calls to lang_hooks.expand_constant.
* langhooks.h (struct lang_hooks): Removed field expand_constant.
* langhooks-def.h (lhd_return_tree): Removed.
(LANG_HOOKS_EXPAND_CONSTANT): Removed.
(LANG_HOOKS_INITIALIZER): Removed LANG_HOOKS_EXPAND_CONSTANT.
* langhooks.c (lhd_return_tree): Removed.
gcc/cp/
* typeck2.c (digest_init): Call cplus_expand_constant after
convert_for_initialization.
* cp-objcp-common.h (LANG_HOOKS_EXPAND_CONSTANT): Removed.
* expr.c (cplus_expand_constant): Updated function description.
From-SVN: r128859
Diffstat (limited to 'gcc/cp')
-rw-r--r-- | gcc/cp/ChangeLog | 7 | ||||
-rw-r--r-- | gcc/cp/cp-objcp-common.h | 2 | ||||
-rw-r--r-- | gcc/cp/expr.c | 3 | ||||
-rw-r--r-- | gcc/cp/typeck2.c | 19 |
4 files changed, 25 insertions, 6 deletions
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index a0e259c..8c1d9e2 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,3 +1,10 @@ +2007-09-27 Ollie Wild <aaw@google.com> + + * typeck2.c (digest_init): Call cplus_expand_constant after + convert_for_initialization. + * cp-objcp-common.h (LANG_HOOKS_EXPAND_CONSTANT): Removed. + * expr.c (cplus_expand_constant): Updated function description. + 2007-09-27 Jason Merrill <jason@redhat.com> * decl2.c (is_late_template_attribute): Don't crash on unknown diff --git a/gcc/cp/cp-objcp-common.h b/gcc/cp/cp-objcp-common.h index 7f8138c..60d7818 100644 --- a/gcc/cp/cp-objcp-common.h +++ b/gcc/cp/cp-objcp-common.h @@ -50,8 +50,6 @@ extern tree objcp_tsubst_copy_and_build (tree, tree, tsubst_flags_t, #define LANG_HOOKS_POST_OPTIONS c_common_post_options #undef LANG_HOOKS_GET_ALIAS_SET #define LANG_HOOKS_GET_ALIAS_SET cxx_get_alias_set -#undef LANG_HOOKS_EXPAND_CONSTANT -#define LANG_HOOKS_EXPAND_CONSTANT cplus_expand_constant #undef LANG_HOOKS_EXPAND_EXPR #define LANG_HOOKS_EXPAND_EXPR cxx_expand_expr #undef LANG_HOOKS_EXPAND_DECL diff --git a/gcc/cp/expr.c b/gcc/cp/expr.c index 267b847..b518646 100644 --- a/gcc/cp/expr.c +++ b/gcc/cp/expr.c @@ -33,8 +33,7 @@ along with GCC; see the file COPYING3. If not see #include "except.h" #include "tm_p.h" -/* Hook used by output_constant to expand language-specific - constants. */ +/* Expand C++-specific constants. Currently, this means PTRMEM_CST. */ tree cplus_expand_constant (tree cst) diff --git a/gcc/cp/typeck2.c b/gcc/cp/typeck2.c index 53e2202..adbe9de 100644 --- a/gcc/cp/typeck2.c +++ b/gcc/cp/typeck2.c @@ -703,8 +703,23 @@ digest_init (tree type, tree init) /* Handle scalar types (including conversions) and references. */ if (TREE_CODE (type) != COMPLEX_TYPE && (SCALAR_TYPE_P (type) || code == REFERENCE_TYPE)) - return convert_for_initialization (0, type, init, LOOKUP_NORMAL, - "initialization", NULL_TREE, 0); + { + tree *exp; + + init = convert_for_initialization (0, type, init, LOOKUP_NORMAL, + "initialization", NULL_TREE, 0); + exp = &init; + + /* Skip any conversions since we'll be outputting the underlying + constant. */ + while (TREE_CODE (*exp) == NOP_EXPR || TREE_CODE (*exp) == CONVERT_EXPR + || TREE_CODE (*exp) == NON_LVALUE_EXPR) + exp = &TREE_OPERAND (*exp, 0); + + *exp = cplus_expand_constant (*exp); + + return init; + } /* Come here only for aggregates: records, arrays, unions, complex numbers and vectors. */ |