Commit b552441b by Richard Stallman

*** empty log message ***

From-SVN: r805
parent 7f211789
...@@ -2935,11 +2935,27 @@ expand_expr (exp, target, tmode, modifier) ...@@ -2935,11 +2935,27 @@ expand_expr (exp, target, tmode, modifier)
switch (code) switch (code)
{ {
case LABEL_DECL: case LABEL_DECL:
if (modifier == EXPAND_INITIALIZER) {
forced_labels = gen_rtx (EXPR_LIST, VOIDmode, tree function = decl_function_context (exp);
label_rtx (exp), forced_labels); /* Handle using a label in a containing function. */
return gen_rtx (MEM, FUNCTION_MODE, if (function != current_function_decl && function != 0)
gen_rtx (LABEL_REF, Pmode, label_rtx (exp))); {
struct function *p = find_function_data (function);
/* Allocate in the memory associated with the function
that the label is in. */
push_obstacks (p->function_obstack,
p->function_maybepermanent_obstack);
p->forced_labels = gen_rtx (EXPR_LIST, VOIDmode,
label_rtx (exp), p->forced_labels);
pop_obstacks ();
}
else if (modifier == EXPAND_INITIALIZER)
forced_labels = gen_rtx (EXPR_LIST, VOIDmode,
label_rtx (exp), forced_labels);
return gen_rtx (MEM, FUNCTION_MODE,
gen_rtx (LABEL_REF, Pmode, label_rtx (exp)));
}
case PARM_DECL: case PARM_DECL:
if (DECL_RTL (exp) == 0) if (DECL_RTL (exp) == 0)
...@@ -3148,8 +3164,11 @@ expand_expr (exp, target, tmode, modifier) ...@@ -3148,8 +3164,11 @@ expand_expr (exp, target, tmode, modifier)
if (TREE_STATIC (exp) && (mode == BLKmode || TREE_ADDRESSABLE (exp))) if (TREE_STATIC (exp) && (mode == BLKmode || TREE_ADDRESSABLE (exp)))
{ {
rtx constructor = output_constant_def (exp); rtx constructor = output_constant_def (exp);
if (! memory_address_p (GET_MODE (constructor), if (modifier != EXPAND_CONST_ADDRESS
XEXP (constructor, 0))) && modifier != EXPAND_INITIALIZER
&& modifier != EXPAND_SUM
&& !memory_address_p (GET_MODE (constructor),
XEXP (constructor, 0)))
constructor = change_address (constructor, VOIDmode, constructor = change_address (constructor, VOIDmode,
XEXP (constructor, 0)); XEXP (constructor, 0));
return constructor; return constructor;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment