aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorWilco Dijkstra <wdijkstr@arm.com>2017-11-16 11:44:30 +0000
committerWilco Dijkstra <wilco@gcc.gnu.org>2017-11-16 11:44:30 +0000
commitefeee67f4c9fd021d2594e0271c84b7e90e63d3d (patch)
tree432424fb9e6c33f3153f0e3ae0eda180a2acf6af
parent9e780144ce070e286c4a0d467ed170408e1b3b47 (diff)
downloadgcc-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
-rw-r--r--gcc/ChangeLog41
-rw-r--r--gcc/common/config/alpha/alpha-common.c1
-rw-r--r--gcc/common/config/arc/arc-common.c1
-rw-r--r--gcc/common/config/arm/arm-common.c1
-rw-r--r--gcc/common/config/avr/avr-common.c1
-rw-r--r--gcc/common/config/c6x/c6x-common.c1
-rw-r--r--gcc/common/config/cr16/cr16-common.c10
-rw-r--r--gcc/common/config/cris/cris-common.c10
-rw-r--r--gcc/common/config/epiphany/epiphany-common.c1
-rw-r--r--gcc/common/config/fr30/fr30-common.c10
-rw-r--r--gcc/common/config/frv/frv-common.c9
-rw-r--r--gcc/common/config/ia64/ia64-common.c1
-rw-r--r--gcc/common/config/iq2000/iq2000-common.c10
-rw-r--r--gcc/common/config/lm32/lm32-common.c10
-rw-r--r--gcc/common/config/m32r/m32r-common.c8
-rw-r--r--gcc/common/config/mcore/mcore-common.c1
-rw-r--r--gcc/common/config/microblaze/microblaze-common.c10
-rw-r--r--gcc/common/config/mips/mips-common.c10
-rw-r--r--gcc/common/config/mmix/mmix-common.c11
-rw-r--r--gcc/common/config/mn10300/mn10300-common.c1
-rw-r--r--gcc/common/config/nios2/nios2-common.c1
-rw-r--r--gcc/common/config/pa/pa-common.c9
-rw-r--r--gcc/common/config/pdp11/pdp11-common.c10
-rw-r--r--gcc/common/config/powerpcspe/powerpcspe-common.c1
-rw-r--r--gcc/common/config/riscv/riscv-common.c1
-rw-r--r--gcc/common/config/rs6000/rs6000-common.c1
-rw-r--r--gcc/common/config/rx/rx-common.c10
-rw-r--r--gcc/common/config/s390/s390-common.c2
-rw-r--r--gcc/common/config/sh/sh-common.c1
-rw-r--r--gcc/common/config/sparc/sparc-common.c1
-rw-r--r--gcc/common/config/tilegx/tilegx-common.c1
-rw-r--r--gcc/common/config/tilepro/tilepro-common.c1
-rw-r--r--gcc/common/config/v850/v850-common.c1
-rw-r--r--gcc/common/config/visium/visium-common.c10
-rw-r--r--gcc/common/config/xstormy16/xstormy16-common.c10
-rw-r--r--gcc/common/config/xtensa/xtensa-common.c1
-rw-r--r--gcc/doc/invoke.texi41
-rw-r--r--gcc/opts.c1
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
diff --git a/gcc/opts.c b/gcc/opts.c
index ac383d4..ab3f4ae 100644
--- a/gcc/opts.c
+++ b/gcc/opts.c
@@ -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 },