This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.
Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
---|---|---|
Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |
Other format: | [Raw text] |
On Fri, Oct 31, 2008 at 4:24 PM, H.J. Lu <hjl.tools@gmail.com> wrote: > On Fri, Oct 24, 2008 at 3:38 PM, H.J. Lu <hjl.tools@gmail.com> wrote: >> On Fri, Oct 17, 2008 at 10:06 AM, Uros Bizjak <ubizjak@gmail.com> wrote: >>> H.J. Lu wrote: >>> >>>> >>>> The problem is sibcall optimization will use the incoming stack >>>> boundary as the outgoing stack boundary. It is OK as long as >>>> the incoming stack boundary >= the outgoing stack boundary. >>>> ix86_function_ok_for_sibcall needs to know the precise incoming >>>> stack boundary, which is set in expand_stack_alignment, to >>>> check if the incoming stack boundary >= the outgoing stack >>>> boundary. >>>> >>>> This patch moves updating stack boundary before >>>> TARGET_FUNCTION_OK_FOR_SIBCALL is called. It >>>> changes cfgexpand.c and i386.c. OK for trunk? >>>> >>>> Thanks. >>>> >>>> 2008-10-15 H.J. Lu <hongjiu.lu@intel.com> >>>> Joey Ye <joey.ye@intel.com> >>>> >>>> PR target/37843 >>>> * cfgexpand.c (expand_stack_alignment): Move updating stack >>>> boundary to ... >>>> (gimple_expand_cfg): Here. >>>> >>>> * config/i386/i386.c (ix86_function_ok_for_sibcall): Return >>>> false if we need to align the outgoing stack. >>>> (ix86_update_stack_boundary): Check parm_stack_boundary. >>>> >>>> gcc/testsuite/ >>>> >>>> 2008-10-15 H.J. Lu <hongjiu.lu@intel.com> >>>> >>>> PR target/37843 >>>> * gcc.target/i386/align-main-3.c: New. >>>> * gcc.target/i386/pr37843-1.c: Likewise. >>>> * gcc.target/i386/pr37843-2.c: Likewise. >>>> * gcc.target/i386/pr37843-3.c: Likewise. >>> >>> x86 part is OK, but generic part needs middle-end review. >>> >>> Thanks, >>> Uros. >>> >> >> Could middle-end reviewers take a look at cfgexpand.c change? >> > Here is the updated version. When we update stack boundary before expanding a function, we don't need to check parm_stack_boundary in expand_stack_alignment. Tested on Linux/ia32, Linux/Intel64 and Linux/ia64. OK for trunk? Thanks. -- H.J. ---- gcc/ 2008-11-04 H.J. Lu <hongjiu.lu@intel.com> Joey Ye <joey.ye@intel.com> PR middle-end/37843 * cfgexpand.c (expand_stack_alignment): Don't update stack boundary nor check incoming stack boundary here. (gimple_expand_cfg): Update stack boundary and check incoming stack boundary here. * config/i386/i386.c (ix86_function_ok_for_sibcall): Return false if we need to align the outgoing stack. (ix86_update_stack_boundary): Check parm_stack_boundary. gcc/testsuite/ 2008-11-04 H.J. Lu <hongjiu.lu@intel.com> PR middle-end/37843 * gcc.target/i386/align-main-3.c: New. * gcc.target/i386/pr37843-1.c: Likewise. * gcc.target/i386/pr37843-2.c: Likewise. * gcc.target/i386/pr37843-3.c: Likewise.
Attachment:
gcc-sibcall-3.patch
Description: Binary data
Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
---|---|---|
Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |