aboutsummaryrefslogtreecommitdiff
path: root/gcc/expr.c
diff options
context:
space:
mode:
authorJeffrey A Law <law@cygnus.com>1999-01-27 01:43:17 +0000
committerJeff Law <law@gcc.gnu.org>1999-01-26 18:43:17 -0700
commitab87f8c8d19d6b0954516d7f1d8733f42076be81 (patch)
treee7daf0f28ecb5da9660b21aee68e6919f846c183 /gcc/expr.c
parent01b4cf2b7a1fe9a3f6f070217be5f93854c54545 (diff)
downloadgcc-ab87f8c8d19d6b0954516d7f1d8733f42076be81.zip
gcc-ab87f8c8d19d6b0954516d7f1d8733f42076be81.tar.gz
gcc-ab87f8c8d19d6b0954516d7f1d8733f42076be81.tar.bz2
Merge in gcc2 snapshot 19980929. See gcc/ChangeLog and gcc/FSFChangeLog for
details. From-SVN: r24879
Diffstat (limited to 'gcc/expr.c')
-rw-r--r--gcc/expr.c17
1 files changed, 13 insertions, 4 deletions
diff --git a/gcc/expr.c b/gcc/expr.c
index ef0f685..4b53a55 100644
--- a/gcc/expr.c
+++ b/gcc/expr.c
@@ -4771,6 +4771,9 @@ get_inner_reference (exp, pbitsize, pbitpos, poffset, pmode,
else
{
mode = TYPE_MODE (TREE_TYPE (exp));
+ if (mode == BLKmode)
+ size_tree = TYPE_SIZE (TREE_TYPE (exp));
+
*pbitsize = GET_MODE_BITSIZE (mode);
*punsignedp = TREE_UNSIGNED (TREE_TYPE (exp));
}
@@ -5600,11 +5603,17 @@ expand_expr (exp, target, tmode, modifier)
p->forced_labels = gen_rtx_EXPR_LIST (VOIDmode,
label_rtx (exp),
p->forced_labels);
+ p->addresses_labels = 1;
pop_obstacks ();
}
- else if (modifier == EXPAND_INITIALIZER)
- forced_labels = gen_rtx_EXPR_LIST (VOIDmode,
- label_rtx (exp), forced_labels);
+ else
+ {
+ current_function_addresses_labels = 1;
+ if (modifier == EXPAND_INITIALIZER)
+ forced_labels = gen_rtx_EXPR_LIST (VOIDmode,
+ label_rtx (exp),
+ forced_labels);
+ }
temp = gen_rtx_MEM (FUNCTION_MODE,
gen_rtx_LABEL_REF (Pmode, label_rtx (exp)));
if (function != current_function_decl
@@ -6012,7 +6021,7 @@ expand_expr (exp, target, tmode, modifier)
case EXIT_BLOCK_EXPR:
if (EXIT_BLOCK_RETURN (exp))
- really_sorry ("returned value in block_exit_expr");
+ sorry ("returned value in block_exit_expr");
expand_goto (LABELED_BLOCK_LABEL (EXIT_BLOCK_LABELED_BLOCK (exp)));
return const0_rtx;