From c31c1e6331dca01ccf2d66b843ac15f68712ecd2 Mon Sep 17 00:00:00 2001 From: Andy Fiddaman Date: Thu, 25 Oct 2018 18:19:36 +0000 Subject: We never want to omit the frame pointer, regardless of the optimisation level or options to gcc - we like stack traces too much and it is of questionable benefit anyway, even on i386. --- gcc/config/i386/i386-options.c | 9 +++++++++ gcc/opts.c | 3 ++- 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/gcc/config/i386/i386-options.c b/gcc/config/i386/i386-options.c index 9f9d1028eb7..04647217c30 100644 --- a/gcc/config/i386/i386-options.c +++ b/gcc/config/i386/i386-options.c @@ -3040,6 +3040,15 @@ free (str); } + /* + * We never want to omit the frame pointer, regardless of the optimisation + * level or options to gcc - we like stack traces too much and it is of + * questionable benefit anyway, even on i386. + */ + + flag_omit_frame_pointer = 0; + opts->x_flag_omit_frame_pointer = 0; + /* Save the initial options in case the user does function specific options. */ if (main_args_p) diff --git a/gcc/opts.c b/gcc/opts.c index 24bb64198c8..6e220554be5 100644 --- a/gcc/opts.c +++ b/gcc/opts.c @@ -440,7 +440,7 @@ static const struct default_options default_options_table[] = { OPT_LEVELS_1_PLUS, OPT_fipa_reference, NULL, 1 }, { OPT_LEVELS_1_PLUS, OPT_fipa_reference_addressable, NULL, 1 }, { OPT_LEVELS_1_PLUS, OPT_fmerge_constants, NULL, 1 }, - { OPT_LEVELS_1_PLUS, OPT_fomit_frame_pointer, NULL, 1 }, + { OPT_LEVELS_1_PLUS, OPT_fomit_frame_pointer, NULL, 0 }, { OPT_LEVELS_1_PLUS, OPT_freorder_blocks, NULL, 1 }, { OPT_LEVELS_1_PLUS, OPT_fshrink_wrap, NULL, 1 }, { OPT_LEVELS_1_PLUS, OPT_fsplit_wide_types, NULL, 1 }, @@ -473,6 +473,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_ftree_sra, NULL, 1 }, + /* -O2 and -Os optimizations. */ { OPT_LEVELS_2_PLUS, OPT_fcaller_saves, NULL, 1 }, { OPT_LEVELS_2_PLUS, OPT_fcode_hoisting, NULL, 1 },