sh.h (BRANCH_COST): Use sh_branch_cost variable.
authorOleg Endo <olegendo@gcc.gnu.org>
Thu, 29 Dec 2011 15:11:47 +0000 (15:11 +0000)
committerOleg Endo <olegendo@gcc.gnu.org>
Thu, 29 Dec 2011 15:11:47 +0000 (15:11 +0000)
* config/sh/sh.h (BRANCH_COST): Use sh_branch_cost variable.
* config/sh/sh.c (sh_option_override): Simplify sh_branch_cost
        expression.

From-SVN: r182723

gcc/ChangeLog
gcc/config/sh/sh.c
gcc/config/sh/sh.h

index 5e31912..4c8ff34 100644 (file)
@@ -1,3 +1,9 @@
+2011-12-29  Oleg Endo  <olegendo@gcc.gnu.org>
+
+       * config/sh/sh.h (BRANCH_COST): Use sh_branch_cost variable.
+       * config/sh/sh.c (sh_option_override): Simplify sh_branch_cost
+        expression.    
+
 2011-12-28  Ian Lance Taylor  <iant@google.com>
 
        * dwarf2out.c (gen_compile_unit_die): Use DW_LANG_Go for Go.
index 1b289ad..744c49a 100644 (file)
@@ -724,8 +724,15 @@ sh_option_override (void)
   else
     sh_divsi3_libfunc = "__sdivsi3";
   if (sh_branch_cost == -1)
-    sh_branch_cost
-      = TARGET_SH5 ? 1 : ! TARGET_SH2 || TARGET_HARD_SH4 ? 2 : 1;
+    {
+      sh_branch_cost = 1;
+
+      /*  The SH1 does not have delay slots, hence we get a pipeline stall
+         at every branch.  The SH4 is superscalar, so the single delay slot
+         is not sufficient to keep both pipelines filled.  */
+      if (! TARGET_SH2 || TARGET_HARD_SH4)
+       sh_branch_cost = 2;
+    }
 
   for (regno = 0; regno < FIRST_PSEUDO_REGISTER; regno++)
     if (! VALID_REGISTER_P (regno))
index f873b9d..0f06fb8 100644 (file)
@@ -2088,12 +2088,8 @@ struct sh_args {
    different code that does fewer memory accesses.  */
 
 /* A C expression for the cost of a branch instruction.  A value of 1
-   is the default; other values are interpreted relative to that.
-   The SH1 does not have delay slots, hence we get a pipeline stall
-   at every branch.  The SH4 is superscalar, so the single delay slot
-   is not sufficient to keep both pipelines filled.  */
-#define BRANCH_COST(speed_p, predictable_p) \
-       (TARGET_SH5 ? 1 : ! TARGET_SH2 || TARGET_HARD_SH4 ? 2 : 1)
+   is the default; other values are interpreted relative to that.  */
+#define BRANCH_COST(speed_p, predictable_p) sh_branch_cost
 \f
 /* Assembler output control.  */