johannes 03/01/08 17:53:46
Modified: live/gcc3/gcc function.c
live/gcc3/gcc/config/rs6000 rs6000.c
Log:
roll in fix from FSF, fixes part of 3124973 (more is required)
Revision Changes Path
1.53 +7 -1 src/live/gcc3/gcc/function.c
Index: function.c
===================================================================
RCS file: /cvs/Darwin/src/live/gcc3/gcc/function.c,v
retrieving revision 1.52
retrieving revision 1.53
diff -u -r1.52 -r1.53
--- function.c 2002/12/18 00:31:55 1.52
+++ function.c 2003/01/09 01:53:38 1.53
@@ -4599,6 +4599,12 @@
if (nregs > 0)
{
+#if defined (REG_PARM_STACK_SPACE) && !defined (MAYBE_REG_PARM_STACK_SPACE)
+ /* When REG_PARM_STACK_SPACE is nonzero, stack space for
+ split parameters was allocated by our caller, so we
+ won't be pushing it in the prolog. */
+ if (REG_PARM_STACK_SPACE (fndecl) == 0)
+#endif
current_function_pretend_args_size
= (((nregs * UNITS_PER_WORD) + (PARM_BOUNDARY / BITS_PER_UNIT) - 1)
/ (PARM_BOUNDARY / BITS_PER_UNIT)
@@ -4758,7 +4764,7 @@
if (GET_CODE (entry_parm) == PARALLEL)
emit_group_store (validize_mem (stack_parm), entry_parm,
int_size_in_bytes (TREE_TYPE (parm)));
- else
+ else
move_block_from_reg (REGNO (entry_parm),
validize_mem (stack_parm),
size_stored / UNITS_PER_WORD,
1.184 +1 -4 src/live/gcc3/gcc/config/rs6000/rs6000.c
Index: rs6000.c
===================================================================
RCS file: /cvs/Darwin/src/live/gcc3/gcc/config/rs6000/rs6000.c,v
retrieving revision 1.183
retrieving revision 1.184
diff -u -r1.183 -r1.184
--- rs6000.c 2003/01/04 01:12:23 1.183
+++ rs6000.c 2003/01/09 01:53:41 1.184
@@ -4801,7 +4801,7 @@
CUMULATIVE_ARGS *cum;
enum machine_mode mode;
tree type;
- int *pretend_size;
+ int *pretend_size ATTRIBUTE_UNUSED;
int no_rtl;
{
@@ -4865,9 +4865,6 @@
(GP_ARG_MIN_REG + first_reg_offset, mem,
GP_ARG_NUM_REG - first_reg_offset,
(GP_ARG_NUM_REG - first_reg_offset) * UNITS_PER_WORD);
-
- /* ??? Does ABI_V4 need this at all? */
- *pretend_size = (GP_ARG_NUM_REG - first_reg_offset) * UNITS_PER_WORD;
}
/* Save FP registers if needed. */