> On Sep 24, 2015, at 10:16 AM, Teresa Johnson <tejohn...@google.com> wrote: > > This patch unsets -freorder-blocks-and-partition when -fprofile-use > is not specified. Function splitting was not actually being performed > in that case, as probably_never_executed_bb_p does not distinguish > any basic blocks as being cold vs hot when there is no profile data. > > Leaving it enabled, however, causes the assembly code generator to create > (empty) cold sections and labels, leading to unnecessary size overhead. > > Bootstrapped and tested on x86-64-unknown-linux-gnu. Ok for trunk?
This might be ok for now but there is a notion to enable it for non profile case. Thanks, Andrew > > Thanks, > Teresa > > 2015-09-24 Teresa Johnson <tejohn...@google.com> > > * opts.c (finish_options): Unset -freorder-blocks-and-partition > if not using profile. > > Index: opts.c > =================================================================== > --- opts.c (revision 228062) > +++ opts.c (working copy) > @@ -821,7 +821,17 @@ finish_options (struct gcc_options *opts, struct g > opts->x_flag_reorder_blocks = 1; > } > > + /* Disable -freorder-blocks-and-partition when -fprofile-use is not in > + effect. Function splitting was not actually being performed in that > case, > + as probably_never_executed_bb_p does not distinguish any basic blocks as > + being cold vs hot when there is no profile data. Leaving it enabled, > + however, causes the assembly code generator to create (empty) cold > + sections and labels, leading to unnecessary size overhead. */ > if (opts->x_flag_reorder_blocks_and_partition > + && !opts_set->x_flag_profile_use) > + opts->x_flag_reorder_blocks_and_partition = 0; > + > + if (opts->x_flag_reorder_blocks_and_partition > && !opts_set->x_flag_reorder_functions) > opts->x_flag_reorder_functions = 1; > > > -- > Teresa Johnson | Software Engineer | tejohn...@google.com | 408-460-2413