From 64a6fb275006cad125879af9db6dcbe991ebdf57 Mon Sep 17 00:00:00 2001 From: hubicka Date: Sun, 30 May 2010 12:14:49 +0000 Subject: [PATCH] * config/i386/i386.c (pro_epilogue_adjust_stack): Use EBP for tail call epilogues. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@160050 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/ChangeLog | 5 +++++ gcc/config/i386/i386.c | 20 ++++++++++++-------- 2 files changed, 17 insertions(+), 8 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 938ddbb..005db41 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,5 +1,10 @@ 2010-05-30 Jan Hubicka + * config/i386/i386.c (pro_epilogue_adjust_stack): Use EBP + for tail call epilogues. + +2010-05-30 Jan Hubicka + * passes.c (ipa_write_optimization_summaries_1, ipa_write_summaries_2, ipa_read_summaries_1, ipa_read_optimization_summaries_1): Initilalize dump files. diff --git a/gcc/config/i386/i386.c b/gcc/config/i386/i386.c index de291c7..76dace5 100644 --- a/gcc/config/i386/i386.c +++ b/gcc/config/i386/i386.c @@ -8363,17 +8363,21 @@ pro_epilogue_adjust_stack (rtx dest, rtx src, rtx offset, 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)); } -- 2.7.4