aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRichard Stallman <rms@gnu.org>1992-09-19 04:46:22 +0000
committerRichard Stallman <rms@gnu.org>1992-09-19 04:46:22 +0000
commit7e41ffa25cd93e2ec0fdd2db4b1199c48870530a (patch)
tree4c9b76f26ef3904a482ff7c336e2cc0467820790
parent73bdfabc83517cdc34da831196b222c80149e398 (diff)
downloadgcc-7e41ffa25cd93e2ec0fdd2db4b1199c48870530a.zip
gcc-7e41ffa25cd93e2ec0fdd2db4b1199c48870530a.tar.gz
gcc-7e41ffa25cd93e2ec0fdd2db4b1199c48870530a.tar.bz2
(assign_parms): Set MEM_IN_STRUCT_P right in stack slots.
From-SVN: r2157
-rw-r--r--gcc/function.c21
1 files changed, 17 insertions, 4 deletions
diff --git a/gcc/function.c b/gcc/function.c
index 753931d..dbc9004 100644
--- a/gcc/function.c
+++ b/gcc/function.c
@@ -2859,8 +2859,14 @@ assign_parms (fndecl, second_time)
if it becomes a problem. */
if (stack_parm == 0)
- stack_parm
- = assign_stack_local (GET_MODE (entry_parm), size_stored, 0);
+ {
+ stack_parm
+ = assign_stack_local (GET_MODE (entry_parm), size_stored, 0);
+ /* If this is a memory ref that contains aggregate components,
+ mark it as such for cse and loop optimize. */
+ MEM_IN_STRUCT_P (stack_parm) = aggregate;
+ }
+
else if (PARM_BOUNDARY % BITS_PER_WORD != 0)
abort ();
@@ -2989,8 +2995,15 @@ assign_parms (fndecl, second_time)
if (entry_parm != stack_parm)
{
if (stack_parm == 0)
- stack_parm = assign_stack_local (GET_MODE (entry_parm),
- GET_MODE_SIZE (GET_MODE (entry_parm)), 0);
+ {
+ stack_parm
+ = assign_stack_local (GET_MODE (entry_parm),
+ GET_MODE_SIZE (GET_MODE (entry_parm)), 0);
+ /* If this is a memory ref that contains aggregate components,
+ mark it as such for cse and loop optimize. */
+ MEM_IN_STRUCT_P (stack_parm) = aggregate;
+ }
+
emit_move_insn (validize_mem (stack_parm),
validize_mem (entry_parm));
}