aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorJoseph Myers <joseph@codesourcery.com>2008-09-29 20:31:27 +0100
committerJoseph Myers <jsm28@gcc.gnu.org>2008-09-29 20:31:27 +0100
commit567075ed3155c2eaf016562367b26aa0edc2c9d6 (patch)
tree86a8af3425174dbca3e3da668860226d4c4c670a /gcc
parentae00112bf06e9156d783fc4ff0ca6db7901f061a (diff)
downloadgcc-567075ed3155c2eaf016562367b26aa0edc2c9d6.zip
gcc-567075ed3155c2eaf016562367b26aa0edc2c9d6.tar.gz
gcc-567075ed3155c2eaf016562367b26aa0edc2c9d6.tar.bz2
ifcvt.c (noce_emit_store_flag): If using condition from original jump, reverse it if if_info->cond was reversed.
* ifcvt.c (noce_emit_store_flag): If using condition from original jump, reverse it if if_info->cond was reversed. From-SVN: r140764
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog5
-rw-r--r--gcc/ifcvt.c10
2 files changed, 14 insertions, 1 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index a8d787b..8a5904f 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -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
diff --git a/gcc/ifcvt.c b/gcc/ifcvt.c
index 341174a..a0b49a3 100644
--- a/gcc/ifcvt.c
+++ b/gcc/ifcvt.c
@@ -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);