aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorJim Wilson <wilson@gcc.gnu.org>1995-11-30 17:02:34 -0800
committerJim Wilson <wilson@gcc.gnu.org>1995-11-30 17:02:34 -0800
commit24a25d457591216fd2d5f5805f44c51fb62ba603 (patch)
treee1cda53bf225a16f032733f13eff1b622d8a9d2e /gcc
parent5a4638841f72e959242e4ce57cb77bbb9335f86b (diff)
downloadgcc-24a25d457591216fd2d5f5805f44c51fb62ba603.zip
gcc-24a25d457591216fd2d5f5805f44c51fb62ba603.tar.gz
gcc-24a25d457591216fd2d5f5805f44c51fb62ba603.tar.bz2
(from_compare): Get mode from operands instead of using SImode.
From-SVN: r10659
Diffstat (limited to 'gcc')
-rw-r--r--gcc/config/sh/sh.c8
1 files changed, 6 insertions, 2 deletions
diff --git a/gcc/config/sh/sh.c b/gcc/config/sh/sh.c
index aeccf80..5f072d8 100644
--- a/gcc/config/sh/sh.c
+++ b/gcc/config/sh/sh.c
@@ -382,11 +382,15 @@ from_compare (operands, code)
{
if (code != EQ && code != NE)
{
+ enum machine_mode mode = GET_MODE (sh_compare_op0);
+ if (mode == VOIDmode)
+ mode = GET_MODE (sh_compare_op1);
+
/* Force args into regs, since we can't use constants here. */
- sh_compare_op0 = force_reg (SImode, sh_compare_op0);
+ sh_compare_op0 = force_reg (mode, sh_compare_op0);
if (sh_compare_op1 != const0_rtx
|| code == GTU || code == GEU || code == LTU || code == LEU)
- sh_compare_op1 = force_reg (SImode, sh_compare_op1);
+ sh_compare_op1 = force_reg (mode, sh_compare_op1);
}
operands[1] = sh_compare_op0;
operands[2] = sh_compare_op1;