diff options
author | Wilco Dijkstra <wdijkstr@arm.com> | 2017-11-16 11:44:30 +0000 |
---|---|---|
committer | Wilco Dijkstra <wilco@gcc.gnu.org> | 2017-11-16 11:44:30 +0000 |
commit | efeee67f4c9fd021d2594e0271c84b7e90e63d3d (patch) | |
tree | 432424fb9e6c33f3153f0e3ae0eda180a2acf6af | |
parent | 9e780144ce070e286c4a0d467ed170408e1b3b47 (diff) | |
download | gcc-efeee67f4c9fd021d2594e0271c84b7e90e63d3d.zip gcc-efeee67f4c9fd021d2594e0271c84b7e90e63d3d.tar.gz gcc-efeee67f4c9fd021d2594e0271c84b7e90e63d3d.tar.bz2 |
Set default to -fomit-frame-pointer
Almost all targets add an explict -fomit-frame-pointer in the target specific
options. Rather than doing this in a target-specific way, do this in the
generic options so it works identically across all targets. In many cases the
target no longer needs to define TARGET_OPTION_OPTIMIZATION_TABLE, reducing
the amount of target code.
gcc/
* opts.c (default_options_table): Add OPT_fomit_frame_pointer entry.
* common/config/alpha/alpha-common.c (TARGET_OPTION_OPTIMIZATION_TABLE):
Remove OPT_fomit_frame_pointer entry.
* common/config/arc/arc-common.c: Likewise.
* common/config/arm/arm-common.c: Likewise.
* common/config/avr/avr-common.c: Likewise.
* common/config/c6x/c6x-common.c: Likewise.
* common/config/cr16/cr16-common.c: Likewise.
* common/config/cris/cris-common.c: Likewise.
* common/config/epiphany/epiphany-common.c: Likewise.
* common/config/fr30/fr30-common.c: Likewise.
* common/config/frv/frv-common.c: Likewise.
* common/config/ia64/ia64-common.c: Likewise.
* common/config/iq2000/iq2000-common.c: Likewise.
* common/config/lm32/lm32-common.c: Likewise.
* common/config/m32r/m32r-common.c: Likewise.
* common/config/mcore/mcore-common.c: Likewise.
* common/config/microblaze/microblaze-common.c: Likewise.
* common/config/mips/mips-common.c: Likewise.
* common/config/mmix/mmix-common.c: Likewise.
* common/config/mn10300/mn10300-common.c: Likewise.
* common/config/nios2/nios2-common.c: Likewise.
* common/config/pa/pa-common.c: Likewise.
* common/config/pdp11/pdp11-common.c: Likewise.
* common/config/powerpcspe/powerpcspe-common.c: Likewise.
* common/config/riscv/riscv-common.c: Likewise.
* common/config/rs6000/rs6000-common.c: Likewise.
* common/config/rx/rx-common.c: Likewise.
* common/config/s390/s390-common.c: Likewise.
* common/config/sh/sh-common.c: Likewise.
* common/config/sparc/sparc-common.c: Likewise.
* common/config/tilegx/tilegx-common.c: Likewise.
* common/config/tilepro/tilepro-common.c: Likewise.
* common/config/v850/v850-common.c: Likewise.
* common/config/visium/visium-common.c: Likewise.
* common/config/xstormy16/xstormy16-common.c: Likewise.
* common/config/xtensa/xtensa-common.c: Likewise.
doc/
* invoke.texi (-fomit-frame-pointer): Update documentation.
From-SVN: r254815
38 files changed, 55 insertions, 196 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index eaf4c8e..f9a4293 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,44 @@ +2017-11-16 Wilco Dijkstra <wdijkstr@arm.com> + + * opts.c (default_options_table): Add OPT_fomit_frame_pointer entry. + * common/config/alpha/alpha-common.c (TARGET_OPTION_OPTIMIZATION_TABLE): + Remove OPT_fomit_frame_pointer entry. + * common/config/arc/arc-common.c: Likewise. + * common/config/arm/arm-common.c: Likewise. + * common/config/avr/avr-common.c: Likewise. + * common/config/c6x/c6x-common.c: Likewise. + * common/config/cr16/cr16-common.c: Likewise. + * common/config/cris/cris-common.c: Likewise. + * common/config/epiphany/epiphany-common.c: Likewise. + * common/config/fr30/fr30-common.c: Likewise. + * common/config/frv/frv-common.c: Likewise. + * common/config/ia64/ia64-common.c: Likewise. + * common/config/iq2000/iq2000-common.c: Likewise. + * common/config/lm32/lm32-common.c: Likewise. + * common/config/m32r/m32r-common.c: Likewise. + * common/config/mcore/mcore-common.c: Likewise. + * common/config/microblaze/microblaze-common.c: Likewise. + * common/config/mips/mips-common.c: Likewise. + * common/config/mmix/mmix-common.c: Likewise. + * common/config/mn10300/mn10300-common.c: Likewise. + * common/config/nios2/nios2-common.c: Likewise. + * common/config/pa/pa-common.c: Likewise. + * common/config/pdp11/pdp11-common.c: Likewise. + * common/config/powerpcspe/powerpcspe-common.c: Likewise. + * common/config/riscv/riscv-common.c: Likewise. + * common/config/rs6000/rs6000-common.c: Likewise. + * common/config/rx/rx-common.c: Likewise. + * common/config/s390/s390-common.c: Likewise. + * common/config/sh/sh-common.c: Likewise. + * common/config/sparc/sparc-common.c: Likewise. + * common/config/tilegx/tilegx-common.c: Likewise. + * common/config/tilepro/tilepro-common.c: Likewise. + * common/config/v850/v850-common.c: Likewise. + * common/config/visium/visium-common.c: Likewise. + * common/config/xstormy16/xstormy16-common.c: Likewise. + * common/config/xtensa/xtensa-common.c: Likewise. + * invoke.texi (-fomit-frame-pointer): Update documentation. + 2017-11-16 Jan Hubicka <hubicka@ucw.cz> * tree-cfg.c (gimple_find_sub_bbs): Do not compute freq. diff --git a/gcc/common/config/alpha/alpha-common.c b/gcc/common/config/alpha/alpha-common.c index be42282..3a7d28d 100644 --- a/gcc/common/config/alpha/alpha-common.c +++ b/gcc/common/config/alpha/alpha-common.c @@ -30,7 +30,6 @@ along with GCC; see the file COPYING3. If not see /* Implement TARGET_OPTION_OPTIMIZATION_TABLE. */ static const struct default_options alpha_option_optimization_table[] = { - { OPT_LEVELS_1_PLUS, OPT_fomit_frame_pointer, NULL, 1 }, /* Enable redundant extension instructions removal at -O2 and higher. */ { OPT_LEVELS_2_PLUS, OPT_free, NULL, 1 }, { OPT_LEVELS_NONE, 0, NULL, 0 } diff --git a/gcc/common/config/arc/arc-common.c b/gcc/common/config/arc/arc-common.c index 82e0dd3..c437313 100644 --- a/gcc/common/config/arc/arc-common.c +++ b/gcc/common/config/arc/arc-common.c @@ -47,7 +47,6 @@ arc_option_init_struct (struct gcc_options *opts) static const struct default_options arc_option_optimization_table[] = { { OPT_LEVELS_SIZE, OPT_fsection_anchors, NULL, 1 }, - { OPT_LEVELS_1_PLUS, OPT_fomit_frame_pointer, NULL, 1 }, { OPT_LEVELS_ALL, OPT_mRcq, NULL, 1 }, { OPT_LEVELS_ALL, OPT_mRcw, NULL, 1 }, { OPT_LEVELS_ALL, OPT_msize_level_, NULL, 1 }, diff --git a/gcc/common/config/arm/arm-common.c b/gcc/common/config/arm/arm-common.c index 1588ca86..5ae20fe 100644 --- a/gcc/common/config/arm/arm-common.c +++ b/gcc/common/config/arm/arm-common.c @@ -36,7 +36,6 @@ static const struct default_options arm_option_optimization_table[] = { /* Enable section anchors by default at -O1 or higher. */ { OPT_LEVELS_1_PLUS, OPT_fsection_anchors, NULL, 1 }, - { OPT_LEVELS_1_PLUS, OPT_fomit_frame_pointer, NULL, 1 }, { OPT_LEVELS_1_PLUS, OPT_fsched_pressure, NULL, 1 }, { OPT_LEVELS_NONE, 0, NULL, 0 } }; diff --git a/gcc/common/config/avr/avr-common.c b/gcc/common/config/avr/avr-common.c index 4bee9d6..9bf0e0d 100644 --- a/gcc/common/config/avr/avr-common.c +++ b/gcc/common/config/avr/avr-common.c @@ -27,7 +27,6 @@ /* Implement TARGET_OPTION_OPTIMIZATION_TABLE. */ static const struct default_options avr_option_optimization_table[] = { - { OPT_LEVELS_1_PLUS, OPT_fomit_frame_pointer, NULL, 1 }, // The only effect of -fcaller-saves might be that it triggers // a frame without need when it tries to be smart around calls. { OPT_LEVELS_ALL, OPT_fcaller_saves, NULL, 0 }, diff --git a/gcc/common/config/c6x/c6x-common.c b/gcc/common/config/c6x/c6x-common.c index 3de96a0..ec698a8 100644 --- a/gcc/common/config/c6x/c6x-common.c +++ b/gcc/common/config/c6x/c6x-common.c @@ -32,7 +32,6 @@ along with GCC; see the file COPYING3. If not see /* Implement overriding of the optimization options. */ static const struct default_options c6x_option_optimization_table[] = { - { OPT_LEVELS_1_PLUS, OPT_fomit_frame_pointer, NULL, 1 }, { OPT_LEVELS_1_PLUS, OPT_frename_registers, NULL, 1 }, { OPT_LEVELS_2_PLUS, OPT_fmodulo_sched, NULL, 1 }, { OPT_LEVELS_ALL, OPT_freciprocal_math, NULL, 1 }, diff --git a/gcc/common/config/cr16/cr16-common.c b/gcc/common/config/cr16/cr16-common.c index 620a812..a106fcb 100644 --- a/gcc/common/config/cr16/cr16-common.c +++ b/gcc/common/config/cr16/cr16-common.c @@ -24,14 +24,4 @@ #include "common/common-target.h" #include "common/common-target-def.h" -/* Implement TARGET_OPTION_OPTIMIZATION_TABLE. */ -static const struct default_options cr16_option_optimization_table[] = - { - { OPT_LEVELS_1_PLUS, OPT_fomit_frame_pointer, NULL, 1 }, - { OPT_LEVELS_NONE, 0, NULL, 0 } - }; - -#undef TARGET_OPTION_OPTIMIZATION_TABLE -#define TARGET_OPTION_OPTIMIZATION_TABLE cr16_option_optimization_table - struct gcc_targetm_common targetm_common = TARGETM_COMMON_INITIALIZER; diff --git a/gcc/common/config/cris/cris-common.c b/gcc/common/config/cris/cris-common.c index 94a3fcf..79f976d 100644 --- a/gcc/common/config/cris/cris-common.c +++ b/gcc/common/config/cris/cris-common.c @@ -26,14 +26,6 @@ along with GCC; see the file COPYING3. If not see #include "opts.h" #include "flags.h" -/* Implement TARGET_OPTION_OPTIMIZATION_TABLE. */ - -static const struct default_options cris_option_optimization_table[] = - { - { OPT_LEVELS_2_PLUS, OPT_fomit_frame_pointer, NULL, 1 }, - { OPT_LEVELS_NONE, 0, NULL, 0 } - }; - /* TARGET_HANDLE_OPTION worker. We just store the values into local variables here. Checks for correct semantics are in cris_option_override. */ @@ -98,7 +90,5 @@ cris_handle_option (struct gcc_options *opts, #define TARGET_DEFAULT_TARGET_FLAGS (TARGET_DEFAULT | CRIS_SUBTARGET_DEFAULT) #undef TARGET_HANDLE_OPTION #define TARGET_HANDLE_OPTION cris_handle_option -#undef TARGET_OPTION_OPTIMIZATION_TABLE -#define TARGET_OPTION_OPTIMIZATION_TABLE cris_option_optimization_table struct gcc_targetm_common targetm_common = TARGETM_COMMON_INITIALIZER; diff --git a/gcc/common/config/epiphany/epiphany-common.c b/gcc/common/config/epiphany/epiphany-common.c index ced64cd..f837a62 100644 --- a/gcc/common/config/epiphany/epiphany-common.c +++ b/gcc/common/config/epiphany/epiphany-common.c @@ -38,7 +38,6 @@ along with GCC; see the file COPYING3. If not see /* Implement TARGET_OPTION_OPTIMIZATION_TABLE. */ static const struct default_options epiphany_option_optimization_table[] = { - { OPT_LEVELS_1_PLUS, OPT_fomit_frame_pointer, NULL, 1 }, /* Enable section anchors by default at -O1 or higher. */ { OPT_LEVELS_1_PLUS, OPT_fsection_anchors, NULL, 1 }, { OPT_LEVELS_NONE, 0, NULL, 0 } diff --git a/gcc/common/config/fr30/fr30-common.c b/gcc/common/config/fr30/fr30-common.c index 9388cca..1dd001e 100644 --- a/gcc/common/config/fr30/fr30-common.c +++ b/gcc/common/config/fr30/fr30-common.c @@ -24,17 +24,7 @@ #include "common/common-target.h" #include "common/common-target-def.h" -/* Implement TARGET_OPTION_OPTIMIZATION_TABLE. */ -static const struct default_options fr30_option_optimization_table[] = - { - { OPT_LEVELS_1_PLUS, OPT_fomit_frame_pointer, NULL, 1 }, - { OPT_LEVELS_NONE, 0, NULL, 0 } - }; - #undef TARGET_EXCEPT_UNWIND_INFO #define TARGET_EXCEPT_UNWIND_INFO sjlj_except_unwind_info -#undef TARGET_OPTION_OPTIMIZATION_TABLE -#define TARGET_OPTION_OPTIMIZATION_TABLE fr30_option_optimization_table - struct gcc_targetm_common targetm_common = TARGETM_COMMON_INITIALIZER; diff --git a/gcc/common/config/frv/frv-common.c b/gcc/common/config/frv/frv-common.c index 9c2399b..77062bb 100644 --- a/gcc/common/config/frv/frv-common.c +++ b/gcc/common/config/frv/frv-common.c @@ -32,13 +32,6 @@ along with GCC; see the file COPYING3. If not see #define MASK_DEFAULT_ALLOC_CC 0 #endif -/* Implement TARGET_OPTION_OPTIMIZATION_TABLE. */ -static const struct default_options frv_option_optimization_table[] = - { - { OPT_LEVELS_1_PLUS, OPT_fomit_frame_pointer, NULL, 1 }, - { OPT_LEVELS_NONE, 0, NULL, 0 } - }; - #undef TARGET_DEFAULT_TARGET_FLAGS #define TARGET_DEFAULT_TARGET_FLAGS \ (MASK_DEFAULT_ALLOC_CC \ @@ -48,7 +41,5 @@ static const struct default_options frv_option_optimization_table[] = | MASK_VLIW_BRANCH \ | MASK_MULTI_CE \ | MASK_NESTED_CE) -#undef TARGET_OPTION_OPTIMIZATION_TABLE -#define TARGET_OPTION_OPTIMIZATION_TABLE frv_option_optimization_table struct gcc_targetm_common targetm_common = TARGETM_COMMON_INITIALIZER; diff --git a/gcc/common/config/ia64/ia64-common.c b/gcc/common/config/ia64/ia64-common.c index 86e54e3..ab8c33b 100644 --- a/gcc/common/config/ia64/ia64-common.c +++ b/gcc/common/config/ia64/ia64-common.c @@ -33,7 +33,6 @@ along with GCC; see the file COPYING3. If not see /* Implement overriding of the optimization options. */ static const struct default_options ia64_option_optimization_table[] = { - { OPT_LEVELS_1_PLUS, OPT_fomit_frame_pointer, NULL, 1 }, #ifdef SUBTARGET_OPTIMIZATION_OPTIONS SUBTARGET_OPTIMIZATION_OPTIONS, #endif diff --git a/gcc/common/config/iq2000/iq2000-common.c b/gcc/common/config/iq2000/iq2000-common.c index 9f36ddc..04f9f67 100644 --- a/gcc/common/config/iq2000/iq2000-common.c +++ b/gcc/common/config/iq2000/iq2000-common.c @@ -24,14 +24,4 @@ along with GCC; see the file COPYING3. If not see #include "common/common-target.h" #include "common/common-target-def.h" -/* Implement TARGET_OPTION_OPTIMIZATION_TABLE. */ -static const struct default_options iq2000_option_optimization_table[] = - { - { OPT_LEVELS_1_PLUS, OPT_fomit_frame_pointer, NULL, 1 }, - { OPT_LEVELS_NONE, 0, NULL, 0 } - }; - -#undef TARGET_OPTION_OPTIMIZATION_TABLE -#define TARGET_OPTION_OPTIMIZATION_TABLE iq2000_option_optimization_table - struct gcc_targetm_common targetm_common = TARGETM_COMMON_INITIALIZER; diff --git a/gcc/common/config/lm32/lm32-common.c b/gcc/common/config/lm32/lm32-common.c index 969fce2..7bd0ab0 100644 --- a/gcc/common/config/lm32/lm32-common.c +++ b/gcc/common/config/lm32/lm32-common.c @@ -25,16 +25,6 @@ #include "common/common-target.h" #include "common/common-target-def.h" -/* Implement TARGET_OPTION_OPTIMIZATION_TABLE. */ -static const struct default_options lm32_option_optimization_table[] = - { - { OPT_LEVELS_1_PLUS, OPT_fomit_frame_pointer, NULL, 1 }, - { OPT_LEVELS_NONE, 0, NULL, 0 } - }; - -#undef TARGET_OPTION_OPTIMIZATION_TABLE -#define TARGET_OPTION_OPTIMIZATION_TABLE lm32_option_optimization_table - #undef TARGET_EXCEPT_UNWIND_INFO #define TARGET_EXCEPT_UNWIND_INFO sjlj_except_unwind_info diff --git a/gcc/common/config/m32r/m32r-common.c b/gcc/common/config/m32r/m32r-common.c index d2add8d..b56dbb8 100644 --- a/gcc/common/config/m32r/m32r-common.c +++ b/gcc/common/config/m32r/m32r-common.c @@ -26,12 +26,6 @@ #include "opts.h" #include "flags.h" -static const struct default_options m32r_option_optimization_table[] = - { - { OPT_LEVELS_1_PLUS, OPT_fomit_frame_pointer, NULL, 1 }, - { OPT_LEVELS_NONE, 0, NULL, 0 } - }; - /* Implement TARGET_HANDLE_OPTION. */ static bool @@ -65,8 +59,6 @@ m32r_handle_option (struct gcc_options *opts, #define TARGET_DEFAULT_TARGET_FLAGS TARGET_CPU_DEFAULT #undef TARGET_HANDLE_OPTION #define TARGET_HANDLE_OPTION m32r_handle_option -#undef TARGET_OPTION_OPTIMIZATION_TABLE -#define TARGET_OPTION_OPTIMIZATION_TABLE m32r_option_optimization_table #undef TARGET_EXCEPT_UNWIND_INFO #define TARGET_EXCEPT_UNWIND_INFO sjlj_except_unwind_info diff --git a/gcc/common/config/mcore/mcore-common.c b/gcc/common/config/mcore/mcore-common.c index 03f70a9..77958bb 100644 --- a/gcc/common/config/mcore/mcore-common.c +++ b/gcc/common/config/mcore/mcore-common.c @@ -33,7 +33,6 @@ static const struct default_options mcore_option_optimization_table[] = { { OPT_LEVELS_1_PLUS, OPT_ffunction_cse, NULL, 0 }, - { OPT_LEVELS_1_PLUS, OPT_fomit_frame_pointer, NULL, 1 }, { OPT_LEVELS_ALL, OPT_fcaller_saves, NULL, 0 }, { OPT_LEVELS_ALL, OPT_fschedule_insns, NULL, 0 }, { OPT_LEVELS_ALL, OPT_fschedule_insns2, NULL, 0 }, diff --git a/gcc/common/config/microblaze/microblaze-common.c b/gcc/common/config/microblaze/microblaze-common.c index 4975663..448a7ac 100644 --- a/gcc/common/config/microblaze/microblaze-common.c +++ b/gcc/common/config/microblaze/microblaze-common.c @@ -24,17 +24,7 @@ #include "common/common-target.h" #include "common/common-target-def.h" -/* Implement TARGET_OPTION_OPTIMIZATION_TABLE. */ -static const struct default_options microblaze_option_optimization_table[] = - { - { OPT_LEVELS_1_PLUS, OPT_fomit_frame_pointer, NULL, 1 }, - { OPT_LEVELS_NONE, 0, NULL, 0 } - }; - #undef TARGET_DEFAULT_TARGET_FLAGS #define TARGET_DEFAULT_TARGET_FLAGS TARGET_DEFAULT -#undef TARGET_OPTION_OPTIMIZATION_TABLE -#define TARGET_OPTION_OPTIMIZATION_TABLE microblaze_option_optimization_table - struct gcc_targetm_common targetm_common = TARGETM_COMMON_INITIALIZER; diff --git a/gcc/common/config/mips/mips-common.c b/gcc/common/config/mips/mips-common.c index 525af74..07ba060 100644 --- a/gcc/common/config/mips/mips-common.c +++ b/gcc/common/config/mips/mips-common.c @@ -56,16 +56,6 @@ mips_handle_option (struct gcc_options *opts, } } -/* Implement TARGET_OPTION_OPTIMIZATION_TABLE. */ -static const struct default_options mips_option_optimization_table[] = - { - { OPT_LEVELS_1_PLUS, OPT_fomit_frame_pointer, NULL, 1 }, - { OPT_LEVELS_NONE, 0, NULL, 0 } - }; - -#undef TARGET_OPTION_OPTIMIZATION_TABLE -#define TARGET_OPTION_OPTIMIZATION_TABLE mips_option_optimization_table - #undef TARGET_DEFAULT_TARGET_FLAGS #define TARGET_DEFAULT_TARGET_FLAGS \ (TARGET_DEFAULT \ diff --git a/gcc/common/config/mmix/mmix-common.c b/gcc/common/config/mmix/mmix-common.c index dd28139..f73ad98 100644 --- a/gcc/common/config/mmix/mmix-common.c +++ b/gcc/common/config/mmix/mmix-common.c @@ -24,18 +24,7 @@ along with GCC; see the file COPYING3. If not see #include "common/common-target.h" #include "common/common-target-def.h" -/* TARGET_OPTION_OPTIMIZATION_TABLE. */ - -static const struct default_options mmix_option_optimization_table[] = - { - { OPT_LEVELS_2_PLUS, OPT_fomit_frame_pointer, NULL, 1 }, - { OPT_LEVELS_NONE, 0, NULL, 0 } - }; - #undef TARGET_DEFAULT_TARGET_FLAGS #define TARGET_DEFAULT_TARGET_FLAGS TARGET_DEFAULT -#undef TARGET_OPTION_OPTIMIZATION_TABLE -#define TARGET_OPTION_OPTIMIZATION_TABLE mmix_option_optimization_table - struct gcc_targetm_common targetm_common = TARGETM_COMMON_INITIALIZER; diff --git a/gcc/common/config/mn10300/mn10300-common.c b/gcc/common/config/mn10300/mn10300-common.c index e2df672..74fa463 100644 --- a/gcc/common/config/mn10300/mn10300-common.c +++ b/gcc/common/config/mn10300/mn10300-common.c @@ -29,7 +29,6 @@ /* Implement TARGET_OPTION_OPTIMIZATION_TABLE. */ static const struct default_options mn10300_option_optimization_table[] = { - { OPT_LEVELS_1_PLUS, OPT_fomit_frame_pointer, NULL, 1 }, /* The STC algorithm produces the smallest code at -Os. */ { OPT_LEVELS_2_PLUS, OPT_freorder_blocks_algorithm_, NULL, REORDER_BLOCKS_ALGORITHM_STC }, diff --git a/gcc/common/config/nios2/nios2-common.c b/gcc/common/config/nios2/nios2-common.c index 1366b1f..36750ad 100644 --- a/gcc/common/config/nios2/nios2-common.c +++ b/gcc/common/config/nios2/nios2-common.c @@ -30,7 +30,6 @@ along with GCC; see the file COPYING3. If not see /* Implement TARGET_OPTION_OPTIMIZATION_TABLE. */ static const struct default_options nios2_option_optimization_table[] = { - { OPT_LEVELS_1_PLUS, OPT_fomit_frame_pointer, NULL, 1 }, { OPT_LEVELS_3_PLUS, OPT_mfast_sw_div, NULL, 1 }, { OPT_LEVELS_NONE, 0, NULL, 0 } }; diff --git a/gcc/common/config/pa/pa-common.c b/gcc/common/config/pa/pa-common.c index 13cc32b..ea943b9 100644 --- a/gcc/common/config/pa/pa-common.c +++ b/gcc/common/config/pa/pa-common.c @@ -26,13 +26,6 @@ along with GCC; see the file COPYING3. If not see #include "opts.h" #include "flags.h" -/* Implement TARGET_OPTION_OPTIMIZATION_TABLE. */ -static const struct default_options pa_option_optimization_table[] = - { - { OPT_LEVELS_1_PLUS, OPT_fomit_frame_pointer, NULL, 1 }, - { OPT_LEVELS_NONE, 0, NULL, 0 } - }; - /* Implement TARGET_HANDLE_OPTION. */ static bool @@ -68,8 +61,6 @@ pa_handle_option (struct gcc_options *opts, } } -#undef TARGET_OPTION_OPTIMIZATION_TABLE -#define TARGET_OPTION_OPTIMIZATION_TABLE pa_option_optimization_table #undef TARGET_DEFAULT_TARGET_FLAGS #define TARGET_DEFAULT_TARGET_FLAGS (TARGET_DEFAULT | TARGET_CPU_DEFAULT) #undef TARGET_HANDLE_OPTION diff --git a/gcc/common/config/pdp11/pdp11-common.c b/gcc/common/config/pdp11/pdp11-common.c index 47512ef..6c3044f 100644 --- a/gcc/common/config/pdp11/pdp11-common.c +++ b/gcc/common/config/pdp11/pdp11-common.c @@ -26,14 +26,6 @@ along with GCC; see the file COPYING3. If not see #include "opts.h" #include "flags.h" -/* Implement TARGET_OPTION_OPTIMIZATION_TABLE. */ - -static const struct default_options pdp11_option_optimization_table[] = - { - { OPT_LEVELS_3_PLUS, OPT_fomit_frame_pointer, NULL, 1 }, - { OPT_LEVELS_NONE, 0, NULL, 0 } - }; - /* Implement TARGET_HANDLE_OPTION. */ static bool @@ -70,8 +62,6 @@ pdp11_option_init_struct (struct gcc_options *opts) (MASK_FPU | MASK_45 | TARGET_UNIX_ASM_DEFAULT) #undef TARGET_HANDLE_OPTION #define TARGET_HANDLE_OPTION pdp11_handle_option -#undef TARGET_OPTION_OPTIMIZATION_TABLE -#define TARGET_OPTION_OPTIMIZATION_TABLE pdp11_option_optimization_table #undef TARGET_OPTION_INIT_STRUCT #define TARGET_OPTION_INIT_STRUCT pdp11_option_init_struct diff --git a/gcc/common/config/powerpcspe/powerpcspe-common.c b/gcc/common/config/powerpcspe/powerpcspe-common.c index 3c0106a..0458c40 100644 --- a/gcc/common/config/powerpcspe/powerpcspe-common.c +++ b/gcc/common/config/powerpcspe/powerpcspe-common.c @@ -31,7 +31,6 @@ /* Implement TARGET_OPTION_OPTIMIZATION_TABLE. */ static const struct default_options rs6000_option_optimization_table[] = { - { OPT_LEVELS_1_PLUS, OPT_fomit_frame_pointer, NULL, 1 }, /* Enable -fsched-pressure for first pass instruction scheduling. */ { OPT_LEVELS_1_PLUS, OPT_fsched_pressure, NULL, 1 }, { OPT_LEVELS_NONE, 0, NULL, 0 } diff --git a/gcc/common/config/riscv/riscv-common.c b/gcc/common/config/riscv/riscv-common.c index 50f1485..0408cb3 100644 --- a/gcc/common/config/riscv/riscv-common.c +++ b/gcc/common/config/riscv/riscv-common.c @@ -117,7 +117,6 @@ riscv_handle_option (struct gcc_options *opts, static const struct default_options riscv_option_optimization_table[] = { { OPT_LEVELS_1_PLUS, OPT_fsection_anchors, NULL, 1 }, - { OPT_LEVELS_1_PLUS, OPT_fomit_frame_pointer, NULL, 1 }, { OPT_LEVELS_2_PLUS, OPT_free, NULL, 1 }, { OPT_LEVELS_NONE, 0, NULL, 0 } }; diff --git a/gcc/common/config/rs6000/rs6000-common.c b/gcc/common/config/rs6000/rs6000-common.c index 0753754..915c469 100644 --- a/gcc/common/config/rs6000/rs6000-common.c +++ b/gcc/common/config/rs6000/rs6000-common.c @@ -31,7 +31,6 @@ /* Implement TARGET_OPTION_OPTIMIZATION_TABLE. */ static const struct default_options rs6000_option_optimization_table[] = { - { OPT_LEVELS_1_PLUS, OPT_fomit_frame_pointer, NULL, 1 }, /* Enable -fsched-pressure for first pass instruction scheduling. */ { OPT_LEVELS_1_PLUS, OPT_fsched_pressure, NULL, 1 }, { OPT_LEVELS_NONE, 0, NULL, 0 } diff --git a/gcc/common/config/rx/rx-common.c b/gcc/common/config/rx/rx-common.c index 961d05a..ef6f823 100644 --- a/gcc/common/config/rx/rx-common.c +++ b/gcc/common/config/rx/rx-common.c @@ -70,19 +70,9 @@ rx_handle_option (struct gcc_options *opts, return true; } -/* Implement TARGET_OPTION_OPTIMIZATION_TABLE. */ -static const struct default_options rx_option_optimization_table[] = - { - { OPT_LEVELS_1_PLUS, OPT_fomit_frame_pointer, NULL, 1 }, - { OPT_LEVELS_NONE, 0, NULL, 0 } - }; - #undef TARGET_HANDLE_OPTION #define TARGET_HANDLE_OPTION rx_handle_option -#undef TARGET_OPTION_OPTIMIZATION_TABLE -#define TARGET_OPTION_OPTIMIZATION_TABLE rx_option_optimization_table - #undef TARGET_EXCEPT_UNWIND_INFO #define TARGET_EXCEPT_UNWIND_INFO sjlj_except_unwind_info diff --git a/gcc/common/config/s390/s390-common.c b/gcc/common/config/s390/s390-common.c index 10418a3..b53ea6e 100644 --- a/gcc/common/config/s390/s390-common.c +++ b/gcc/common/config/s390/s390-common.c @@ -56,8 +56,6 @@ EXPORTED_CONST int processor_flags_table[] = static const struct default_options s390_option_optimization_table[] = { - { OPT_LEVELS_1_PLUS, OPT_fomit_frame_pointer, NULL, 1 }, - /* Enable -fsched-pressure by default when optimizing. */ { OPT_LEVELS_1_PLUS, OPT_fsched_pressure, NULL, 1 }, diff --git a/gcc/common/config/sh/sh-common.c b/gcc/common/config/sh/sh-common.c index e9903cc..395da07 100644 --- a/gcc/common/config/sh/sh-common.c +++ b/gcc/common/config/sh/sh-common.c @@ -30,7 +30,6 @@ along with GCC; see the file COPYING3. If not see /* Set default optimization options. */ static const struct default_options sh_option_optimization_table[] = { - { OPT_LEVELS_1_PLUS, OPT_fomit_frame_pointer, NULL, 1 }, { OPT_LEVELS_SIZE, OPT_mdiv_, SH_DIV_STR_FOR_SIZE, 1 }, { OPT_LEVELS_0_ONLY, OPT_mdiv_, "", 1 }, { OPT_LEVELS_NONE, 0, NULL, 0 } diff --git a/gcc/common/config/sparc/sparc-common.c b/gcc/common/config/sparc/sparc-common.c index 0d19669..87fcac4 100644 --- a/gcc/common/config/sparc/sparc-common.c +++ b/gcc/common/config/sparc/sparc-common.c @@ -27,7 +27,6 @@ along with GCC; see the file COPYING3. If not see /* Implement TARGET_OPTION_OPTIMIZATION_TABLE. */ static const struct default_options sparc_option_optimization_table[] = { - { OPT_LEVELS_1_PLUS, OPT_fomit_frame_pointer, NULL, 1 }, /* Enable redundant extension instructions removal at -O2 and higher. */ { OPT_LEVELS_2_PLUS, OPT_free, NULL, 1 }, { OPT_LEVELS_NONE, 0, NULL, 0 } diff --git a/gcc/common/config/tilegx/tilegx-common.c b/gcc/common/config/tilegx/tilegx-common.c index 96d5b25..7fca8bb 100644 --- a/gcc/common/config/tilegx/tilegx-common.c +++ b/gcc/common/config/tilegx/tilegx-common.c @@ -29,7 +29,6 @@ #include "flags.h" static const struct default_options tilegx_option_optimization_table[] = { - {OPT_LEVELS_1_PLUS, OPT_fomit_frame_pointer, NULL, 1}, /* Scheduling and bundling are super important for our architecture, so enable them at -O1. */ {OPT_LEVELS_1_PLUS, OPT_fschedule_insns, NULL, 1}, diff --git a/gcc/common/config/tilepro/tilepro-common.c b/gcc/common/config/tilepro/tilepro-common.c index 50ac7a9..9dddf65 100644 --- a/gcc/common/config/tilepro/tilepro-common.c +++ b/gcc/common/config/tilepro/tilepro-common.c @@ -29,7 +29,6 @@ #include "flags.h" static const struct default_options tilepro_option_optimization_table[] = { - {OPT_LEVELS_1_PLUS, OPT_fomit_frame_pointer, NULL, 1}, /* Scheduling and bundling are super important for our architecture, so enable them at -O1. */ {OPT_LEVELS_1_PLUS, OPT_fschedule_insns, NULL, 1}, diff --git a/gcc/common/config/v850/v850-common.c b/gcc/common/config/v850/v850-common.c index 032ef88..b30f9cb 100644 --- a/gcc/common/config/v850/v850-common.c +++ b/gcc/common/config/v850/v850-common.c @@ -111,7 +111,6 @@ v850_handle_option (struct gcc_options *opts, static const struct default_options v850_option_optimization_table[] = { - { OPT_LEVELS_1_PLUS, OPT_fomit_frame_pointer, NULL, 1 }, /* Note - we no longer enable MASK_EP when optimizing. This is because of a hardware bug which stops the SLD and SST instructions from correctly detecting some hazards. If the user is sure that diff --git a/gcc/common/config/visium/visium-common.c b/gcc/common/config/visium/visium-common.c index 6a29a24..7d7c647 100644 --- a/gcc/common/config/visium/visium-common.c +++ b/gcc/common/config/visium/visium-common.c @@ -25,14 +25,4 @@ along with GCC; see the file COPYING3. If not see #include "common/common-target.h" #include "common/common-target-def.h" -/* Set default optimization options. */ -static const struct default_options visium_option_optimization_table[] = - { - { OPT_LEVELS_1_PLUS, OPT_fomit_frame_pointer, NULL, 1 }, - { OPT_LEVELS_NONE, 0, NULL, 0 } - }; - -#undef TARGET_OPTION_OPTIMIZATION_TABLE -#define TARGET_OPTION_OPTIMIZATION_TABLE visium_option_optimization_table - struct gcc_targetm_common targetm_common = TARGETM_COMMON_INITIALIZER; diff --git a/gcc/common/config/xstormy16/xstormy16-common.c b/gcc/common/config/xstormy16/xstormy16-common.c index 6e70d94..eb24c6f 100644 --- a/gcc/common/config/xstormy16/xstormy16-common.c +++ b/gcc/common/config/xstormy16/xstormy16-common.c @@ -24,14 +24,4 @@ #include "common/common-target.h" #include "common/common-target-def.h" -/* Implement TARGET_OPTION_OPTIMIZATION_TABLE. */ -static const struct default_options xstorym16_option_optimization_table[] = - { - { OPT_LEVELS_1_PLUS, OPT_fomit_frame_pointer, NULL, 1 }, - { OPT_LEVELS_NONE, 0, NULL, 0 } - }; - -#undef TARGET_OPTION_OPTIMIZATION_TABLE -#define TARGET_OPTION_OPTIMIZATION_TABLE xstorym16_option_optimization_table - struct gcc_targetm_common targetm_common = TARGETM_COMMON_INITIALIZER; diff --git a/gcc/common/config/xtensa/xtensa-common.c b/gcc/common/config/xtensa/xtensa-common.c index 24521ec..53ad976 100644 --- a/gcc/common/config/xtensa/xtensa-common.c +++ b/gcc/common/config/xtensa/xtensa-common.c @@ -28,7 +28,6 @@ along with GCC; see the file COPYING3. If not see static const struct default_options xtensa_option_optimization_table[] = { - { OPT_LEVELS_1_PLUS, OPT_fomit_frame_pointer, NULL, 1 }, /* Reordering blocks for Xtensa is not a good idea unless the compiler understands the range of conditional branches. Currently all branch relaxation for Xtensa is handled in the diff --git a/gcc/doc/invoke.texi b/gcc/doc/invoke.texi index 85c980b..6384bc6 100644 --- a/gcc/doc/invoke.texi +++ b/gcc/doc/invoke.texi @@ -7322,6 +7322,7 @@ compilation time. -fipa-reference @gol -fmerge-constants @gol -fmove-loop-invariants @gol +-fomit-frame-pointer @gol -freorder-blocks @gol -fshrink-wrap @gol -fshrink-wrap-separate @gol @@ -7346,9 +7347,6 @@ compilation time. -ftree-ter @gol -funit-at-a-time} -@option{-O} also turns on @option{-fomit-frame-pointer} on machines -where doing so does not interfere with debugging. - @item -O2 @opindex O2 Optimize even more. GCC performs nearly all supported optimizations @@ -7500,29 +7498,18 @@ The default is @option{-ffp-contract=fast}. @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}. - -The default setting (when not optimizing for -size) for 32-bit GNU/Linux x86 and 32-bit Darwin x86 targets is -@option{-fomit-frame-pointer}. You can configure GCC with the -@option{--enable-frame-pointer} configure option to change the default. - -Note that @option{-fno-omit-frame-pointer} doesn't force a new stack -frame for all functions if it isn't otherwise needed, and hence doesn't -guarantee a new frame pointer for all functions. +Omit the frame pointer in functions that don't need one. This avoids the +instructions to save, set up and restore the frame pointer; on many targets +it also makes an extra register available. -Enabled at levels @option{-O}, @option{-O2}, @option{-O3}, @option{-Os}. +On some targets this flag has no effect because the standard calling sequence +always uses a frame pointer, so it cannot be omitted. + +Note that @option{-fno-omit-frame-pointer} doesn't guarantee the frame pointer +is used in all functions. Several targets always omit the frame pointer in +leaf functions. + +Enabled by default at @option{-O} and higher. @item -foptimize-sibling-calls @opindex foptimize-sibling-calls @@ -16817,9 +16804,7 @@ Certain other options, such as @option{-mid-shared-library} and @opindex momit-leaf-frame-pointer Don't keep the frame pointer in a register for leaf functions. This avoids the instructions to save, set up and restore frame pointers and -makes an extra register available in leaf functions. The option -@option{-fomit-frame-pointer} removes the frame pointer for all functions, -which might make debugging harder. +makes an extra register available in leaf functions. @item -mspecld-anomaly @opindex mspecld-anomaly @@ -476,6 +476,7 @@ static const struct default_options default_options_table[] = { OPT_LEVELS_1_PLUS_NOT_DEBUG, OPT_ftree_pta, NULL, 1 }, { OPT_LEVELS_1_PLUS_NOT_DEBUG, OPT_fssa_phiopt, NULL, 1 }, { OPT_LEVELS_1_PLUS, OPT_ftree_builtin_call_dce, NULL, 1 }, + { OPT_LEVELS_1_PLUS, OPT_fomit_frame_pointer, NULL, 1 }, /* -O2 optimizations. */ { OPT_LEVELS_2_PLUS, OPT_finline_small_functions, NULL, 1 }, |