> 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

Reply via email to