diff options
author | Richard Kenner <kenner@gcc.gnu.org> | 1995-10-27 06:52:12 -0400 |
---|---|---|
committer | Richard Kenner <kenner@gcc.gnu.org> | 1995-10-27 06:52:12 -0400 |
commit | bcbed709847b6a0461ff70a574c14681af66844c (patch) | |
tree | d1e1cb7902f517913e0eb2e84cfef69667a287aa | |
parent | b83e575d22fd13854d73ba69335fbda20eb8b2c1 (diff) | |
download | gcc-bcbed709847b6a0461ff70a574c14681af66844c.zip gcc-bcbed709847b6a0461ff70a574c14681af66844c.tar.gz gcc-bcbed709847b6a0461ff70a574c14681af66844c.tar.bz2 |
(call_value_nt, call_nt): Force non-SYMBOL_REF into reg 27, just like
for OSF.
From-SVN: r10533
-rw-r--r-- | gcc/config/alpha/alpha.md | 18 |
1 files changed, 14 insertions, 4 deletions
diff --git a/gcc/config/alpha/alpha.md b/gcc/config/alpha/alpha.md index c3972e1..72c54ee 100644 --- a/gcc/config/alpha/alpha.md +++ b/gcc/config/alpha/alpha.md @@ -2650,8 +2650,13 @@ abort (); operands[0] = XEXP (operands[0], 0); - if (GET_CODE (operands[0]) != SYMBOL_REF) - operands[0] = force_reg (Pmode, operands[0]); + if (GET_CODE (operands[1]) != SYMBOL_REF + && ! (GET_CODE (operands[1]) == REG && REGNO (operands[1]) == 27)) + { + rtx tem = gen_rtx (REG, DImode, 27); + emit_move_insn (tem, operands[1]); + operands[1] = tem; + } }") (define_expand "call_value" @@ -2701,8 +2706,13 @@ abort (); operands[1] = XEXP (operands[1], 0); - if (GET_CODE (operands[1]) != SYMBOL_REF) - operands[1] = force_reg (Pmode, operands[1]); + if (GET_CODE (operands[1]) != SYMBOL_REF + && ! (GET_CODE (operands[1]) == REG && REGNO (operands[1]) == 27)) + { + rtx tem = gen_rtx (REG, DImode, 27); + emit_move_insn (tem, operands[1]); + operands[1] = tem; + } }") (define_insn "" |