Re: -fomit-frame-pointer on intel darwin
Re: -fomit-frame-pointer on intel darwin
- Subject: Re: -fomit-frame-pointer on intel darwin
- From: Jack Howarth <email@hidden>
- Date: Mon, 16 Aug 2010 11:58:09 -0400
On Mon, Aug 16, 2010 at 10:59:36AM -0400, Jack Howarth wrote:
> Can anyone shed some light on the origins of the comments...
>
> /* Mach-O doesn't support omitting the frame pointer for now. */
>
> ...in gcc/config/i386/i386.c. FSF gcc trunk has enabled the
> omit-frame-pointer option as the default for both i386 and x86_64
> recently.
>
> * 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.
>
> After testing on x86_64-appled-darwin10 and i386-apple-darwin10, I
> had the same enabled on darwin releases which default to dwarf2
> now in FSF gcc trunk using...
>
> --- trunk/gcc/configure.ac 2010/08/13 15:50:40 163226
> +++ trunk/gcc/configure.ac 2010/08/13 17:06:42 163227
> @@ -1584,8 +1584,9 @@
> [ --enable-frame-pointer enable -fno-omit-frame-pointer by default for 32bit x86], [],
> [
> case $target_os in
> -linux*)
> - # Enable -fomit-frame-pointer by default for Linux.
> +linux* | darwin[[8912]]*)
> + # Enable -fomit-frame-pointer by default for Linux and Darwin with
> + # DWARF2.
> enable_frame_pointer=no
> ;;
> *)
> --- trunk/gcc/config/i386/i386.c 2010/08/13 15:50:40 163226
> +++ trunk/gcc/config/i386/i386.c 2010/08/13 17:06:42 163227
> @@ -3276,9 +3276,8 @@
> {
> if (flag_zee == 2)
> flag_zee = 1;
> - /* Mach-O doesn't support omitting the frame pointer for now. */
> if (flag_omit_frame_pointer == 2)
> - flag_omit_frame_pointer = (TARGET_MACHO ? 0 : 1);
> + flag_omit_frame_pointer = 1;
> if (flag_asynchronous_unwind_tables == 2)
> flag_asynchronous_unwind_tables = 1;
> if (flag_pcc_struct_return == 2)
> @@ -3288,10 +3287,8 @@
> {
> if (flag_zee == 2)
> flag_zee = 0;
> - /* Mach-O doesn't support omitting the frame pointer for now. */
> if (flag_omit_frame_pointer == 2)
> - flag_omit_frame_pointer =
> - (TARGET_MACHO ? 0 : !(USE_IX86_FRAME_POINTER || optimize_size));
> + flag_omit_frame_pointer = !(USE_IX86_FRAME_POINTER || optimize_size);
> if (flag_asynchronous_unwind_tables == 2)
> flag_asynchronous_unwind_tables = !USE_IX86_FRAME_POINTER;
> if (flag_pcc_struct_return == 2)
>
> Despite the absence of testsuite failures at -m32 or -m64 on either
> i386-apple-darwin10 or x86_64-apple-darwin10, there are still some concerns
> about the origins of the original Mach-O comment above. There also was
> a concern that -fomit-frame-pointer would break Shark but my testing in
> darwin10 suggests it still can profile code via the dwarf2. Thanks in
> advance for any clarifications on the reasoning behind the original code.
> Jack
>
I traced back these changes to Eric Chritopher's commit to FSF gcc 4.2 of...
2006-09-08 Eric Christopher <email@hidden>
* config.gcc (i?86-*-darwin): Add 64-bit HWI support.
* config/t-slibgcc-darwin: Support x86_64 multilib.
* config/i386/i386.h (JUMP_TABLES_IN_TEXT_SECTION):
Return 1 for x86_64-darwin.
* config/i386/t-darwin: Add m64 multilib.
(LIB2_SIDITI_CONV_FUNCS): Use.
(LIB2FUNCS_EXTRA): Ditto.
* config/i386/darwin.h: Support x86_64.
* config/i386/i386.c (override_options): Turn on flag_pic
for x86_64-darwin. Disable flag_omit_pointer.
(get_pc_thunk_name): Assert !TARGET_64BIT.
(legitimate_address_p): Disable machopic addressing for
x86_64.
(legitimize_pic_address): Ditto.
(ix86_expand_move): Ditto.
(ix86_expand_call): Ditto.
(machopic_output_stub): Ditto.
* config/darwin.c (machopic_select_section): Support literal16.
(machopic_select_rtx_section): Ditto.
* config/darwin-sections.def: Ditto.
* config/darwin-64.c: New.
2006-09-08 Eric Christopher <email@hidden>
* gcc.target/i386/20060512-3.c: Run test on ilp32 only.
* gcc.target/i386/memcpy-1.c: Ditto.
* gcc.target/i386/asm-1.c: Ditto.
* gcc.target/i386/20060512-4.c: Ditto.
* gcc.target/i386/compress-float-387.c: Ditto.
* gcc.target/i386/20060512-1.c: Ditto.
* gcc.target/i386/compress-float-sse.c: Ditto.
* gcc.target/i386/20060512-2.c: Ditto.
* gcc.target/i386/compress-float-sse-pic.c: Ditto.
* gcc.target/i386/stack-prot-kernel.c: Ditto.
* gcc.target/i386/compress-float-387-pic.c: Ditto.
* gcc.dg/pr26449.c: Ditto.
* gcc.dg/attr-ms_struct-2.c: Ditto.
* gcc.dg/attr-ms_struct-1.c: Ditto.
* gcc.misc-tests/linkage.exp: Fix 64-bit darwin support.
2006-09-08 Eric Christopher <email@hidden>
* configure.ac: Add 64-bit HWI support for i?86-darwin.
Perhaps he can comment further on the relevance of the...
* config/i386/i386.c (override_options): Turn on flag_pic
for x86_64-darwin. Disable flag_omit_pointer.
change now under dwarf2 in darwin8, darwin9 amd darwin10.
Jack
> _______________________________________________
> Do not post admin requests to the list. They will be ignored.
> Xcode-users mailing list (email@hidden)
> Help/Unsubscribe/Update your Subscription:
>
> This email sent to email@hidden
_______________________________________________
Do not post admin requests to the list. They will be ignored.
Xcode-users mailing list (email@hidden)
Help/Unsubscribe/Update your Subscription:
This email sent to email@hidden