Hi, flag_reorder_functions is now able to offload code leading to cold function calls. For this reason it now makes sense to enable with w/o profiling as well (I plan to enable it for -O2 but by a separate patch)
Bootstrapped/regtested x86_64-linux, comitted. Honza * opts.c (finish_options): x_flag_reorder_blocks_and_partition no longer requires x_flag_profile_use. Index: opts.c =================================================================== --- opts.c (revision 249013) +++ opts.c (working copy) @@ -863,16 +863,6 @@ finish_options (struct gcc_options *opts 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;