alpha.c (call_operand): Accept pseudos.
authorRichard Henderson <rth@redhat.com>
Fri, 21 Dec 2001 00:22:39 +0000 (16:22 -0800)
committerRichard Henderson <rth@gcc.gnu.org>
Fri, 21 Dec 2001 00:22:39 +0000 (16:22 -0800)
        * config/alpha/alpha.c (call_operand) [OSF]: Accept pseudos.
        * config/alpha/alpha.md (call_osf, call_value_osf): Don't force
        operand into $27.

From-SVN: r48225

gcc/ChangeLog
gcc/config/alpha/alpha.c
gcc/config/alpha/alpha.md

index faecc94..487302c 100644 (file)
@@ -1,3 +1,9 @@
+2001-12-20  Richard Henderson  <rth@redhat.com>
+
+       * config/alpha/alpha.c (call_operand) [OSF]: Accept pseudos.
+       * config/alpha/alpha.md (call_osf, call_value_osf): Don't force
+       operand into $27.
+
 2001-12-20  Joseph S. Myers  <jsm28@cam.ac.uk>
 
        * configure.in (all_headers, all_lib2funcs): Remove.
index 2588f5f..ce5b58e 100644 (file)
@@ -1008,7 +1008,7 @@ call_operand (op, mode)
   if (GET_CODE (op) == REG)
     {
       if (TARGET_ABI_OSF)
-       return REGNO (op) == 27;
+       return (REGNO (op) == 27 || REGNO (op) >= FIRST_PSEUDO_REGISTER);
       else
        return 1;
     }
index 822712f..a3ac64b 100644 (file)
@@ -4602,11 +4602,7 @@ fadd,fmul,fcpys,fdiv,fsqrt,misc,mvi,ftoi,itof,multi"
 
   operands[0] = XEXP (operands[0], 0);
   if (! call_operand (operands[0], Pmode))
-    {
-      rtx pv = gen_rtx_REG (Pmode, 27);
-      emit_move_insn (pv, operands[0]);
-      operands[0] = pv;
-    }
+    operands[0] = copy_to_mode_reg (Pmode, operands[0]);
 })
 
 (define_expand "call_nt"
@@ -4735,11 +4731,7 @@ fadd,fmul,fcpys,fdiv,fsqrt,misc,mvi,ftoi,itof,multi"
 
   operands[1] = XEXP (operands[1], 0);
   if (! call_operand (operands[1], Pmode))
-    {
-      rtx pv = gen_rtx_REG (Pmode, 27);
-      emit_move_insn (pv, operands[1]);
-      operands[1] = pv;
-    }
+    operands[1] = copy_to_mode_reg (Pmode, operands[1]);
 })
 
 (define_expand "call_value_nt"