]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
ifcvt.c (noce_emit_store_flag): If using condition from original jump, reverse it...
authorJoseph Myers <joseph@codesourcery.com>
Mon, 29 Sep 2008 19:31:27 +0000 (20:31 +0100)
committerJoseph Myers <jsm28@gcc.gnu.org>
Mon, 29 Sep 2008 19:31:27 +0000 (20:31 +0100)
* ifcvt.c (noce_emit_store_flag): If using condition from original
jump, reverse it if if_info->cond was reversed.

From-SVN: r140764

gcc/ChangeLog
gcc/ifcvt.c

index a8d787bd86b2076a28367ac903cc3e383cf6bf2b..8a5904f7903f35222e663216f7afa842cd00fd47 100644 (file)
@@ -1,3 +1,8 @@
+2008-09-29  Joseph Myers  <joseph@codesourcery.com>
+
+       * ifcvt.c (noce_emit_store_flag): If using condition from original
+       jump, reverse it if if_info->cond was reversed.
+
 2008-09-29  Eric Botcazou  <ebotcazou@adacore.com>
 
        * expr.c (expand_expr_real_1) <normal_inner_ref>: Force op0 to
index 341174ab02fe08773491efc30a00d41a0a679b12..a0b49a3979c1a3e93cb170a7810cf3a6b3378c74 100644 (file)
@@ -666,7 +666,15 @@ noce_emit_store_flag (struct noce_if_info *if_info, rtx x, int reversep,
      build the store_flag insn directly.  */
 
   if (cond_complex)
-    cond = XEXP (SET_SRC (pc_set (if_info->jump)), 0);
+    {
+      rtx set = pc_set (if_info->jump);
+      cond = XEXP (SET_SRC (set), 0);
+      if (GET_CODE (XEXP (SET_SRC (set), 2)) == LABEL_REF
+         && XEXP (XEXP (SET_SRC (set), 2), 0) == JUMP_LABEL (if_info->jump))
+       reversep = !reversep;
+      if (if_info->then_else_reversed)
+       reversep = !reversep;
+    }
 
   if (reversep)
     code = reversed_comparison_code (cond, if_info->jump);