diff options
author | Jim Wilson <wilson@gcc.gnu.org> | 1995-11-30 17:02:34 -0800 |
---|---|---|
committer | Jim Wilson <wilson@gcc.gnu.org> | 1995-11-30 17:02:34 -0800 |
commit | 24a25d457591216fd2d5f5805f44c51fb62ba603 (patch) | |
tree | e1cda53bf225a16f032733f13eff1b622d8a9d2e /gcc | |
parent | 5a4638841f72e959242e4ce57cb77bbb9335f86b (diff) | |
download | gcc-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.c | 8 |
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; |