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
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  <l...@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;

Reply via email to