aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorRichard Stallman <rms@gnu.org>1992-10-14 04:21:51 +0000
committerRichard Stallman <rms@gnu.org>1992-10-14 04:21:51 +0000
commit7124e1e508d5173fd696668531adb112e8a53f83 (patch)
tree2e434b9cdb8b1eb462a20e28d5553c7f730754e4 /gcc
parentfb3ef382a4ef27dcac9fe78c04cee144767c491a (diff)
downloadgcc-7124e1e508d5173fd696668531adb112e8a53f83.zip
gcc-7124e1e508d5173fd696668531adb112e8a53f83.tar.gz
gcc-7124e1e508d5173fd696668531adb112e8a53f83.tar.bz2
(jump_optimize): Don't optimize jumps to store-flag insns
when BLKmode values are being compared. From-SVN: r2450
Diffstat (limited to 'gcc')
-rw-r--r--gcc/jump.c8
1 files changed, 8 insertions, 0 deletions
diff --git a/gcc/jump.c b/gcc/jump.c
index 8ed0c98..3d66fcf 100644
--- a/gcc/jump.c
+++ b/gcc/jump.c
@@ -1019,6 +1019,10 @@ jump_optimize (f, cross_jump, noop_moves, after_regscan)
&& simplejump_p (temp4)
&& JUMP_LABEL (temp4) == JUMP_LABEL (insn)))
&& (temp4 = get_condition (insn, &temp5)) != 0
+ /* We must be comparing objects whose modes imply the size.
+ We could handle BLKmode if (1) emit_store_flag could
+ and (2) we could find the size reliably. */
+ && GET_MODE (XEXP (temp4, 0)) != BLKmode
/* If B is zero, OK; if A is zero, can only do (1) if we
can reverse the condition. See if (3) applies possibly
@@ -1200,6 +1204,10 @@ jump_optimize (f, cross_jump, noop_moves, after_regscan)
&& simplejump_p (temp3)
&& JUMP_LABEL (temp3) == JUMP_LABEL (insn)))
&& (temp3 = get_condition (insn, &temp4)) != 0
+ /* We must be comparing objects whose modes imply the size.
+ We could handle BLKmode if (1) emit_store_flag could
+ and (2) we could find the size reliably. */
+ && GET_MODE (XEXP (temp3, 0)) != BLKmode
&& can_reverse_comparison_p (temp3, insn))
{
rtx temp6, target = 0, seq, init_insn = 0, init = temp2;