Fri Jul 16 13:48:09 1999 Jeffrey A Law (law@cygnus.com)
+ * pa.c (compute_frame_size): Use UNITS_PER_WORD instead of hardwired
+ value of 4. Allocate 8 bytes for each FP register save.
+ (hppa_expand_epilogue): Use UNITS_PER_WORD instead of harwarewired
+ value of 4.
+ (hppa_expand_prologue): Likewise.
+ * pa.h (PROMOTE_MODE): Likewise.
+ (HARD_REGNO_MODE_OK, FUNCTION_ARG_SIZE): Likewise.
+ (FUNCTION_ARG_BOUNDARY): Likewise.
+
* invoke.texi (HPPA Options): Remove -mspace/-mno-space.
* pa.c (out_of_line_prologue_epilogue): Delete.
for (i = 18; i >= 3; i--)
if (regs_ever_live[i])
{
- fsize += 4;
+ fsize += UNITS_PER_WORD;
break;
}
if (fregs_live)
*fregs_live = 1;
- fsize += 4;
+ fsize += 8;
break;
}
if (regs_ever_live[i] && ! call_used_regs[i])
{
store_reg (i, offset, FRAME_POINTER_REGNUM);
- offset += 4;
+ offset += UNITS_PER_WORD;
gr_saved++;
}
/* Account for %r3 which is saved in a special place. */
}
else
store_reg (i, offset, STACK_POINTER_REGNUM);
- offset += 4;
+ offset += UNITS_PER_WORD;
gr_saved++;
}
if (regs_ever_live[i] && ! call_used_regs[i])
{
load_reg (i, offset, FRAME_POINTER_REGNUM);
- offset += 4;
+ offset += UNITS_PER_WORD;
}
}
else
merge_sp_adjust_with_load = i;
else
load_reg (i, offset, STACK_POINTER_REGNUM);
- offset += 4;
+ offset += UNITS_PER_WORD;
}
}
}
#define PROMOTE_MODE(MODE,UNSIGNEDP,TYPE) \
if (GET_MODE_CLASS (MODE) == MODE_INT \
- && GET_MODE_SIZE (MODE) < 4) \
+ && GET_MODE_SIZE (MODE) < UNITS_PER_WORD) \
(MODE) = SImode;
/* Define this if most significant bit is lowest numbered
: !TARGET_PA_11 && FP_REGNO_P (REGNO) \
? GET_MODE_SIZE (MODE) <= 4 || GET_MODE_CLASS (MODE) == MODE_FLOAT \
/* Make wide modes be in aligned registers. */ \
- : GET_MODE_SIZE (MODE) <= 4 || ((REGNO) & 1) == 0)
+ : GET_MODE_SIZE (MODE) <= UNITS_PER_WORD || ((REGNO) & 1) == 0)
/* Value is 1 if it is a good idea to tie two pseudo registers
when one has mode MODE1 and one has mode MODE2.
/* Figure out the size in words of the function argument. */
#define FUNCTION_ARG_SIZE(MODE, TYPE) \
- ((((MODE) != BLKmode ? GET_MODE_SIZE (MODE) : int_size_in_bytes (TYPE))+3)/4)
+ ((((MODE) != BLKmode \
+ ? GET_MODE_SIZE (MODE) \
+ : int_size_in_bytes (TYPE)) + UNITS_PER_WORD - 1) / UNITS_PER_WORD)
/* Update the data in CUM to advance over an argument
of mode MODE and data type TYPE.
#define FUNCTION_ARG_BOUNDARY(MODE, TYPE) \
(((TYPE) != 0) \
- ? (((int_size_in_bytes (TYPE)) + 3) / 4) * BITS_PER_WORD \
+ ? (((int_size_in_bytes (TYPE)) + UNITS_PER_WORD - 1) \
+ / UNITS_PER_WORD) * BITS_PER_WORD \
: ((GET_MODE_ALIGNMENT(MODE) <= PARM_BOUNDARY) \
? PARM_BOUNDARY \
: GET_MODE_ALIGNMENT(MODE)))