diff options
author | Richard Kenner <kenner@gcc.gnu.org> | 1996-03-18 20:04:00 -0500 |
---|---|---|
committer | Richard Kenner <kenner@gcc.gnu.org> | 1996-03-18 20:04:00 -0500 |
commit | 1d6eaf3dea4928714cd2e1f365d5758d73770d55 (patch) | |
tree | 35bbbca056243ef9c4413906dee4cebe83d54f9a /gcc | |
parent | 7b7e56373edf1e0df722cc44a0380b2ee01c9e12 (diff) | |
download | gcc-1d6eaf3dea4928714cd2e1f365d5758d73770d55.zip gcc-1d6eaf3dea4928714cd2e1f365d5758d73770d55.tar.gz gcc-1d6eaf3dea4928714cd2e1f365d5758d73770d55.tar.bz2 |
(emit_store_flag): If expanding (GE X 0) will need two insns, don't use subtarget for the result of the first insn.
(emit_store_flag): If expanding (GE X 0) will need two
insns, don't use subtarget for the result of the first insn.
Move a likely constant to the start of a condition.
From-SVN: r11562
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/expmed.c | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/gcc/expmed.c b/gcc/expmed.c index dbd7eb2..ec392e7a 100644 --- a/gcc/expmed.c +++ b/gcc/expmed.c @@ -3955,9 +3955,11 @@ emit_store_flag (target, code, op0, op1, mode, unsignedp, normalizep) subtarget = 0; if (code == GE) - op0 = expand_unop (mode, one_cmpl_optab, op0, subtarget, 0); + op0 = expand_unop (mode, one_cmpl_optab, op0, + ((STORE_FLAG_VALUE == 1 || normalizep) + ? 0 : subtarget), 0); - if (normalizep || STORE_FLAG_VALUE == 1) + if (STORE_FLAG_VALUE == 1 || normalizep) /* If we are supposed to produce a 0/1 value, we want to do a logical shift from the sign bit to the low-order bit; for a -1/0 value, we do an arithmetic shift. */ |