aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRichard Kenner <kenner@gcc.gnu.org>1995-10-27 06:52:12 -0400
committerRichard Kenner <kenner@gcc.gnu.org>1995-10-27 06:52:12 -0400
commitbcbed709847b6a0461ff70a574c14681af66844c (patch)
treed1e1cb7902f517913e0eb2e84cfef69667a287aa
parentb83e575d22fd13854d73ba69335fbda20eb8b2c1 (diff)
downloadgcc-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.md18
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 ""