mirror of
git://gcc.gnu.org/git/gcc.git
synced 2025-04-10 18:20:51 +08:00
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
This commit is contained in:
parent
3e60eff0f3
commit
12487dd07e
@ -1,3 +1,21 @@
|
||||
2007-09-27 Ollie Wild <aaw@google.com>
|
||||
|
||||
* 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.
|
||||
|
||||
2007-09-27 John David Anglin <dave.anglin@nrc-cnrc.gc.ca>
|
||||
|
||||
PR middle-end/33436
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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)
|
||||
|
@ -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. */
|
||||
|
@ -41,7 +41,6 @@ extern void lhd_do_nothing_i (int);
|
||||
extern void lhd_do_nothing_f (struct function *);
|
||||
extern bool lhd_post_options (const char **);
|
||||
extern alias_set_type lhd_get_alias_set (tree);
|
||||
extern tree lhd_return_tree (tree);
|
||||
extern tree lhd_return_null_tree_v (void);
|
||||
extern tree lhd_return_null_tree (tree);
|
||||
extern tree lhd_return_null_const_tree (const_tree);
|
||||
@ -93,7 +92,6 @@ extern void lhd_omp_firstprivatize_type_sizes (struct gimplify_omp_ctx *,
|
||||
#define LANG_HOOKS_MISSING_ARGUMENT hook_bool_constcharptr_size_t_false
|
||||
#define LANG_HOOKS_POST_OPTIONS lhd_post_options
|
||||
#define LANG_HOOKS_GET_ALIAS_SET lhd_get_alias_set
|
||||
#define LANG_HOOKS_EXPAND_CONSTANT lhd_return_tree
|
||||
#define LANG_HOOKS_EXPAND_EXPR lhd_expand_expr
|
||||
#define LANG_HOOKS_EXPAND_DECL lhd_expand_decl
|
||||
#define LANG_HOOKS_FINISH_INCOMPLETE_DECL lhd_do_nothing_t
|
||||
@ -250,7 +248,6 @@ extern tree lhd_make_node (enum tree_code);
|
||||
LANG_HOOKS_PARSE_FILE, \
|
||||
LANG_HOOKS_CLEAR_BINDING_STACK, \
|
||||
LANG_HOOKS_GET_ALIAS_SET, \
|
||||
LANG_HOOKS_EXPAND_CONSTANT, \
|
||||
LANG_HOOKS_EXPAND_EXPR, \
|
||||
LANG_HOOKS_EXPAND_DECL, \
|
||||
LANG_HOOKS_FINISH_INCOMPLETE_DECL, \
|
||||
|
@ -76,14 +76,6 @@ lhd_do_nothing_f (struct function * ARG_UNUSED (f))
|
||||
{
|
||||
}
|
||||
|
||||
/* Do nothing (return the tree node passed). */
|
||||
|
||||
tree
|
||||
lhd_return_tree (tree t)
|
||||
{
|
||||
return t;
|
||||
}
|
||||
|
||||
/* Do nothing (return NULL_TREE). */
|
||||
|
||||
tree
|
||||
|
@ -287,11 +287,6 @@ struct lang_hooks
|
||||
Returns -1 if the language does nothing special for it. */
|
||||
alias_set_type (*get_alias_set) (tree);
|
||||
|
||||
/* Called with an expression that is to be processed as a constant.
|
||||
Returns either the same expression or a language-independent
|
||||
constant equivalent to its input. */
|
||||
tree (*expand_constant) (tree);
|
||||
|
||||
/* Called by expand_expr for language-specific tree codes.
|
||||
Fourth argument is actually an enum expand_modifier. */
|
||||
rtx (*expand_expr) (tree, rtx, enum machine_mode, int, rtx *);
|
||||
|
37
gcc/varasm.c
37
gcc/varasm.c
@ -2985,15 +2985,7 @@ compare_constant (const tree t1, const tree t2)
|
||||
return compare_constant (TREE_OPERAND (t1, 0), TREE_OPERAND (t2, 0));
|
||||
|
||||
default:
|
||||
{
|
||||
tree nt1, nt2;
|
||||
nt1 = lang_hooks.expand_constant (t1);
|
||||
nt2 = lang_hooks.expand_constant (t2);
|
||||
if (nt1 != t1 || nt2 != t2)
|
||||
return compare_constant (nt1, nt2);
|
||||
else
|
||||
return 0;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
gcc_unreachable ();
|
||||
@ -3061,12 +3053,7 @@ copy_constant (tree exp)
|
||||
}
|
||||
|
||||
default:
|
||||
{
|
||||
tree t = lang_hooks.expand_constant (exp);
|
||||
|
||||
gcc_assert (t != exp);
|
||||
return copy_constant (t);
|
||||
}
|
||||
gcc_unreachable ();
|
||||
}
|
||||
}
|
||||
|
||||
@ -3910,10 +3897,6 @@ compute_reloc_for_constant (tree exp)
|
||||
int reloc = 0, reloc2;
|
||||
tree tem;
|
||||
|
||||
/* Give the front-end a chance to convert VALUE to something that
|
||||
looks more like a constant to the back-end. */
|
||||
exp = lang_hooks.expand_constant (exp);
|
||||
|
||||
switch (TREE_CODE (exp))
|
||||
{
|
||||
case ADDR_EXPR:
|
||||
@ -3978,10 +3961,6 @@ output_addressed_constants (tree exp)
|
||||
{
|
||||
tree tem;
|
||||
|
||||
/* Give the front-end a chance to convert VALUE to something that
|
||||
looks more like a constant to the back-end. */
|
||||
exp = lang_hooks.expand_constant (exp);
|
||||
|
||||
switch (TREE_CODE (exp))
|
||||
{
|
||||
case ADDR_EXPR:
|
||||
@ -4055,10 +4034,6 @@ constructor_static_from_elts_p (const_tree ctor)
|
||||
tree
|
||||
initializer_constant_valid_p (tree value, tree endtype)
|
||||
{
|
||||
/* Give the front-end a chance to convert VALUE to something that
|
||||
looks more like a constant to the back-end. */
|
||||
value = lang_hooks.expand_constant (value);
|
||||
|
||||
switch (TREE_CODE (value))
|
||||
{
|
||||
case CONSTRUCTOR:
|
||||
@ -4317,11 +4292,6 @@ output_constant (tree exp, unsigned HOST_WIDE_INT size, unsigned int align)
|
||||
enum tree_code code;
|
||||
unsigned HOST_WIDE_INT thissize;
|
||||
|
||||
/* Some front-ends use constants other than the standard language-independent
|
||||
varieties, but which may still be output directly. Give the front-end a
|
||||
chance to convert EXP to a language-independent representation. */
|
||||
exp = lang_hooks.expand_constant (exp);
|
||||
|
||||
if (size == 0 || flag_syntax_only)
|
||||
return;
|
||||
|
||||
@ -4378,9 +4348,6 @@ output_constant (tree exp, unsigned HOST_WIDE_INT size, unsigned int align)
|
||||
code = TREE_CODE (TREE_TYPE (exp));
|
||||
thissize = int_size_in_bytes (TREE_TYPE (exp));
|
||||
|
||||
/* Give the front end another chance to expand constants. */
|
||||
exp = lang_hooks.expand_constant (exp);
|
||||
|
||||
/* Allow a constructor with no elements for any data type.
|
||||
This means to fill the space with zeros. */
|
||||
if (TREE_CODE (exp) == CONSTRUCTOR
|
||||
|
Loading…
x
Reference in New Issue
Block a user