From 7b64da89ba1a942bdbdde8dfba63805ae3d2fbc3 Mon Sep 17 00:00:00 2001
From: Richard Earnshaw <erich@gnu.org>
Date: Thu, 12 Dec 1996 10:53:05 +0000
Subject: [PATCH] (arm_gen_constant, case IOR,XOR): Don't invert a constant if
 loading it into a temporary.

From-SVN: r13290
---
 gcc/config/arm/arm.c | 7 +++----
 1 file changed, 3 insertions(+), 4 deletions(-)

diff --git a/gcc/config/arm/arm.c b/gcc/config/arm/arm.c
index 97ad6ed800d3..fb4705cf4054 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)));
 		}