This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
Re: PATCH: Turn on -fomit-frame-pointer by default for 32bit Linux/x86
- From: "H.J. Lu" <hjl dot tools at gmail dot com>
- To: Uros Bizjak <ubizjak at gmail dot com>
- Cc: GCC Patches <gcc-patches at gcc dot gnu dot org>, Richard Guenther <rguenther at suse dot de>, Jakub Jelinek <jakub at redhat dot com>, Mark Mitchell <mark at codesourcery dot com>, Richard Henderson <rth at redhat dot com>, jh at suse dot cz, Andi Kleen <andi at firstfloor dot org>, Andrew Haley <aph at redhat dot com>, David Daney <ddaney at caviumnetworks dot com>, Xinliang David Li <davidxl at google dot com>, Chris Lattner <clattner at apple dot com>
- Date: Thu, 12 Aug 2010 09:43:09 -0700
- Subject: Re: PATCH: Turn on -fomit-frame-pointer by default for 32bit Linux/x86
- References: <AANLkTinbviPWO-hDfgL=31x=st_LA2frCPPYXtscEAhX@mail.gmail.com> <AANLkTim1L=eJGVO92S8_g+VP1ZUF4-O2O8KBUMB1UcwB@mail.gmail.com>
On Thu, Aug 12, 2010 at 9:30 AM, Uros Bizjak <ubizjak@gmail.com> wrote:
> On Thu, Aug 12, 2010 at 6:19 PM, H.J. Lu <hjl.tools@gmail.com> wrote:
>
>> 2010-08-12 ?H.J. Lu ?<hongjiu.lu@intel.com>
>> ? ? ? ? ? ?Uros Bizjak ?<ubizjak@gmail.com>
>>
>> ? ? ? ?* config.gcc: Handle --enable-frame-pointer.
>>
>> ? ? ? ?* configure.ac: Add --enable-frame-pointer.
>> ? ? ? ?* configure: Regenerated.
>>
>> ? ? ? ?* config/i386/i386.c (USE_IX86_FRAME_POINTER): Default to 0.
>> ? ? ? ?(override_options): Enable -fomit-frame-pointer for 32bit code
>> ? ? ? ?if compiling for TARGET_MACHO and not optimizing for size
>> ? ? ? ?unless configured with --enable-frame-pointer. ?Enable
>> ? ? ? ?-fasynchronous-unwind-tables unless configured with
>> ? ? ? ?--enable-frame-pointer. ?Enable -maccumulate-outgoing-args
>> ? ? ? ?by default unless configured with --enable-frame-pointer.
>>
>
> Please change the ChangeLog text to something like:
>
> If not configured with --enable-frame-pointer, enable
> -fomit-frame-pointer (but not for TARGET_MACHO or when optimizing for
> size), enable -fasynchronous-unwind-tables and
> -maccumulate-outgoing-args by default.
>
I checked it in with updated ChangeLog.
How should we document it? We currently have
--
@item -fomit-frame-pointer
@opindex fomit-frame-pointer
Don't keep the frame pointer in a register for functions that
don't need one. This avoids the instructions to save, set up and
restore frame pointers; it also makes an extra register available
in many functions. @strong{It also makes debugging impossible on
some machines.}
On some machines, such as the VAX, this flag has no effect, because
the standard calling sequence automatically handles the frame pointer
and nothing is saved by pretending it doesn't exist. The
machine-description macro @code{FRAME_POINTER_REQUIRED} controls
whether a target machine supports this flag. @xref{Registers,,Register
Usage, gccint, GNU Compiler Collection (GCC) Internals}.
Enabled at levels @option{-O}, @option{-O2}, @option{-O3}, @option{-Os}.
--
It was never correct for x86 and is wrong today.
--
H.J.