diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 22e69c0..3144019 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,5 +1,16 @@
 2014-09-02  Trevor Saunders  <tsaunders@mozilla.com>
 
+	* asan.c, cfgexpand.c, config/alpha/alpha.md, config/arm/arm.c,
+	config/epiphany/epiphany.md, config/h8300/h8300.c, config/i386/i386.md,
+	config/m32r/m32r.c, config/mcore/mcore.md, config/mips/mips.c,
+	config/mips/mips.md, config/nios2/nios2.c, config/pa/pa.c,
+	config/s390/s390.c, config/s390/s390.md, config/sh/sh-mem.cc,
+	config/sh/sh.c, config/sparc/sparc.c, dojump.c, function.c, optabs.c,
+	stmt.c: Assign the result of gen_label_rtx to rtx_code_label * instead
+	of rtx.
+
+2014-09-02  Trevor Saunders  <tsaunders@mozilla.com>
+
 	* alloc-pool.c: Include coretypes.h.
 	* cgraph.h, dbxout.c, dwarf2out.c, except.c, except.h, function.c,
 	function.h, symtab.c, tree-cfg.c, tree-eh.c: Use hash_map and
diff --git a/gcc/asan.c b/gcc/asan.c
index 4ed9344..cf5de27 100644
--- a/gcc/asan.c
+++ b/gcc/asan.c
@@ -983,7 +983,8 @@ rtx_insn *
 asan_emit_stack_protection (rtx base, rtx pbase, unsigned int alignb,
 			    HOST_WIDE_INT *offsets, tree *decls, int length)
 {
-  rtx shadow_base, shadow_mem, ret, mem, orig_base, lab;
+  rtx shadow_base, shadow_mem, ret, mem, orig_base;
+  rtx_code_label *lab;
   rtx_insn *insns;
   char buf[30];
   unsigned char shadow_bytes[4];
@@ -1174,10 +1175,10 @@ asan_emit_stack_protection (rtx base, rtx pbase, unsigned int alignb,
   /* Construct epilogue sequence.  */
   start_sequence ();
 
-  lab = NULL_RTX;  
+  lab = NULL;
   if (use_after_return_class != -1)
     {
-      rtx lab2 = gen_label_rtx ();
+      rtx_code_label *lab2 = gen_label_rtx ();
       char c = (char) ASAN_STACK_MAGIC_USE_AFTER_RET;
       int very_likely = REG_BR_PROB_BASE - (REG_BR_PROB_BASE / 2000 - 1);
       emit_cmp_and_jump_insns (orig_base, base, EQ, NULL_RTX,
diff --git a/gcc/cfgexpand.c b/gcc/cfgexpand.c
index 0a1b4bf..7d11b1b 100644
--- a/gcc/cfgexpand.c
+++ b/gcc/cfgexpand.c
@@ -2007,7 +2007,7 @@ label_rtx_for_bb (basic_block bb ATTRIBUTE_UNUSED)
       return label_rtx (lab);
     }
 
-  rtx l = gen_label_rtx ();
+  rtx_code_label *l = gen_label_rtx ();
   lab_rtx_for_bb->put (bb, l);
   return l;
 }
@@ -2469,7 +2469,7 @@ expand_asm_operands (tree string, tree outputs, tree inputs,
   enum machine_mode *inout_mode = XALLOCAVEC (enum machine_mode, noutputs);
   const char **constraints = XALLOCAVEC (const char *, noutputs + ninputs);
   int old_generating_concat_p = generating_concat_p;
-  rtx fallthru_label = NULL_RTX;
+  rtx_code_label *fallthru_label = NULL;
 
   /* An ASM with no outputs needs to be treated as volatile, for now.  */
   if (noutputs == 0)
diff --git a/gcc/config/alpha/alpha.md b/gcc/config/alpha/alpha.md
index 34ff1f0..8cf8a06 100644
--- a/gcc/config/alpha/alpha.md
+++ b/gcc/config/alpha/alpha.md
@@ -4907,8 +4907,8 @@
     }
   else
     {
-      rtx out_label = 0;
-      rtx loop_label = gen_label_rtx ();
+      rtx_code_label *out_label = 0;
+      rtx_code_label *loop_label = gen_label_rtx ();
       rtx want = gen_reg_rtx (Pmode);
       rtx tmp = gen_reg_rtx (Pmode);
       rtx memref, test;
diff --git a/gcc/config/arm/arm.c b/gcc/config/arm/arm.c
index ba677ab..9ffdb3d 100644
--- a/gcc/config/arm/arm.c
+++ b/gcc/config/arm/arm.c
@@ -14490,7 +14490,7 @@ arm_block_move_unaligned_loop (rtx dest, rtx src, HOST_WIDE_INT length,
 			       unsigned int interleave_factor,
 			       HOST_WIDE_INT bytes_per_iter)
 {
-  rtx label, src_reg, dest_reg, final_src, test;
+  rtx src_reg, dest_reg, final_src, test;
   HOST_WIDE_INT leftover;
   
   leftover = length % bytes_per_iter;
@@ -14506,7 +14506,7 @@ arm_block_move_unaligned_loop (rtx dest, rtx src, HOST_WIDE_INT length,
 				   0, 0, OPTAB_WIDEN);
 
   /* Emit the start of the loop.  */
-  label = gen_label_rtx ();
+  rtx_code_label *label = gen_label_rtx ();
   emit_label (label);
   
   /* Emit the loop body.  */
@@ -16108,7 +16108,7 @@ struct minipool_fixup
 
 static Mnode *	minipool_vector_head;
 static Mnode *	minipool_vector_tail;
-static rtx	minipool_vector_label;
+static rtx_code_label	*minipool_vector_label;
 static int	minipool_pad;
 
 /* The linked list of all minipool fixes required for this function.  */
diff --git a/gcc/config/epiphany/epiphany.md b/gcc/config/epiphany/epiphany.md
index d8d5555..1a2f5d3 100644
--- a/gcc/config/epiphany/epiphany.md
+++ b/gcc/config/epiphany/epiphany.md
@@ -976,7 +976,7 @@
       REAL_VALUE_TYPE offset;
       rtx limit;
       rtx tmp = gen_reg_rtx (SFmode);
-      rtx label = gen_label_rtx ();
+      rtx_code_label *label = gen_label_rtx ();
       rtx bit31;
       rtx cc1 = gen_rtx_REG (CC_FPmode, CCFP_REGNUM);
       rtx cmp = gen_rtx_LT (VOIDmode, cc1, CONST0_RTX (SFmode));
diff --git a/gcc/config/h8300/h8300.c b/gcc/config/h8300/h8300.c
index be6fe64..45e469c 100644
--- a/gcc/config/h8300/h8300.c
+++ b/gcc/config/h8300/h8300.c
@@ -4979,8 +4979,8 @@ expand_a_rotate (rtx operands[])
   if (GET_CODE (rotate_amount) != CONST_INT)
     {
       rtx counter = gen_reg_rtx (QImode);
-      rtx start_label = gen_label_rtx ();
-      rtx end_label = gen_label_rtx ();
+      rtx_code_label *start_label = gen_label_rtx ();
+      rtx_code_label *end_label = gen_label_rtx ();
 
       /* If the rotate amount is less than or equal to 0,
 	 we go out of the loop.  */
diff --git a/gcc/config/i386/i386.md b/gcc/config/i386/i386.md
index 723f42f..d5588c8 100644
--- a/gcc/config/i386/i386.md
+++ b/gcc/config/i386/i386.md
@@ -9173,7 +9173,7 @@
    (use (match_operand:QI 2 "register_operand"))]
   ""
 {
-  rtx label = gen_label_rtx ();
+  rtx_code_label *label = gen_label_rtx ();
   rtx tmp;
 
   emit_insn (gen_testqi_ccz_1 (operands[2],
@@ -9836,7 +9836,7 @@
    (use (match_operand:QI 2 "register_operand"))]
   ""
 {
-  rtx label = gen_label_rtx ();
+  rtx_code_label *label = gen_label_rtx ();
   rtx tmp;
 
   emit_insn (gen_testqi_ccz_1 (operands[2],
@@ -13844,7 +13844,7 @@
    (use (match_operand:XF 2 "general_operand"))]
   "TARGET_USE_FANCY_MATH_387"
 {
-  rtx label = gen_label_rtx ();
+  rtx_code_label *label = gen_label_rtx ();
 
   rtx op1 = gen_reg_rtx (XFmode);
   rtx op2 = gen_reg_rtx (XFmode);
@@ -13869,7 +13869,7 @@
 {
   rtx (*gen_truncxf) (rtx, rtx);
 
-  rtx label = gen_label_rtx ();
+  rtx_code_label *label = gen_label_rtx ();
 
   rtx op1 = gen_reg_rtx (XFmode);
   rtx op2 = gen_reg_rtx (XFmode);
@@ -13915,7 +13915,7 @@
    (use (match_operand:XF 2 "general_operand"))]
   "TARGET_USE_FANCY_MATH_387"
 {
-  rtx label = gen_label_rtx ();
+  rtx_code_label *label = gen_label_rtx ();
 
   rtx op1 = gen_reg_rtx (XFmode);
   rtx op2 = gen_reg_rtx (XFmode);
@@ -13940,7 +13940,7 @@
 {
   rtx (*gen_truncxf) (rtx, rtx);
 
-  rtx label = gen_label_rtx ();
+  rtx_code_label *label = gen_label_rtx ();
 
   rtx op1 = gen_reg_rtx (XFmode);
   rtx op2 = gen_reg_rtx (XFmode);
@@ -16950,7 +16950,7 @@
     {
       rtx xops[3];
       rtx picreg = gen_rtx_REG (Pmode, PIC_OFFSET_TABLE_REGNUM);
-      rtx label_rtx = gen_label_rtx ();
+      rtx_code_label *label_rtx = gen_label_rtx ();
       emit_insn (gen_set_got_labelled (pic_offset_table_rtx, label_rtx));
       xops[0] = xops[1] = picreg;
       xops[2] = machopic_gen_offset (gen_rtx_LABEL_REF (SImode, label_rtx));
@@ -18532,7 +18532,7 @@
 	(unspec_volatile:SI [(const_int 0)] UNSPECV_XBEGIN))]
   "TARGET_RTM"
 {
-  rtx label = gen_label_rtx ();
+  rtx_code_label *label = gen_label_rtx ();
 
   /* xbegin is emitted as jump_insn, so reload won't be able
      to reload its operand.  Force the value into AX hard register.  */
diff --git a/gcc/config/m32r/m32r.c b/gcc/config/m32r/m32r.c
index aadbce1..bcd4309 100644
--- a/gcc/config/m32r/m32r.c
+++ b/gcc/config/m32r/m32r.c
@@ -2539,7 +2539,7 @@ m32r_expand_block_move (rtx operands[])
   /* If necessary, generate a loop to handle the bulk of the copy.  */
   if (bytes)
     {
-      rtx label = NULL_RTX;
+      rtx_code_label *label = NULL;
       rtx final_src = NULL_RTX;
       rtx at_a_time = GEN_INT (MAX_MOVE_BYTES);
       rtx rounded_total = GEN_INT (bytes);
diff --git a/gcc/config/mcore/mcore.md b/gcc/config/mcore/mcore.md
index a65747d..5b49136 100644
--- a/gcc/config/mcore/mcore.md
+++ b/gcc/config/mcore/mcore.md
@@ -3007,8 +3007,8 @@
     }
   else
     {
-      rtx out_label = 0;
-      rtx loop_label = gen_label_rtx ();
+      rtx_code_label *out_label = 0;
+      rtx_code_label *loop_label = gen_label_rtx ();
       rtx step = gen_reg_rtx (Pmode);
       rtx tmp = gen_reg_rtx (Pmode);
       rtx test, memref;
diff --git a/gcc/config/mips/mips.c b/gcc/config/mips/mips.c
index 22afcad..3e77491 100644
--- a/gcc/config/mips/mips.c
+++ b/gcc/config/mips/mips.c
@@ -7455,7 +7455,7 @@ mips_expand_synci_loop (rtx begin, rtx end)
   length = mips_force_binary (Pmode, MINUS, end, begin);
 
   /* Loop back to here.  */
-  label = gen_label_rtx ();
+    label = gen_label_rtx ();
   emit_label (label);
 
   emit_insn (gen_synci (begin));
@@ -12465,7 +12465,7 @@ mips_output_conditional_branch (rtx_insn *insn, rtx *operands,
 				const char *branch_if_false)
 {
   unsigned int length;
-  rtx taken, not_taken;
+  rtx taken;
 
   gcc_assert (LABEL_P (operands[0]));
 
@@ -12480,7 +12480,7 @@ mips_output_conditional_branch (rtx_insn *insn, rtx *operands,
   /* Generate a reversed branch around a direct jump.  This fallback does
      not use branch-likely instructions.  */
   mips_branch_likely = false;
-  not_taken = gen_label_rtx ();
+  rtx_code_label *not_taken = gen_label_rtx ();
   taken = operands[0];
 
   /* Generate the reversed branch to NOT_TAKEN.  */
@@ -16436,7 +16436,8 @@ mips16_split_long_branches (void)
 	    && get_attr_length (insn) > 4
 	    && (any_condjump_p (insn) || any_uncondjump_p (insn)))
 	  {
-	    rtx old_label, new_label, temp, saved_temp;
+	    rtx old_label, temp, saved_temp;
+	    rtx_code_label *new_label;
 	    rtx target;
 	    rtx_insn *jump, *jump_sequence;
 
@@ -16465,7 +16466,7 @@ mips16_split_long_branches (void)
 
 	    if (simplejump_p (insn))
 	      /* We're going to replace INSN with a longer form.  */
-	      new_label = NULL_RTX;
+	      new_label = NULL;
 	    else
 	      {
 		/* Create a branch-around label for the original
diff --git a/gcc/config/mips/mips.md b/gcc/config/mips/mips.md
index 9c404dd..d47bb78 100644
--- a/gcc/config/mips/mips.md
+++ b/gcc/config/mips/mips.md
@@ -3729,8 +3729,8 @@
   rtx reg1 = gen_reg_rtx (DFmode);
   rtx reg2 = gen_reg_rtx (DFmode);
   rtx reg3 = gen_reg_rtx (SImode);
-  rtx label1 = gen_label_rtx ();
-  rtx label2 = gen_label_rtx ();
+  rtx_code_label *label1 = gen_label_rtx ();
+  rtx_code_label *label2 = gen_label_rtx ();
   rtx test;
   REAL_VALUE_TYPE offset;
 
@@ -3775,8 +3775,8 @@
   rtx reg1 = gen_reg_rtx (DFmode);
   rtx reg2 = gen_reg_rtx (DFmode);
   rtx reg3 = gen_reg_rtx (DImode);
-  rtx label1 = gen_label_rtx ();
-  rtx label2 = gen_label_rtx ();
+  rtx_code_label *label1 = gen_label_rtx ();
+  rtx_code_label *label2 = gen_label_rtx ();
   rtx test;
   REAL_VALUE_TYPE offset;
 
@@ -3818,8 +3818,8 @@
   rtx reg1 = gen_reg_rtx (SFmode);
   rtx reg2 = gen_reg_rtx (SFmode);
   rtx reg3 = gen_reg_rtx (SImode);
-  rtx label1 = gen_label_rtx ();
-  rtx label2 = gen_label_rtx ();
+  rtx_code_label *label1 = gen_label_rtx ();
+  rtx_code_label *label2 = gen_label_rtx ();
   rtx test;
   REAL_VALUE_TYPE offset;
 
@@ -3861,8 +3861,8 @@
   rtx reg1 = gen_reg_rtx (SFmode);
   rtx reg2 = gen_reg_rtx (SFmode);
   rtx reg3 = gen_reg_rtx (DImode);
-  rtx label1 = gen_label_rtx ();
-  rtx label2 = gen_label_rtx ();
+  rtx_code_label *label1 = gen_label_rtx ();
+  rtx_code_label *label2 = gen_label_rtx ();
   rtx test;
   REAL_VALUE_TYPE offset;
 
diff --git a/gcc/config/nios2/nios2.c b/gcc/config/nios2/nios2.c
index a4e60c6..1ab74f9 100644
--- a/gcc/config/nios2/nios2.c
+++ b/gcc/config/nios2/nios2.c
@@ -1304,7 +1304,7 @@ nios2_emit_expensive_div (rtx *operands, enum machine_mode mode)
 {
   rtx or_result, shift_left_result;
   rtx lookup_value;
-  rtx lab1, lab3;
+  rtx_code_label *lab1, *lab3;
   rtx insns;
   rtx libfunc;
   rtx final_result;
diff --git a/gcc/config/pa/pa.c b/gcc/config/pa/pa.c
index c94e578..b693521 100644
--- a/gcc/config/pa/pa.c
+++ b/gcc/config/pa/pa.c
@@ -4445,7 +4445,7 @@ hppa_profile_hook (int label_no)
      64-bit code to avoid having to provide DImode versions of the
      lcla2 and load_offset_label_address insn patterns.  */
   rtx reg = gen_reg_rtx (SImode);
-  rtx label_rtx = gen_label_rtx ();
+  rtx_code_label *label_rtx = gen_label_rtx ();
   rtx begin_label_rtx, call_insn;
   char begin_label_name[16];
 
diff --git a/gcc/config/s390/s390.c b/gcc/config/s390/s390.c
index 5933b96..6510dd9 100644
--- a/gcc/config/s390/s390.c
+++ b/gcc/config/s390/s390.c
@@ -4078,9 +4078,9 @@ s390_expand_movmem (rtx dst, rtx src, rtx len)
   else
     {
       rtx dst_addr, src_addr, count, blocks, temp;
-      rtx loop_start_label = gen_label_rtx ();
-      rtx loop_end_label = gen_label_rtx ();
-      rtx end_label = gen_label_rtx ();
+      rtx_code_label *loop_start_label = gen_label_rtx ();
+      rtx_code_label *loop_end_label = gen_label_rtx ();
+      rtx_code_label *end_label = gen_label_rtx ();
       enum machine_mode mode;
 
       mode = GET_MODE (len);
@@ -4203,9 +4203,9 @@ s390_expand_setmem (rtx dst, rtx len, rtx val)
   else
     {
       rtx dst_addr, count, blocks, temp, dstp1 = NULL_RTX;
-      rtx loop_start_label = gen_label_rtx ();
-      rtx loop_end_label = gen_label_rtx ();
-      rtx end_label = gen_label_rtx ();
+      rtx_code_label *loop_start_label = gen_label_rtx ();
+      rtx_code_label *loop_end_label = gen_label_rtx ();
+      rtx_code_label *end_label = gen_label_rtx ();
       enum machine_mode mode;
 
       mode = GET_MODE (len);
@@ -4329,9 +4329,9 @@ s390_expand_cmpmem (rtx target, rtx op0, rtx op1, rtx len)
   else
     {
       rtx addr0, addr1, count, blocks, temp;
-      rtx loop_start_label = gen_label_rtx ();
-      rtx loop_end_label = gen_label_rtx ();
-      rtx end_label = gen_label_rtx ();
+      rtx_code_label *loop_start_label = gen_label_rtx ();
+      rtx_code_label *loop_end_label = gen_label_rtx ();
+      rtx_code_label *end_label = gen_label_rtx ();
       enum machine_mode mode;
 
       mode = GET_MODE (len);
@@ -4886,7 +4886,7 @@ s390_expand_cs_hqi (enum machine_mode mode, rtx btarget, rtx vtarget, rtx mem,
   struct alignment_context ac;
   rtx cmpv, newv, val, cc, seq0, seq1, seq2, seq3;
   rtx res = gen_reg_rtx (SImode);
-  rtx csloop = NULL, csend = NULL;
+  rtx_code_label *csloop = NULL, *csend = NULL;
 
   gcc_assert (MEM_P (mem));
 
@@ -4969,7 +4969,7 @@ s390_expand_atomic (enum machine_mode mode, enum rtx_code code,
   rtx cmp;
   rtx new_rtx = gen_reg_rtx (SImode);
   rtx orig = gen_reg_rtx (SImode);
-  rtx csloop = gen_label_rtx ();
+  rtx_code_label *csloop = gen_label_rtx ();
 
   gcc_assert (!target || register_operand (target, VOIDmode));
   gcc_assert (MEM_P (mem));
@@ -9903,7 +9903,7 @@ s390_expand_tbegin (rtx dest, rtx tdb, rtx retry, bool clobber_fprs_p)
 {
   rtx retry_plus_two = gen_reg_rtx (SImode);
   rtx retry_reg = gen_reg_rtx (SImode);
-  rtx retry_label = NULL_RTX;
+  rtx_code_label *retry_label = NULL;
 
   if (retry != NULL_RTX)
     {
diff --git a/gcc/config/s390/s390.md b/gcc/config/s390/s390.md
index 5fdbdbe..dde529c 100644
--- a/gcc/config/s390/s390.md
+++ b/gcc/config/s390/s390.md
@@ -4124,8 +4124,8 @@
 {
   if (!TARGET_Z196)
     {
-      rtx label1 = gen_label_rtx ();
-      rtx label2 = gen_label_rtx ();
+      rtx_code_label *label1 = gen_label_rtx ();
+      rtx_code_label *label2 = gen_label_rtx ();
       rtx temp = gen_reg_rtx (TDmode);
       REAL_VALUE_TYPE cmp, sub;
 
@@ -4163,8 +4163,8 @@
 {
   if (!TARGET_Z196)
     {
-      rtx label1 = gen_label_rtx ();
-      rtx label2 = gen_label_rtx ();
+      rtx_code_label *label1 = gen_label_rtx ();
+      rtx_code_label *label2 = gen_label_rtx ();
       rtx temp = gen_reg_rtx (TDmode);
       REAL_VALUE_TYPE cmp, sub;
 
@@ -4202,8 +4202,8 @@
 {
   if (!TARGET_Z196)
     {
-      rtx label1 = gen_label_rtx ();
-      rtx label2 = gen_label_rtx ();
+      rtx_code_label *label1 = gen_label_rtx ();
+      rtx_code_label *label2 = gen_label_rtx ();
       rtx temp = gen_reg_rtx (<BFP:MODE>mode);
       REAL_VALUE_TYPE cmp, sub;
 
@@ -6115,7 +6115,7 @@
     {
       if (GET_CODE (operands[2]) == CONST_INT && INTVAL (operands[2]) < 0)
         {
-          rtx label1 = gen_label_rtx ();
+          rtx_code_label *label1 = gen_label_rtx ();
 
 	  operands[1] = make_safe_from (operands[1], operands[0]);
           emit_move_insn (operands[0], const0_rtx);
@@ -6141,9 +6141,9 @@
     }
   else
     {
-      rtx label1 = gen_label_rtx ();
-      rtx label2 = gen_label_rtx ();
-      rtx label3 = gen_label_rtx ();
+      rtx_code_label *label1 = gen_label_rtx ();
+      rtx_code_label *label2 = gen_label_rtx ();
+      rtx_code_label *label3 = gen_label_rtx ();
 
       operands[1] = force_reg (SImode, operands[1]);
       operands[1] = make_safe_from (operands[1], operands[0]);
@@ -6201,7 +6201,7 @@
     {
       if (GET_CODE (operands[2]) == CONST_INT && INTVAL (operands[2]) <= 0)
         {
-          rtx label1 = gen_label_rtx ();
+          rtx_code_label *label1 = gen_label_rtx ();
 
           operands[1] = make_safe_from (operands[1], operands[0]);
 	  emit_move_insn (operands[0], operands[1]);
@@ -6228,9 +6228,9 @@
     }
   else
     {
-      rtx label1 = gen_label_rtx ();
-      rtx label2 = gen_label_rtx ();
-      rtx label3 = gen_label_rtx ();
+      rtx_code_label *label1 = gen_label_rtx ();
+      rtx_code_label *label2 = gen_label_rtx ();
+      rtx_code_label *label3 = gen_label_rtx ();
 
       operands[1] = force_reg (SImode, operands[1]);
       operands[1] = make_safe_from (operands[1], operands[0]);
diff --git a/gcc/config/sh/sh-mem.cc b/gcc/config/sh/sh-mem.cc
index d3110f2..b6a5add 100644
--- a/gcc/config/sh/sh-mem.cc
+++ b/gcc/config/sh/sh-mem.cc
@@ -201,11 +201,11 @@ sh_expand_cmpstr (rtx *operands)
   rtx tmp3 = gen_reg_rtx (SImode);
 
   rtx jump;
-  rtx L_return = gen_label_rtx ();
-  rtx L_loop_byte = gen_label_rtx ();
-  rtx L_end_loop_byte = gen_label_rtx ();
-  rtx L_loop_long = gen_label_rtx ();
-  rtx L_end_loop_long = gen_label_rtx ();
+  rtx_code_label *L_return = gen_label_rtx ();
+  rtx_code_label *L_loop_byte = gen_label_rtx ();
+  rtx_code_label *L_end_loop_byte = gen_label_rtx ();
+  rtx_code_label *L_loop_long = gen_label_rtx ();
+  rtx_code_label *L_end_loop_long = gen_label_rtx ();
 
   int align = INTVAL (operands[3]);
 
@@ -328,9 +328,9 @@ sh_expand_cmpnstr (rtx *operands)
   rtx tmp2 = gen_reg_rtx (SImode);
 
   rtx jump;
-  rtx L_return = gen_label_rtx ();
-  rtx L_loop_byte = gen_label_rtx ();
-  rtx L_end_loop_byte = gen_label_rtx ();
+  rtx_code_label *L_return = gen_label_rtx ();
+  rtx_code_label *L_loop_byte = gen_label_rtx ();
+  rtx_code_label *L_end_loop_byte = gen_label_rtx ();
 
   rtx len = force_reg (SImode, operands[3]);
   int constp = CONST_INT_P (operands[3]);
@@ -342,8 +342,8 @@ sh_expand_cmpnstr (rtx *operands)
       rtx tmp3 = gen_reg_rtx (SImode);
       rtx lenw = gen_reg_rtx (SImode);
 
-      rtx L_loop_long = gen_label_rtx ();
-      rtx L_end_loop_long = gen_label_rtx ();
+      rtx_code_label *L_loop_long = gen_label_rtx ();
+      rtx_code_label *L_end_loop_long = gen_label_rtx ();
 
       int align = INTVAL (operands[4]);
       int bytes = INTVAL (operands[3]);
@@ -543,12 +543,12 @@ sh_expand_strlen (rtx *operands)
   rtx start_addr = gen_reg_rtx (Pmode);
   rtx tmp0 = gen_reg_rtx (SImode);
   rtx tmp1 = gen_reg_rtx (SImode);
-  rtx L_return = gen_label_rtx ();
-  rtx L_loop_byte = gen_label_rtx ();
+  rtx_code_label *L_return = gen_label_rtx ();
+  rtx_code_label *L_loop_byte = gen_label_rtx ();
 
   rtx jump;
-  rtx L_loop_long = gen_label_rtx ();
-  rtx L_end_loop_long = gen_label_rtx ();
+  rtx_code_label *L_loop_long = gen_label_rtx ();
+  rtx_code_label *L_end_loop_long = gen_label_rtx ();
 
   int align = INTVAL (operands[3]);
 
@@ -629,9 +629,9 @@ sh_expand_strlen (rtx *operands)
 void
 sh_expand_setmem (rtx *operands)
 {
-  rtx L_loop_byte = gen_label_rtx ();
-  rtx L_loop_word = gen_label_rtx ();
-  rtx L_return = gen_label_rtx ();
+  rtx_code_label *L_loop_byte = gen_label_rtx ();
+  rtx_code_label *L_loop_word = gen_label_rtx ();
+  rtx_code_label *L_return = gen_label_rtx ();
   rtx jump;
   rtx dest = copy_rtx (operands[0]);
   rtx dest_addr = copy_addr_to_reg (XEXP (dest, 0));
diff --git a/gcc/config/sh/sh.c b/gcc/config/sh/sh.c
index dbfaade..de62f7a 100644
--- a/gcc/config/sh/sh.c
+++ b/gcc/config/sh/sh.c
@@ -2652,7 +2652,7 @@ const char *
 output_far_jump (rtx_insn *insn, rtx op)
 {
   struct { rtx lab, reg, op; } this_jmp;
-  rtx braf_base_lab = NULL_RTX;
+  rtx_code_label *braf_base_lab = NULL;
   const char *jump;
   int far;
   int offset = branch_dest (insn) - INSN_ADDRESSES (INSN_UID (insn));
@@ -4944,7 +4944,7 @@ fixup_mova (rtx_insn *mova)
   else
     {
       rtx_insn *worker = mova;
-      rtx lab = gen_label_rtx ();
+      rtx_code_label *lab = gen_label_rtx ();
       rtx wpat, wpat0, wpat1, wsrc, target, base, diff;
 
       do
@@ -5739,7 +5739,7 @@ gen_far_branch (struct far_branch *bp)
 {
   rtx insn = bp->insert_place;
   rtx_insn *jump;
-  rtx label = gen_label_rtx ();
+  rtx_code_label *label = gen_label_rtx ();
   int ok;
 
   emit_label_after (label, insn);
@@ -6035,7 +6035,8 @@ sh_reorg (void)
 
       for (insn = first; insn; insn = NEXT_INSN (insn))
 	{
-	  rtx pattern, reg, set, dies, label;
+	  rtx pattern, reg, set, dies;
+	  rtx_code_label *label;
 	  rtx_insn *link, *scan;
 	  int rescan = 0, foundinsn = 0;
 
diff --git a/gcc/config/sparc/sparc.c b/gcc/config/sparc/sparc.c
index ab79b5c..a913de0 100644
--- a/gcc/config/sparc/sparc.c
+++ b/gcc/config/sparc/sparc.c
@@ -7265,7 +7265,7 @@ sparc_struct_value_rtx (tree fndecl, int incoming)
 	     provided.  */
 	  rtx ret_reg = gen_rtx_REG (Pmode, 31);
 	  rtx scratch = gen_reg_rtx (SImode);
-	  rtx endlab = gen_label_rtx ();
+	  rtx_code_label *endlab = gen_label_rtx ();
 
 	  /* Calculate the return object size */
 	  tree size = TYPE_SIZE_UNIT (TREE_TYPE (fndecl));
@@ -8053,12 +8053,12 @@ sparc_emit_float_lib_cmp (rtx x, rtx y, enum rtx_code comparison)
 void
 sparc_emit_floatunsdi (rtx *operands, enum machine_mode mode)
 {
-  rtx neglab, donelab, i0, i1, f0, in, out;
+  rtx i0, i1, f0, in, out;
 
   out = operands[0];
   in = force_reg (DImode, operands[1]);
-  neglab = gen_label_rtx ();
-  donelab = gen_label_rtx ();
+  rtx_code_label *neglab = gen_label_rtx ();
+  rtx_code_label *donelab = gen_label_rtx ();
   i0 = gen_reg_rtx (DImode);
   i1 = gen_reg_rtx (DImode);
   f0 = gen_reg_rtx (mode);
@@ -8086,12 +8086,12 @@ sparc_emit_floatunsdi (rtx *operands, enum machine_mode mode)
 void
 sparc_emit_fixunsdi (rtx *operands, enum machine_mode mode)
 {
-  rtx neglab, donelab, i0, i1, f0, in, out, limit;
+  rtx i0, i1, f0, in, out, limit;
 
   out = operands[0];
   in = force_reg (mode, operands[1]);
-  neglab = gen_label_rtx ();
-  donelab = gen_label_rtx ();
+  rtx_code_label *neglab = gen_label_rtx ();
+  rtx_code_label *donelab = gen_label_rtx ();
   i0 = gen_reg_rtx (DImode);
   i1 = gen_reg_rtx (DImode);
   limit = gen_reg_rtx (mode);
@@ -11728,7 +11728,7 @@ sparc_expand_compare_and_swap_12 (rtx bool_result, rtx result, rtx mem,
   rtx newvalue = gen_reg_rtx (SImode);
   rtx res = gen_reg_rtx (SImode);
   rtx resv = gen_reg_rtx (SImode);
-  rtx memsi, val, mask, end_label, loop_label, cc;
+  rtx memsi, val, mask, cc;
 
   emit_insn (gen_rtx_SET (VOIDmode, addr,
 			  gen_rtx_AND (Pmode, addr1, GEN_INT (-4))));
@@ -11778,8 +11778,8 @@ sparc_expand_compare_and_swap_12 (rtx bool_result, rtx result, rtx mem,
   emit_insn (gen_rtx_SET (VOIDmode, newv,
 			  gen_rtx_AND (SImode, newv, mask)));
 
-  end_label = gen_label_rtx ();
-  loop_label = gen_label_rtx ();
+  rtx_code_label *end_label = gen_label_rtx ();
+  rtx_code_label *loop_label = gen_label_rtx ();
   emit_label (loop_label);
 
   emit_insn (gen_rtx_SET (VOIDmode, oldvalue,
diff --git a/gcc/dojump.c b/gcc/dojump.c
index 1748690..1896620 100644
--- a/gcc/dojump.c
+++ b/gcc/dojump.c
@@ -204,7 +204,7 @@ do_jump_1 (enum tree_code code, tree op0, tree op1,
 	   rtx if_false_label, rtx if_true_label, int prob)
 {
   enum machine_mode mode;
-  rtx drop_through_label = 0;
+  rtx_code_label *drop_through_label = 0;
 
   switch (code)
     {
@@ -426,7 +426,7 @@ do_jump (tree exp, rtx if_false_label, rtx if_true_label, int prob)
   int i;
   tree type;
   enum machine_mode mode;
-  rtx drop_through_label = 0;
+  rtx_code_label *drop_through_label = 0;
 
   switch (code)
     {
@@ -476,7 +476,7 @@ do_jump (tree exp, rtx if_false_label, rtx if_true_label, int prob)
 
     case COND_EXPR:
       {
-	rtx label1 = gen_label_rtx ();
+	rtx_code_label *label1 = gen_label_rtx ();
 	if (!if_true_label || !if_false_label)
 	  {
 	    drop_through_label = gen_label_rtx ();
@@ -941,7 +941,7 @@ do_compare_rtx_and_jump (rtx op0, rtx op1, enum rtx_code code, int unsignedp,
 			 rtx if_true_label, int prob)
 {
   rtx tem;
-  rtx dummy_label = NULL_RTX;
+  rtx dummy_label = NULL;
 
   /* Reverse the comparison if that is safe and we want to jump if it is
      false.  Also convert to the reverse comparison if the target can
diff --git a/gcc/function.c b/gcc/function.c
index 2e46799..8b125ae 100644
--- a/gcc/function.c
+++ b/gcc/function.c
@@ -4661,7 +4661,7 @@ void
 stack_protect_epilogue (void)
 {
   tree guard_decl = targetm.stack_protect_guard ();
-  rtx label = gen_label_rtx ();
+  rtx_code_label *label = gen_label_rtx ();
   rtx x, y, tmp;
 
   x = expand_normal (crtl->stack_protect_guard);
diff --git a/gcc/optabs.c b/gcc/optabs.c
index 84d38e7..605615d 100644
--- a/gcc/optabs.c
+++ b/gcc/optabs.c
@@ -1034,7 +1034,6 @@ expand_doubleword_shift (enum machine_mode op1_mode, optab binoptab,
 			 unsigned HOST_WIDE_INT shift_mask)
 {
   rtx superword_op1, tmp, cmp1, cmp2;
-  rtx subword_label, done_label;
   enum rtx_code cmp_code;
 
   /* See if word-mode shifts by BITS_PER_WORD...BITS_PER_WORD * 2 - 1 will
@@ -1119,8 +1118,8 @@ expand_doubleword_shift (enum machine_mode op1_mode, optab binoptab,
 #endif
 
   /* As a last resort, use branches to select the correct alternative.  */
-  subword_label = gen_label_rtx ();
-  done_label = gen_label_rtx ();
+  rtx_code_label *subword_label = gen_label_rtx ();
+  rtx_code_label *done_label = gen_label_rtx ();
 
   NO_DEFER_POP;
   do_compare_rtx_and_jump (cmp1, cmp2, cmp_code, false, op1_mode,
diff --git a/gcc/stmt.c b/gcc/stmt.c
index 70dad0c..6d4eed9 100644
--- a/gcc/stmt.c
+++ b/gcc/stmt.c
@@ -127,7 +127,7 @@ label_rtx (tree label)
 
   if (!DECL_RTL_SET_P (label))
     {
-      rtx r = gen_label_rtx ();
+      rtx_code_label *r = gen_label_rtx ();
       SET_DECL_RTL (label, r);
       if (FORCED_LABEL (label) || DECL_NONLOCAL (label))
 	LABEL_PRESERVE_P (r) = 1;
@@ -971,7 +971,7 @@ emit_case_dispatch_table (tree index_expr, tree index_type,
   struct case_node *n;
   rtx *labelvec;
   rtx fallback_label = label_rtx (case_list->code_label);
-  rtx table_label = gen_label_rtx ();
+  rtx_code_label *table_label = gen_label_rtx ();
   bool has_gaps = false;
   edge default_edge = stmt_bb ? EDGE_SUCC (stmt_bb, 0) : NULL;
   int default_prob = default_edge ? default_edge->probability : 0;
@@ -1331,7 +1331,7 @@ expand_sjlj_dispatch_table (rtx dispatch_index,
       tree minval = build_int_cst (index_type, 0);
       tree maxval = CASE_LOW (dispatch_table.last ());
       tree range = maxval;
-      rtx default_label = gen_label_rtx ();
+      rtx_code_label *default_label = gen_label_rtx ();
 
       for (int i = ncases - 1; i >= 0; --i)
 	{
