diff options
author | Richard Henderson <rth@redhat.com> | 2001-12-20 16:22:39 -0800 |
---|---|---|
committer | Richard Henderson <rth@gcc.gnu.org> | 2001-12-20 16:22:39 -0800 |
commit | 002d2e0b80007f11f8502f7e61d502c64c93e6c5 (patch) | |
tree | 84fe00071e398e6687dcc5d6f5625284c7813552 /gcc | |
parent | cf785988e051f4ed5732e2e263c161c702f5cbf9 (diff) | |
download | gcc-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/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/config/alpha/alpha.c | 2 | ||||
-rw-r--r-- | gcc/config/alpha/alpha.md | 12 |
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" |