aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorJim Wilson <wilson@gcc.gnu.org>1995-02-07 12:57:00 -0800
committerJim Wilson <wilson@gcc.gnu.org>1995-02-07 12:57:00 -0800
commite553bfb99a96003ab5e2ef7fff56087518302436 (patch)
tree280cb771362d8106b0e0b6f22f205cb6b6a2e8e7 /gcc
parent97b65a3e66724ccf7c2a2fb8e3f98460665d7016 (diff)
downloadgcc-e553bfb99a96003ab5e2ef7fff56087518302436.zip
gcc-e553bfb99a96003ab5e2ef7fff56087518302436.tar.gz
gcc-e553bfb99a96003ab5e2ef7fff56087518302436.tar.bz2
(prepare_scc_operands, from_compare): Force constant 0 into
register for unsigned comparisons. From-SVN: r8891
Diffstat (limited to 'gcc')
-rw-r--r--gcc/config/sh/sh.c7
1 files changed, 5 insertions, 2 deletions
diff --git a/gcc/config/sh/sh.c b/gcc/config/sh/sh.c
index 0fc3953..7e6f325 100644
--- a/gcc/config/sh/sh.c
+++ b/gcc/config/sh/sh.c
@@ -823,7 +823,9 @@ prepare_scc_operands (code)
}
sh_compare_op0 = force_reg (SImode, sh_compare_op0);
- if (code != EQ && code != NE && sh_compare_op1 != const0_rtx)
+ if (code != EQ && code != NE
+ && (sh_compare_op1 != const0_rtx
+ || code == GTU || code == GEU || code == LTU || code == LEU))
sh_compare_op1 = force_reg (SImode, sh_compare_op1);
emit_insn (gen_rtx (SET, VOIDmode,
@@ -2013,7 +2015,8 @@ from_compare (operands, code)
{
/* Force args into regs, since we can't use constants here */
sh_compare_op0 = force_reg (SImode, sh_compare_op0);
- if (sh_compare_op1 != const0_rtx)
+ if (sh_compare_op1 != const0_rtx
+ || code == GTU || code == GEU || code == LTU || code == LEU)
sh_compare_op1 = force_reg (SImode, sh_compare_op1);
}
operands[1] = sh_compare_op0;