===================================================================
@@ -9922,7 +9922,7 @@ expand_expr_real_1 (tree exp, rtx target
tree nt = build_qualified_type (TREE_TYPE (tem),
(TYPE_QUALS (TREE_TYPE (tem))
| TYPE_QUAL_CONST));
- memloc = assign_temp (nt, 1, 1, 1);
+ memloc = assign_temp (nt, 0, 1, 1);
emit_move_insn (memloc, op0);
op0 = memloc;
mem_attrs_from_type = true;
@@ -10425,6 +10425,7 @@ expand_expr_real_1 (tree exp, rtx target
case POSTDECREMENT_EXPR:
case LOOP_EXPR:
case EXIT_EXPR:
+ case COMPOUND_LITERAL_EXPR:
/* Lowered by gimplify.c. */
gcc_unreachable ();
@@ -10439,7 +10440,7 @@ expand_expr_real_1 (tree exp, rtx target
return expand_expr_real (treeop0, original_target, tmode,
modifier, alt_rtl);
- case COMPOUND_LITERAL_EXPR:
+#if 0
{
/* Initialize the anonymous variable declared in the compound
literal, then return the variable. */
@@ -10459,6 +10460,7 @@ expand_expr_real_1 (tree exp, rtx target
return expand_expr_real (decl, original_target, tmode,
modifier, alt_rtl);
}
+#endif
default:
return expand_expr_real_2 (&ops, target, tmode, modifier);
===================================================================
@@ -4788,11 +4788,8 @@ expand_function_start (tree subr)
tree t_save;
rtx r_save;
- /* ??? We need to do this save early. Unfortunately here is
- before the frame variable gets declared. Help out... */
tree var = TREE_OPERAND (cfun->nonlocal_goto_save_area, 0);
- if (!DECL_RTL_SET_P (var))
- expand_decl (var);
+ gcc_assert (DECL_RTL_SET_P (var));
t_save = build4 (ARRAY_REF,
TREE_TYPE (TREE_TYPE (cfun->nonlocal_goto_save_area)),
===================================================================
@@ -154,6 +154,12 @@ canonicalize_constructor_val (tree cval,
if (TREE_CODE (cval) == ADDR_EXPR)
{
tree base = get_base_address (TREE_OPERAND (cval, 0));
+ if (!base && TREE_CODE (TREE_OPERAND (cval, 0)) == COMPOUND_LITERAL_EXPR)
+ {
+ base = COMPOUND_LITERAL_EXPR_DECL (TREE_OPERAND (cval, 0));
+ if (base)
+ TREE_OPERAND (cval, 0) = base;
+ }
if (!base)
return NULL_TREE;
===================================================================
@@ -835,6 +835,9 @@ remove_unused_locals (void)
{
if (var_ann (var))
remove_referenced_var (var);
+ if (cfun->nonlocal_goto_save_area
+ && TREE_OPERAND (cfun->nonlocal_goto_save_area, 0) == var)
+ cfun->nonlocal_goto_save_area = NULL;
continue;
}
}
===================================================================
@@ -910,6 +910,8 @@ expand_asm_operands (tree string, tree o
at this point. Ignore it: clearly this *is* a memory. */
}
else
+ gcc_unreachable ();
+#if 0
{
warning (0, "use of memory input without lvalue in "
"asm operand %d is deprecated", i + noutputs);
@@ -935,6 +937,7 @@ expand_asm_operands (tree string, tree o
op = memloc;
}
}
+#endif
}
generating_concat_p = old_generating_concat_p;
@@ -1703,6 +1706,7 @@ expand_decl (tree decl)
type in case this node is used in a reference. */
if (TREE_CODE (decl) == CONST_DECL)
{
+ gcc_unreachable ();
DECL_MODE (decl) = TYPE_MODE (type);
DECL_ALIGN (decl) = TYPE_ALIGN (type);
DECL_SIZE (decl) = TYPE_SIZE (type);
@@ -1720,6 +1724,7 @@ expand_decl (tree decl)
if (TREE_STATIC (decl) || DECL_EXTERNAL (decl))
return;
+ gcc_unreachable ();
/* Create the RTL representation for the variable. */
if (type == error_mark_node)
===================================================================
@@ -544,8 +544,6 @@ extern tree build_modify_expr (location_
location_t, tree, tree);
extern tree build_indirect_ref (location_t, tree, ref_operator);
-extern int c_expand_decl (tree);
-
extern int field_decl_cmp (const void *, const void *);
extern void resort_sorted_fields (void *, void *, gt_pointer_operator,
void *);
===================================================================
@@ -535,7 +535,6 @@ extern void store_parm_decls (void);
extern void store_parm_decls_from (struct c_arg_info *);
extern tree xref_tag (enum tree_code, tree);
extern struct c_typespec parser_xref_tag (location_t, enum tree_code, tree);
-extern int c_expand_decl (tree);
extern struct c_parm *build_c_parm (struct c_declspecs *, tree,
struct c_declarator *);
extern struct c_declarator *build_attrs_declarator (tree,
===================================================================
@@ -2405,8 +2405,6 @@ expand_call (tree exp, rtx target, int i
specified. If we were to allocate space on the stack here,
we would have no way of knowing when to free it. */
rtx d = assign_temp (rettype, 0, 1, 1);
-
- mark_temp_addr_taken (d);
structure_value_addr = XEXP (d, 0);
target = 0;
}
===================================================================
@@ -2227,8 +2227,6 @@ create_var_decl_1 (tree var_name, tree a
if (global_bindings_p ())
rest_of_decl_compilation (var_decl, true, 0);
}
- else
- expand_decl (var_decl);
return var_decl;
}