sparc-common.c (sparc_option_optimization_table): Enable REE at -O2 and higher.
authorEric Botcazou <ebotcazou@adacore.com>
Thu, 24 Nov 2016 15:30:17 +0000 (15:30 +0000)
committerEric Botcazou <ebotcazou@gcc.gnu.org>
Thu, 24 Nov 2016 15:30:17 +0000 (15:30 +0000)
* common/config/sparc/sparc-common.c (sparc_option_optimization_table):
Enable REE at -O2 and higher.
* config/sparc/sparc.c (sparc_option_override): Disable it by default
in 32-bit mode.

From-SVN: r242841

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

index a6641c1653b138af95dca1533ebf905dda2b0361..c1469f53ff3a53f772e01ff5652398e60f55c48c 100644 (file)
@@ -1,3 +1,10 @@
+2016-11-24  Eric Botcazou  <ebotcazou@adacore.com>
+
+       * common/config/sparc/sparc-common.c (sparc_option_optimization_table):
+       Enable REE at -O2 and higher.
+       * config/sparc/sparc.c (sparc_option_override): Disable it by default
+       in 32-bit mode.
+
 2016-11-24  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
 
        PR target/48863
index 3958b7ec5e867adb8f54848b0943d4ddef949eb6..721c8b355c26a7532f5cfe693ee938b58b2ec328 100644 (file)
@@ -28,6 +28,8 @@ along with GCC; see the file COPYING3.  If not see
 static const struct default_options sparc_option_optimization_table[] =
   {
     { OPT_LEVELS_1_PLUS, OPT_fomit_frame_pointer, NULL, 1 },
+    /* Enable redundant extension instructions removal at -O2 and higher.  */
+    { OPT_LEVELS_2_PLUS, OPT_free, NULL, 1 },
     { OPT_LEVELS_NONE, 0, NULL, 0 }
   };
 
index 2d1f598434bfa5e9f333530def64a9cb9c451dc9..a70a0ad7b02adc498ae84f06210d126a61065078 100644 (file)
@@ -1713,6 +1713,11 @@ sparc_option_override (void)
      pessimizes for double floating-point registers.  */
   if (!global_options_set.x_flag_ira_share_save_slots)
     flag_ira_share_save_slots = 0;
+
+  /* Only enable REE by default in 64-bit mode where it helps to eliminate
+     redundant 32-to-64-bit extensions.  */
+  if (!global_options_set.x_flag_ree && TARGET_ARCH32)
+    flag_ree = 0;
 }
 \f
 /* Miscellaneous utilities.  */