aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorRichard Earnshaw <erich@gnu.org>1996-12-12 10:53:05 +0000
committerRichard Earnshaw <erich@gnu.org>1996-12-12 10:53:05 +0000
commit7b64da89ba1a942bdbdde8dfba63805ae3d2fbc3 (patch)
treec7815837ada8a990ebecd62d6a0f613ed2f02637 /gcc
parent89418a92574448338464cb3503942a29a10e3eb8 (diff)
downloadgcc-7b64da89ba1a942bdbdde8dfba63805ae3d2fbc3.zip
gcc-7b64da89ba1a942bdbdde8dfba63805ae3d2fbc3.tar.gz
gcc-7b64da89ba1a942bdbdde8dfba63805ae3d2fbc3.tar.bz2
(arm_gen_constant, case IOR,XOR): Don't invert a constant if loading
it into a temporary. From-SVN: r13290
Diffstat (limited to 'gcc')
-rw-r--r--gcc/config/arm/arm.c7
1 files changed, 3 insertions, 4 deletions
diff --git a/gcc/config/arm/arm.c b/gcc/config/arm/arm.c
index 97ad6ed..fb4705c 100644
--- a/gcc/config/arm/arm.c
+++ b/gcc/config/arm/arm.c
@@ -701,8 +701,8 @@ arm_gen_constant (code, mode, val, target, source, subtargets, generate)
case IOR:
case XOR:
- /* If we have IOR or XOR, and the inverse of the constant can be loaded
- in a single instruction, and we can find a temporary to put it in,
+ /* If we have IOR or XOR, and the constant can be loaded in a
+ single instruction, and we can find a temporary to put it in,
then this can be done in two instructions instead of 3-4. */
if (subtargets
|| (reload_completed && ! reg_mentioned_p (target, source)))
@@ -713,8 +713,7 @@ arm_gen_constant (code, mode, val, target, source, subtargets, generate)
{
rtx sub = subtargets ? gen_reg_rtx (mode) : target;
- emit_insn (gen_rtx (SET, VOIDmode, sub,
- GEN_INT (ARM_SIGN_EXTEND (~ val))));
+ emit_insn (gen_rtx (SET, VOIDmode, sub, GEN_INT (val)));
emit_insn (gen_rtx (SET, VOIDmode, target,
gen_rtx (code, mode, source, sub)));
}