aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRichard Kenner <kenner@gcc.gnu.org>1993-08-13 19:26:34 -0400
committerRichard Kenner <kenner@gcc.gnu.org>1993-08-13 19:26:34 -0400
commit34a25822f31ebd055230c65e3b5fba3044c62558 (patch)
treecd85b04caa0b7392cb1ece536f051999ea4a6938
parent8e90a239ee2967869df52c67bd952896dd70ecaf (diff)
downloadgcc-34a25822f31ebd055230c65e3b5fba3044c62558.zip
gcc-34a25822f31ebd055230c65e3b5fba3044c62558.tar.gz
gcc-34a25822f31ebd055230c65e3b5fba3044c62558.tar.bz2
(expand_expr, case SAVE_EXPR): Set MEM_IN_STRUCT_P appropriately when
the result is a MEM. From-SVN: r5159
-rw-r--r--gcc/expr.c12
1 files changed, 9 insertions, 3 deletions
diff --git a/gcc/expr.c b/gcc/expr.c
index 5d7eebd..71c21e6 100644
--- a/gcc/expr.c
+++ b/gcc/expr.c
@@ -3608,9 +3608,15 @@ expand_expr (exp, target, tmode, modifier)
if (SAVE_EXPR_RTL (exp) == 0)
{
if (mode == BLKmode)
- temp
- = assign_stack_temp (mode,
- int_size_in_bytes (TREE_TYPE (exp)), 0);
+ {
+ temp
+ = assign_stack_temp (mode, int_size_in_bytes (type), 0);
+ MEM_IN_STRUCT_P (temp)
+ = (TREE_CODE (type) == RECORD_TYPE
+ || TREE_CODE (type) == UNION_TYPE
+ || TREE_CODE (type) == QUAL_UNION_TYPE
+ || TREE_CODE (type) == ARRAY_TYPE);
+ }
else
{
enum machine_mode var_mode = mode;