diff --git a/gcc/config/i386/i386.c b/gcc/config/i386/i386.c
index 0e6bf3e0fefcdd79d78771c283e7e5e57a4aa40d..80fee627358881bec5749efaed12d7645631c6fd 100644
--- a/gcc/config/i386/i386.c
+++ b/gcc/config/i386/i386.c
@@ -20366,7 +20366,6 @@ ix86_shift_rotate_cost (const struct processor_costs *cost,
       else
 	return cost->shift_var;
     }
-  return cost->shift_const;
 }
 
 /* Compute a (partial) cost for rtx X.  Return true if the complete
diff --git a/gcc/cp/logic.cc b/gcc/cp/logic.cc
index 9d892b1473bf5988e097f7c478f1892c5a18b292..f31ae8c58ae1b7db5642bf3f1e35d891bc144dbf 100644
--- a/gcc/cp/logic.cc
+++ b/gcc/cp/logic.cc
@@ -495,7 +495,6 @@ cnf_size_r (tree t)
 	  else
 	    /* Neither LHS nor RHS is a conjunction.  */
 	    return std::make_pair (0, false);
-	  gcc_unreachable ();
 	}
       if (conjunction_p (lhs))
 	{
@@ -536,7 +535,6 @@ cnf_size_r (tree t)
 	  else
 	    /* Neither LHS nor RHS is a conjunction.  */
 	    return std::make_pair (2, false);
-	  gcc_unreachable ();
 	}
       if (conjunction_p (lhs))
 	{
diff --git a/gcc/cp/pt.c b/gcc/cp/pt.c
index 6e25a3891a524c82eb3037a85cc94f34e69efb65..f4b9d9673fbedceba7be02af09784bd6906b376b 100644
--- a/gcc/cp/pt.c
+++ b/gcc/cp/pt.c
@@ -1969,9 +1969,6 @@ iterative_hash_template_arg (tree arg, hashval_t val)
 	val = iterative_hash_template_arg (TREE_OPERAND (arg, i), val);
       return val;
     }
-
-  gcc_unreachable ();
-  return 0;
 }
 
 /* Unregister the specialization SPEC as a specialization of TMPL.
diff --git a/gcc/fortran/target-memory.c b/gcc/fortran/target-memory.c
index 7b21a9e04e8b375bc0327259bcc2a2db59d775bd..ab4665c6782051dab734f49b93465fc93a733828 100644
--- a/gcc/fortran/target-memory.c
+++ b/gcc/fortran/target-memory.c
@@ -138,7 +138,6 @@ gfc_element_size (gfc_expr *e, size_t *siz)
       *siz = 0;
       return false;
     }
-  return true;
 }
 
 
diff --git a/gcc/objc/objc-act.c b/gcc/objc/objc-act.c
index 9baa46d2243af6d3c682b94499944893c728041d..89f46294123b69bd1cb0bbb3672effe445584943 100644
--- a/gcc/objc/objc-act.c
+++ b/gcc/objc/objc-act.c
@@ -1904,9 +1904,6 @@ objc_build_setter_call (tree lhs, tree rhs)
 					 setter_argument, NULL);
       return setter;
     }
-
-  /* Unreachable, but the compiler may not realize.  */
-  return error_mark_node;
 }
 
 /* This hook routine is called when a MODIFY_EXPR is being built.  We
diff --git a/gcc/reload.c b/gcc/reload.c
index 190db6ac47f20d9eb33020c8e8014af8aa9cc004..9ee3439709b1dd5d718d18b36aca0d60bf594f4d 100644
--- a/gcc/reload.c
+++ b/gcc/reload.c
@@ -6602,11 +6602,10 @@ reg_overlap_mentioned_for_reload_p (rtx x, rtx in)
 	return (rtx_equal_p (x, in)
 		|| reg_overlap_mentioned_for_reload_p (x, XEXP (in, 0))
 		|| reg_overlap_mentioned_for_reload_p (x, XEXP (in, 1)));
-      else return (reg_overlap_mentioned_for_reload_p (XEXP (x, 0), in)
-		   || reg_overlap_mentioned_for_reload_p (XEXP (x, 1), in));
+      else
+	return (reg_overlap_mentioned_for_reload_p (XEXP (x, 0), in)
+		|| reg_overlap_mentioned_for_reload_p (XEXP (x, 1), in));
     }
-
-  gcc_unreachable ();
 }
 
 /* Return nonzero if anything in X contains a MEM.  Look also for pseudo
diff --git a/gcc/sel-sched-ir.h b/gcc/sel-sched-ir.h
index 8ee0529d5a86ea5bb28ace56479006b392554cec..18e03c4cb9692420e3160b722c40a21d8173f888 100644
--- a/gcc/sel-sched-ir.h
+++ b/gcc/sel-sched-ir.h
@@ -1493,8 +1493,6 @@ bb_next_bb (basic_block bb)
     default:
       return bb->next_bb;
     }
-
-  gcc_unreachable ();
 }
 
 
diff --git a/gcc/tree-chrec.c b/gcc/tree-chrec.c
index eeb67ded3dcfc834022bff28f41529f2b859744f..ad6f981191fba19e672c3251a87df9b1d33b5753 100644
--- a/gcc/tree-chrec.c
+++ b/gcc/tree-chrec.c
@@ -1148,8 +1148,6 @@ evolution_function_is_invariant_rec_p (tree chrec, int loopnum)
     default:
       return false;
     }
-
-  return false;
 }
 
 /* Return true if CHREC is invariant in loop LOOPNUM, false otherwise. */
diff --git a/gcc/tree-if-conv.c b/gcc/tree-if-conv.c
index d0ca04600ce5c615f27606346fb587fea36f751d..1cc2016076aeb887a3c05cd4b7cb9d6523647f8b 100644
--- a/gcc/tree-if-conv.c
+++ b/gcc/tree-if-conv.c
@@ -1110,8 +1110,6 @@ if_convertible_stmt_p (gimple *stmt, vec<data_reference_p> refs)
 	}
       return false;
     }
-
-  return true;
 }
 
 /* Assumes that BB has more than 1 predecessors.
diff --git a/gcc/tree-ssa-pre.c b/gcc/tree-ssa-pre.c
index 0669aaaac473c16084740029a0dd56391f485e88..a49f87fbe6b4b732015164c73845837afb9460be 100644
--- a/gcc/tree-ssa-pre.c
+++ b/gcc/tree-ssa-pre.c
@@ -1234,7 +1234,6 @@ fully_constant_expression (pre_expr e)
     default:
       return e;
     }
-  return e;
 }
 
 /* Translate the VUSE backwards through phi nodes in E->dest, so that
diff --git a/gcc/tree-vrp.c b/gcc/tree-vrp.c
index dd7723629ba037a96b08c9379d039dba18bc20ee..b3adc26a93328425ac15e22441164735b5df8c1d 100644
--- a/gcc/tree-vrp.c
+++ b/gcc/tree-vrp.c
@@ -330,8 +330,6 @@ operand_less_p (tree val, tree val2)
       else
 	return -2;
     }
-
-  return 0;
 }
 
 /* Compare two values VAL1 and VAL2.  Return
diff --git a/gcc/varasm.c b/gcc/varasm.c
index 8c7aba2db61c45a60e0b6c9b88d1b1e8811b1ac3..d6031d6f1a298299f5ed92b32ad5131c5cd17a07 100644
--- a/gcc/varasm.c
+++ b/gcc/varasm.c
@@ -3415,8 +3415,6 @@ compare_constant (const tree t1, const tree t2)
     default:
       return 0;
     }
-
-  gcc_unreachable ();
 }
 
 /* Return the section into which constant EXP should be placed.  */
diff --git a/libcpp/charset.c b/libcpp/charset.c
index 0b0ccc6c021ed2ca0890c73239213b824c8eee65..bcfd3ad44e12e066687bef3406e24470c8577254 100644
--- a/libcpp/charset.c
+++ b/libcpp/charset.c
@@ -1534,7 +1534,6 @@ convert_escape (cpp_reader *pfile, const uchar *from, const uchar *limit,
     case 'x':
       return convert_hex (pfile, from, limit, tbuf, cvt,
 			  char_range, loc_reader, ranges);
-      break;
 
     case '0':  case '1':  case '2':  case '3':
     case '4':  case '5':  case '6':  case '7':