]> gcc.gnu.org Git - gcc.git/commitdiff
Include reload.h
authorRichard Kenner <kenner@gcc.gnu.org>
Tue, 19 Oct 1993 21:40:00 +0000 (17:40 -0400)
committerRichard Kenner <kenner@gcc.gnu.org>
Tue, 19 Oct 1993 21:40:00 +0000 (17:40 -0400)
Include reload.h
(arm_reload_out_hi): New function.
(output_call): Don't look inside operands[0].

From-SVN: r5808

gcc/config/arm/arm.c

index 8f77c7789ab6809719e267150e49108784f31d0d..f8bc52bb27d24d371e236649d44a887df096afc1 100644 (file)
@@ -33,6 +33,7 @@ the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.  */
 #include "output.h"
 #include "insn-attr.h"
 #include "flags.h"
+#include "reload.h"
 
 /* The maximum number of insns skipped which will be conditionalised if
    possible.  */
@@ -762,6 +763,23 @@ gen_compare_reg (code, x, y, fp)
   return cc_reg;
 }
 
+arm_reload_out_hi (operands)
+rtx operands[];
+{
+  rtx base = find_replacement (&XEXP (operands[0], 0));
+
+  emit_insn (gen_rtx (SET, VOIDmode,
+                      gen_rtx (MEM, QImode, base),
+                      gen_rtx (SUBREG, QImode, operands[1], 0)));
+  emit_insn (gen_rtx (SET, VOIDmode, operands[2],
+                      gen_rtx (LSHIFTRT, SImode, 
+                               gen_rtx (SUBREG, SImode, operands[1], 0),
+                               GEN_INT (8))));
+  emit_insn (gen_rtx (SET, VOIDmode,
+                      gen_rtx (MEM, QImode,
+                               plus_constant (base, 1)),
+                      gen_rtx (SUBREG, QImode, operands[2], 0)));
+}
 \f
 /* Check to see if a branch is forwards or backwards.  Return TRUE if it
    is backwards.  */
@@ -850,8 +868,6 @@ char *
 output_call (operands)
        rtx operands[];
 {
-  operands[0] = XEXP (operands[0], 0);
-
   /* Handle calls to lr using ip (which may be clobbered in subr anyway). */
 
   if (REGNO (operands[0]) == 14)
This page took 0.074341 seconds and 5 git commands to generate.