2010-05-30 Jan Hubicka <jh@suse.cz>
+ * config/i386/i386.c (pro_epilogue_adjust_stack): Use EBP
+ for tail call epilogues.
+
+2010-05-30 Jan Hubicka <jh@suse.cz>
+
* passes.c (ipa_write_optimization_summaries_1, ipa_write_summaries_2,
ipa_read_summaries_1, ipa_read_optimization_summaries_1): Initilalize dump
files.
insn = emit_insn (gen_pro_epilogue_adjust_stack_rex64 (dest, src, offset));
else
{
- rtx r11;
+ rtx tmp;
/* r11 is used by indirect sibcall return as well, set before the
- epilogue and used after the epilogue. ATM indirect sibcall
- shouldn't be used together with huge frame sizes in one
- function because of the frame_size check in sibcall.c. */
- gcc_assert (style);
- r11 = gen_rtx_REG (DImode, R11_REG);
- insn = emit_insn (gen_rtx_SET (DImode, r11, offset));
+ epilogue and used after the epilogue. */
+ if (style)
+ tmp = gen_rtx_REG (DImode, R11_REG);
+ else
+ {
+ gcc_assert (src != hard_frame_pointer_rtx
+ && dest != hard_frame_pointer_rtx);
+ tmp = hard_frame_pointer_rtx;
+ }
+ insn = emit_insn (gen_rtx_SET (DImode, tmp, offset));
if (style < 0)
RTX_FRAME_RELATED_P (insn) = 1;
- insn = emit_insn (gen_pro_epilogue_adjust_stack_rex64_2 (dest, src, r11,
+ insn = emit_insn (gen_pro_epilogue_adjust_stack_rex64_2 (dest, src, tmp,
offset));
}