config/m32r/m32r.c (m32r_output_function_epilogue): Care for a large stack #
frame at epilogue. From-SVN: r101759
This commit is contained in:
parent
0921bc44f7
commit
6a7b00ad6d
|
@ -4,6 +4,9 @@
|
|||
(ENDFILE_SPEC): Likewise.
|
||||
* config/m32r/m32r.h (ASM_SPEC): Likewise.
|
||||
|
||||
* config/m32r/m32r.c (m32r_output_function_epilogue): Care for
|
||||
a large stack frame at epilogue.
|
||||
|
||||
2005-07-08 David Billinghurst <David.Billinghurst@riotinto.com>
|
||||
|
||||
* final.c: Include sdbout.h when required.
|
||||
|
|
|
@ -1532,11 +1532,19 @@ m32r_output_function_epilogue (FILE * file, HOST_WIDE_INT size ATTRIBUTE_UNUSED)
|
|||
else if (reg_offset < 32768)
|
||||
fprintf (file, "\tadd3 %s,%s,%s%d\n",
|
||||
sp_str, sp_str, IMMEDIATE_PREFIX, reg_offset);
|
||||
else
|
||||
else if (reg_offset < (1 << 24))
|
||||
fprintf (file, "\tld24 %s,%s%d\n\tadd %s,%s\n",
|
||||
reg_names[PROLOGUE_TMP_REGNUM],
|
||||
IMMEDIATE_PREFIX, reg_offset,
|
||||
sp_str, reg_names[PROLOGUE_TMP_REGNUM]);
|
||||
else
|
||||
fprintf (file, "\tseth %s,%s%d\n\tor3 %s,%s,%s%d\n\tadd %s,%s\n",
|
||||
reg_names[PROLOGUE_TMP_REGNUM],
|
||||
IMMEDIATE_PREFIX, reg_offset >> 16,
|
||||
reg_names[PROLOGUE_TMP_REGNUM],
|
||||
reg_names[PROLOGUE_TMP_REGNUM],
|
||||
IMMEDIATE_PREFIX, reg_offset & 0xffff,
|
||||
sp_str, reg_names[PROLOGUE_TMP_REGNUM]);
|
||||
}
|
||||
else if (frame_pointer_needed)
|
||||
{
|
||||
|
@ -1547,11 +1555,19 @@ m32r_output_function_epilogue (FILE * file, HOST_WIDE_INT size ATTRIBUTE_UNUSED)
|
|||
else if (reg_offset < 32768)
|
||||
fprintf (file, "\tadd3 %s,%s,%s%d\n",
|
||||
sp_str, fp_str, IMMEDIATE_PREFIX, reg_offset);
|
||||
else
|
||||
else if (reg_offset < (1 << 24))
|
||||
fprintf (file, "\tld24 %s,%s%d\n\tadd %s,%s\n",
|
||||
reg_names[PROLOGUE_TMP_REGNUM],
|
||||
IMMEDIATE_PREFIX, reg_offset,
|
||||
sp_str, reg_names[PROLOGUE_TMP_REGNUM]);
|
||||
else
|
||||
fprintf (file, "\tseth %s,%s%d\n\tor3 %s,%s,%s%d\n\tadd %s,%s\n",
|
||||
reg_names[PROLOGUE_TMP_REGNUM],
|
||||
IMMEDIATE_PREFIX, reg_offset >> 16,
|
||||
reg_names[PROLOGUE_TMP_REGNUM],
|
||||
reg_names[PROLOGUE_TMP_REGNUM],
|
||||
IMMEDIATE_PREFIX, reg_offset & 0xffff,
|
||||
sp_str, reg_names[PROLOGUE_TMP_REGNUM]);
|
||||
}
|
||||
else
|
||||
gcc_unreachable ();
|
||||
|
|
Loading…
Reference in New Issue