Commit efeee67f by Wilco Dijkstra Committed by Wilco Dijkstra

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
parent 9e780144
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.
......@@ -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 }
......
......@@ -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 },
......
......@@ -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 }
};
......
......@@ -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 },
......
......@@ -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 },
......
......@@ -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;
......@@ -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;
......@@ -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 }
......
......@@ -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;
......@@ -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;
......@@ -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
......
......@@ -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;
......@@ -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
......
......@@ -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
......
......@@ -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 },
......
......@@ -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;
......@@ -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 \
......
......@@ -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;
......@@ -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 },
......
......@@ -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 }
};
......
......@@ -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
......
......@@ -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
......
......@@ -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 }
......
......@@ -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 }
};
......
......@@ -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 }
......
......@@ -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
......
......@@ -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 },
......
......@@ -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 }
......
......@@ -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 }
......
......@@ -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},
......
......@@ -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},
......
......@@ -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
......
......@@ -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;
......@@ -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;
......@@ -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
......
......@@ -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 },
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment