Set default to -fomit-frame-pointer
authorWilco Dijkstra <wdijkstr@arm.com>
Thu, 16 Nov 2017 11:44:30 +0000 (11:44 +0000)
committerWilco Dijkstra <wilco@gcc.gnu.org>
Thu, 16 Nov 2017 11:44:30 +0000 (11:44 +0000)
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:
gcc/ChangeLog
gcc/common/config/alpha/alpha-common.c
gcc/common/config/arc/arc-common.c
gcc/common/config/arm/arm-common.c
gcc/common/config/avr/avr-common.c
gcc/common/config/c6x/c6x-common.c
gcc/common/config/cr16/cr16-common.c
gcc/common/config/cris/cris-common.c
gcc/common/config/epiphany/epiphany-common.c
gcc/common/config/fr30/fr30-common.c
gcc/common/config/frv/frv-common.c
gcc/common/config/ia64/ia64-common.c
gcc/common/config/iq2000/iq2000-common.c
gcc/common/config/lm32/lm32-common.c
gcc/common/config/m32r/m32r-common.c
gcc/common/config/mcore/mcore-common.c
gcc/common/config/microblaze/microblaze-common.c
gcc/common/config/mips/mips-common.c
gcc/common/config/mmix/mmix-common.c
gcc/common/config/mn10300/mn10300-common.c
gcc/common/config/nios2/nios2-common.c
gcc/common/config/pa/pa-common.c
gcc/common/config/pdp11/pdp11-common.c
gcc/common/config/powerpcspe/powerpcspe-common.c
gcc/common/config/riscv/riscv-common.c
gcc/common/config/rs6000/rs6000-common.c
gcc/common/config/rx/rx-common.c
gcc/common/config/s390/s390-common.c
gcc/common/config/sh/sh-common.c
gcc/common/config/sparc/sparc-common.c
gcc/common/config/tilegx/tilegx-common.c
gcc/common/config/tilepro/tilepro-common.c
gcc/common/config/v850/v850-common.c
gcc/common/config/visium/visium-common.c
gcc/common/config/xstormy16/xstormy16-common.c
gcc/common/config/xtensa/xtensa-common.c
gcc/doc/invoke.texi
gcc/opts.c

index eaf4c8e97892e7ae733d63ec4c049ad8c621af2b..f9a429369d6a869bdf2df735adcf4591a34cc297 100644 (file)
@@ -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.
index be42282270bbc22e31e39bfb5307d7b4d82a84b9..3a7d28d16225478e2fdae42c5610e55dc0b68c6f 100644 (file)
@@ -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 }
index 82e0dd383c9d627d39cc8cf904ef3c17a80f3da9..c437313ba4192b1d6c79b047b40b02e5b7a4facb 100644 (file)
@@ -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 },
index 1588ca86e9b06282ed4358e072bc2b0224a11483..5ae20fea916a636d078b9e1aa2b4e866b9da1259 100644 (file)
@@ -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 }
   };
index 4bee9d670d9565f58da527c8604191e480df667a..9bf0e0d0932b1da4ec2a91a980f87d9654f6072b 100644 (file)
@@ -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 },
index 3de96a034f099de6af935392d0a829c21bd63fcc..ec698a82e18e67785539da5c4359c60f1621d90e 100644 (file)
@@ -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 },
index 620a812eacf3369c7b0766db4f8176c45baced66..a106fcbfde0c02497450e659bc8afb14109b2b21 100644 (file)
 #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;
index 94a3fcf87928b7caf841a23d622d7f23d934e58e..79f976d07210cb719d7e0f998b1a08ba5e39a9e6 100644 (file)
@@ -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;
index ced64cd4e5ad2e17b737eb7b382be78ffa5c077e..f837a6293b3dcea2b7b45b5c79c0a12f5d1c7ccd 100644 (file)
@@ -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 }
index 9388cca1a7c57ca89318ab86576f2405d27838ba..1dd001ecf7e410d9939960355bde40bada739db6 100644 (file)
 #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;
index 9c2399ba6834b22d74f43856b8178ca04acb3588..77062bbf2f4b6d3463181303fc2643c804add98c 100644 (file)
@@ -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;
index 86e54e392ba8f9a313b2b1cd72294bf00baefd47..ab8c33b577ff83ae82cb847929baedd6aa92ecc4 100644 (file)
@@ -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
index 9f36ddcbbb52482ef5ee6262f3bfcc6863fc2bcc..04f9f670133cd10c7a0e9353e98cc0839c0b189a 100644 (file)
@@ -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;
index 969fce25841edfc5eda06cf0a43667b24246911b..7bd0ab072ddbb25b70e4993cb483503f0ee29926 100644 (file)
 #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
 
index d2add8dd5e56bd6c736f9220ea0578ac23c79f77..b56dbb8311c6c6fdd3e44b1bff110937ac66422f 100644 (file)
 #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
index 03f70a95d31b0e609e93492dc4c16b16e12c16ee..77958bb88ed643c757e4285c47c71bef81ed9870 100644 (file)
@@ -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 },
index 49756633056f0d6080b32d4621a48426a841b09f..448a7acd539a73986c0541ef3e915fe457f37401 100644 (file)
 #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;
index 525af741d58c7b46de93cce0e5e8d4447a7a55dd..07ba06049cb43c0167363f4e371d0f5e7769b264 100644 (file)
@@ -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                              \
index dd281394c0b4221f8c1f630a43c00127588d1508..f73ad980cd36718d9689f42dbd11f0afb4096244 100644 (file)
@@ -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;
index e2df672ef665541653d694918020fdad0a995d17..74fa463d8d01844201aa8d832e32c6b4b1c1ea47 100644 (file)
@@ -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 },
index 1366b1fffeaf2c7e0fe355c6d270ca31044b476d..36750ad1d3b91e64f4af519d7796caae6d146d76 100644 (file)
@@ -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 }
   };
index 13cc32b20c519c94a9fc01a9e9406226dff6a3af..ea943b9e04786ff31172f9533a7f157273f9602c 100644 (file)
@@ -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
index 47512ef0071d18b5d7b177688ebb31849635b163..6c3044f042c5cd24cfee6b4f11088c0735d7360c 100644 (file)
@@ -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
 
index 3c0106ae555d80ded696a735d7213ef1e8588f4b..0458c4070861e4cd761bdd2fd6b13b2721933e11 100644 (file)
@@ -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 }
index 50f1485f87a406dcf4ecf5571145980e965ce309..0408cb384cd8875419d9c287d52b1b8d9f3548d7 100644 (file)
@@ -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 }
   };
index 07537543ddcc40d1ab820ccd9671224129d83241..915c4694fe5108f1dfc154cfb44f3d51caf2a340 100644 (file)
@@ -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 }
index 961d05af1e3b4a3b3918037297b129575916e5eb..ef6f82302a3c0101fff91ca14d5062e465b3a5b6 100644 (file)
@@ -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
 
index 10418a36c20b8f2b8301e71c18b9d660676e1f0e..b53ea6e30a969e7b32d1f15c01c5ec62717b1d95 100644 (file)
@@ -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 },
 
index e9903cc9c4e92a237f0ac2c2a3c2e33480a3d9e8..395da07bd7d301037e18c6d8530f75d916c9fbac 100644 (file)
@@ -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 }
index 0d196697cc288cf082d93ae080c49e6e74929c2e..87fcac49486d947f2c32d4416475acb3df81c172 100644 (file)
@@ -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 }
index 96d5b25464f640ae50564ce0d42f063122993e63..7fca8bb08f1258080db8ce51f8f84b74d2796d8d 100644 (file)
@@ -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},
index 50ac7a9404b00cedde94b649e8f10d739a005d14..9dddf6528e56894a3e86a67e7c42a9a1f68d6f0c 100644 (file)
@@ -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},
index 032ef888966e5319460cde07bf0a6caabbd8cb14..b30f9cb0b673ef1621d2538b1ac82bece1547042 100644 (file)
@@ -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
index 6a29a243b325da1e66c963a773be3cbd2dfe66df..7d7c647c03b0c1d74515df999c5b6cff939aaa7d 100644 (file)
@@ -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;
index 6e70d94cf735a7943670e24d6769a2b30463b68a..eb24c6fbdd57d208b5a96bc7ab78279eaad6a8bd 100644 (file)
 #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;
index 24521ec9787a43e115c021ff9b39a6a1ac142e42..53ad976b5000dd23e33a0b7682fb7b08984f4d36 100644 (file)
@@ -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
index 85c980bdfc9cfaf74d81313913be0f3f112fc769..6384bc62a1318dc572cf7ce00f9207331b5e21ea 100644 (file)
@@ -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
index ac383d48ec18d8f9c6f00ada4b96cb5d310bcf20..ab3f4aefed32c0a265221678c87549958bb50ccb 100644 (file)
@@ -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 },