From mboxrd@z Thu Jan 1 00:00:00 1970 From: hjl@lucon.org (H.J. Lu) To: egcs@cygnus.com Cc: d.love@dl.ac.uk, pcg@goof.com Subject: Re: x86 stack alignment redux Date: Thu, 11 Dec 1997 23:40:00 -0000 Message-id: References: <16883.881910032@hurl.cygnus.com> X-SW-Source: 1997-12/msg00703.html > > 1997-11-13 Dave Love > > > > * config/i386/linux.h (STACK_BOUNDARY): Define as 64 for glibc2. > > * config/i386/gnu.h (STACK_BOUNDARY): Define as 64. > I installed this. I don't think it is a good idea. Please check out Marc's patch. > > However, I'm a little worried about things breaking if we happen to mix > code compiled with an old compiler (say egcs-1.0 or gcc-2.7) with code > which assumes a 64bit stack boundary. Isn't this change going to break > that case, or does the prologue/epilogue code for older compilers always > allocate 64bit hunks? > pcg@goof.com (Marc Lehmann) and I have discussed it a few months ago. There are several alignments. We should enable those which won't break old binaries by default. We only enable those which are not compatible with old binaries when asked for. Please check the egcs mail archive. I have forwarded Marc's patch to egcs at the beginning. I am enclosing the ChangeLog here: Thu Aug 7 22:30:59 1997 Marc Lehmann * i386.c (ix86_sp_offset, ix86_frame_size): New function. (function_prologue, ix86_expand_prologue, ix86_expand_epilogue): use ix86_frame_size () instead of get_frame_size (). * i386.h (MASK_STACK_ALIGN_DOUBLE, MASK_ARG_ALIGN_DOUBLE, TARGET_STACK_ALIGN_DOUBLE, TARGET_ARG_ALIGN_DOUBLE): new defines. (TARGET_SWITCHES): new switches -m[no-]stack-align-double, -m[no]-arg-align-double, -mall-align-double. -mstack-align-double enabled by default. (FUNCTION_ARG_BOUNDARY): align DFmode and XFmode arguments to 64 bit when -marg-align-double. (STACK_BOUNDARY, BIGGEST_ALIGNMENT): set to 64 if double-alignment requested. (INITIAL_ELIMINATION_OFFSET): use ix86_sp_offset () instead of get_frame_size (). -- H.J. Lu (hjl@gnu.org)