re PR rtl-optimization/35604 (Label references are not updated after edge insertion)
authorUros Bizjak <uros@gcc.gnu.org>
Wed, 18 Jun 2008 17:16:05 +0000 (19:16 +0200)
committerUros Bizjak <uros@gcc.gnu.org>
Wed, 18 Jun 2008 17:16:05 +0000 (19:16 +0200)
PR rtl-optimization/35604
* jump.c (redirect_exp_1): Skip the condition of an IF_THEN_ELSE. We
only want to change jump destinations, not eventual label comparisons.

From-SVN: r136899

gcc/ChangeLog
gcc/jump.c

index e6caaeb5071b908dd60fb52e03be72c7a15b829e..842a63bb72b2a224a4168d10922c0720f7074c0d 100644 (file)
@@ -1,3 +1,10 @@
+2008-06-18  Uros Bizjak  <ubizjak@gmail.com>
+           Ian Lance Taylor  <iant@google.com>
+
+       PR rtl-optimization/35604
+       * jump.c (redirect_exp_1): Skip the condition of an IF_THEN_ELSE. We
+       only want to change jump destinations, not eventual label comparisons.
+
 2008-06-16  Jan Hubicka  <jh@suse.cz>
 
        * cgraphunit.c (cgraph_expand_pending_functions): Give up at
 2008-06-12  Jakub Jelinek  <jakub@redhat.com>
 
        PR middle-end/36506
-       * omp-low.c (expand_omp_sections): Initialize l2 to avoid bogus
-       warning.
+       * omp-low.c (expand_omp_sections): Initialize l2 to avoid bogus warning.
 
 2008-06-12  Eric Botcazou  <ebotcazou@adacore.com>
 
 
 2008-06-12  Kai Tietz  <kai.tietz@onevision.com>
 
-       * config/i386/i386.c (ix86_compute_frame_layout): Disable red zone for
-       w64 abi.
+       * config/i386/i386.c (ix86_compute_frame_layout): Disable
+       red zone for w64 abi.
        (ix86_expand_prologue): Likewise.
        (ix86_force_to_memory): Likewise.
        (ix86_free_from_memory): Likewise.
 
        PR target/36425
        * config/rs6000/rs6000.c (rs6000_override_options): Set
-       rs6000_isel conditionally to the absence of comand line
-       override.
+       rs6000_isel conditionally to the absence of comand line override.
        * config/rs6000/linuxspe.h (SUBSUBTARGET_OVERRIDE_OPTIONS):
        Remove duplicate rs6000_isel setting.
        * config/rs6000/eabispe.h: Ditto.
        arch_32 and arch_64.
 
 2008-06-11  Eric Botcazou  <ebotcazou@adacore.com>
-            Olivier Hainque  <hainque@adacore.com>
+           Olivier Hainque  <hainque@adacore.com>
 
        * builtins.c (get_memory_rtx): Accept byte-addressable bitfields.
        Use DECL_SIZE_UNIT to retrieve the size of the field.
        and target endianness differ.
 
 2008-06-10  Vinodha Ramasamy  <vinodha@google.com>
-        * value_prob.c (tree_divmod_fixed_value_transform): Use gcov_type.
+
+       * value_prob.c (tree_divmod_fixed_value_transform): Use gcov_type.
        Avoid division by 0.
        (tree_mod_pow2_value_transform): Likewise.
        (tree_ic_transform): Likewise.
index 1aa0c6db6d873a50e3a3888b5fe24d27dc6415df..23d183e932cb5f2ddb0616efbce3c34dd6493362 100644 (file)
@@ -1327,6 +1327,15 @@ redirect_exp_1 (rtx *loc, rtx olabel, rtx nlabel, rtx insn)
       return;
     }
 
+  if (code == IF_THEN_ELSE)
+    {
+      /* Skip the condition of an IF_THEN_ELSE.  We only want to
+         change jump destinations, not eventual label comparisons.  */
+      redirect_exp_1 (&XEXP (x, 1), olabel, nlabel, insn);
+      redirect_exp_1 (&XEXP (x, 2), olabel, nlabel, insn);
+      return;
+    }
+
   fmt = GET_RTX_FORMAT (code);
   for (i = GET_RTX_LENGTH (code) - 1; i >= 0; i--)
     {