diff options
author | Richard Stallman <rms@gnu.org> | 1992-09-19 04:46:22 +0000 |
---|---|---|
committer | Richard Stallman <rms@gnu.org> | 1992-09-19 04:46:22 +0000 |
commit | 7e41ffa25cd93e2ec0fdd2db4b1199c48870530a (patch) | |
tree | 4c9b76f26ef3904a482ff7c336e2cc0467820790 | |
parent | 73bdfabc83517cdc34da831196b222c80149e398 (diff) | |
download | gcc-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.c | 21 |
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)); } |