aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorRichard Henderson <rth@redhat.com>2001-12-20 16:22:39 -0800
committerRichard Henderson <rth@gcc.gnu.org>2001-12-20 16:22:39 -0800
commit002d2e0b80007f11f8502f7e61d502c64c93e6c5 (patch)
tree84fe00071e398e6687dcc5d6f5625284c7813552 /gcc
parentcf785988e051f4ed5732e2e263c161c702f5cbf9 (diff)
downloadgcc-002d2e0b80007f11f8502f7e61d502c64c93e6c5.zip
gcc-002d2e0b80007f11f8502f7e61d502c64c93e6c5.tar.gz
gcc-002d2e0b80007f11f8502f7e61d502c64c93e6c5.tar.bz2
alpha.c (call_operand): Accept pseudos.
* 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
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog6
-rw-r--r--gcc/config/alpha/alpha.c2
-rw-r--r--gcc/config/alpha/alpha.md12
3 files changed, 9 insertions, 11 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index faecc94..487302c 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -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.
diff --git a/gcc/config/alpha/alpha.c b/gcc/config/alpha/alpha.c
index 2588f5f..ce5b58e 100644
--- a/gcc/config/alpha/alpha.c
+++ b/gcc/config/alpha/alpha.c
@@ -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;
}
diff --git a/gcc/config/alpha/alpha.md b/gcc/config/alpha/alpha.md
index 822712f..a3ac64b 100644
--- a/gcc/config/alpha/alpha.md
+++ b/gcc/config/alpha/alpha.md
@@ -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"