Fix sh port WRT fallthru

Jeff Law law@redhat.com
Wed Oct 26 20:26:00 GMT 2016


This adjusts existing fallthru comments and adds some new ones.  I 
couldn't convince myself the original code in movsicc was correct,  It 
looks like we properly reverse the condition, but not the operands in 
the case of LT/LE/LEU/LTU.  But then we do almost the same th ing in 
sh_emit_scc_to_t as well.   So I just kept the existing semantics and 
added fallthru comments.

In gen_shl_and, I'm pretty sure we ended to fallthru.

Installing on the trunk.

Jeff
-------------- next part --------------
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 3e7704c..0eb5f88 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,5 +1,9 @@
 2016-10-26  Jeff Law  <law@redhat.com>
 
+	* config/sh/sh.c (output_branch): Add missing fallthru comments.
+	(gen_shl_and): Likewise.
+	* config/sh/sh.md (movsicc): Add missing fallthru comments.
+
 	* config/mips/mips.c (mips16_constant_cost): Add missing
 	fallthru comments.
 	(mips16_build_call_stub): Increase buffer size.  Adjust
diff --git a/gcc/config/sh/sh.c b/gcc/config/sh/sh.c
index cf5231e..4ca4b74 100644
--- a/gcc/config/sh/sh.c
+++ b/gcc/config/sh/sh.c
@@ -2665,6 +2665,7 @@ output_branch (int logic, rtx_insn *insn, rtx *operands)
 
 	  return "";
 	}
+      /* FALLTHRU */
       /* When relaxing, handle this like a short branch.  The linker
 	 will fix it up if it still doesn't fit after relaxation.  */
     case 2:
@@ -2690,7 +2691,7 @@ output_branch (int logic, rtx_insn *insn, rtx *operands)
 
 	  return "";
 	}
-      /* When relaxing, fall through.  */
+      /* FALLTHRU */
     case 4:
       {
 	char buffer[10];
@@ -3461,7 +3462,7 @@ sh_rtx_costs (rtx x, machine_mode mode ATTRIBUTE_UNUSED, int outer_code,
 	  *total = COSTS_N_INSNS (1);
 	  return true;
 	}
-      /* Fall through to shiftcosts.  */
+      /* FALLTHRU */
     case ASHIFT:
     case ASHIFTRT:
       {
@@ -4069,12 +4070,14 @@ gen_shl_and (rtx dest, rtx left_rtx, rtx mask_rtx, rtx source)
       }
     case 4:
       shift_gen_fun = gen_shifty_op;
+      /* FALLTHRU */
     case 3:
       /* If the topmost bit that matters is set, set the topmost bits
 	 that don't matter.  This way, we might be able to get a shorter
 	 signed constant.  */
       if (mask & ((HOST_WIDE_INT) 1 << (31 - total_shift)))
 	mask |= (HOST_WIDE_INT) ((HOST_WIDE_INT_M1U) << (31 - total_shift));
+      /* FALLTHRU */
     case 2:
       /* Don't expand fine-grained when combining, because that will
          make the pattern fail.  */
@@ -4647,6 +4650,7 @@ dump_table (rtx_insn *start, rtx_insn *barrier)
 		  align_insn = scan;
 		  need_align = false;
 		}
+	      /* FALLTHRU */
 	    case DImode:
 	      for (lab = p->label; lab; lab = LABEL_REFS (lab))
 		scan = emit_label_after (lab, scan);
diff --git a/gcc/config/sh/sh.md b/gcc/config/sh/sh.md
index dcb31eb..e80ef58 100644
--- a/gcc/config/sh/sh.md
+++ b/gcc/config/sh/sh.md
@@ -1509,6 +1509,7 @@
       case LT: case LE: case LEU: case LTU:
 	if (GET_MODE_CLASS (GET_MODE (op0)) != MODE_INT)
 	  break;
+	/* FALLTHRU */
       case NE:
 	new_code = reverse_condition (code);
 	break;


More information about the Gcc-patches mailing list