i386: Use the STC bb-reorder algorithm at -Os (PR67864)
authorSegher Boessenkool <segher@kernel.crashing.org>
Sat, 7 Nov 2015 19:44:21 +0000 (20:44 +0100)
committerSegher Boessenkool <segher@gcc.gnu.org>
Sat, 7 Nov 2015 19:44:21 +0000 (20:44 +0100)
For x86, STC still gives better results for optimise-for-size than
"simple" does.  So use STC at -Os as well.

PR rtl-optimization/67864
* common/config/i386/i386-common.c (ix86_option_optimization_table)
<OPT_freorder_blocks_algorithm_>: Use REORDER_BLOCKS_ALGORITHM_STC
at -Os and up.

From-SVN: r229937

gcc/ChangeLog
gcc/common/config/i386/i386-common.c

index 5d9d2f8..109936d 100644 (file)
@@ -1,3 +1,10 @@
+2015-11-07  Segher Boessenkool  <segher@kernel.crashing.org>
+
+       PR rtl-optimization/67864
+       * common/config/i386/i386-common.c (ix86_option_optimization_table)
+       <OPT_freorder_blocks_algorithm_>: Use REORDER_BLOCKS_ALGORITHM_STC
+       at -Os and up.
+
 2015-11-07  Richard Sandiford  <richard.sandiford@arm.com>
 
        * trans-mem.c (is_tm_pure_call): Use gimple_call_flags for
index 0f8c3e1..49899bd 100644 (file)
@@ -997,6 +997,9 @@ static const struct default_options ix86_option_optimization_table[] =
     { OPT_LEVELS_2_PLUS, OPT_free, NULL, 1 },
     /* Enable function splitting at -O2 and higher.  */
     { OPT_LEVELS_2_PLUS, OPT_freorder_blocks_and_partition, NULL, 1 },
+    /* The STC algorithm produces the smallest code at -Os, for x86.  */
+    { OPT_LEVELS_2_PLUS, OPT_freorder_blocks_algorithm_, NULL,
+      REORDER_BLOCKS_ALGORITHM_STC },
     /* Turn off -fschedule-insns by default.  It tends to make the
        problem with not enough registers even worse.  */
     { OPT_LEVELS_ALL, OPT_fschedule_insns, NULL, 0 },