aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorMichael Meissner <meissner@gcc.gnu.org>1992-09-18 21:33:31 +0000
committerMichael Meissner <meissner@gcc.gnu.org>1992-09-18 21:33:31 +0000
commit2bba3a75c67b6e7988435887d65632ac78d73ff3 (patch)
treef66d977b534dc610f13c12bdbe5ec676b224c41b /gcc
parenta5cc4aa9828f55e4da46981b1f8a183d59880ac0 (diff)
downloadgcc-2bba3a75c67b6e7988435887d65632ac78d73ff3.zip
gcc-2bba3a75c67b6e7988435887d65632ac78d73ff3.tar.gz
gcc-2bba3a75c67b6e7988435887d65632ac78d73ff3.tar.bz2
Allow calls to absolute addresses.
From-SVN: r2154
Diffstat (limited to 'gcc')
-rw-r--r--gcc/config/mips/mips.md14
1 files changed, 14 insertions, 0 deletions
diff --git a/gcc/config/mips/mips.md b/gcc/config/mips/mips.md
index 9cfc27e..8f3274b 100644
--- a/gcc/config/mips/mips.md
+++ b/gcc/config/mips/mips.md
@@ -4005,6 +4005,13 @@ move\\t%0,%z4\\n\\
if (GET_CODE (target) == SYMBOL_REF)
return \"%*jal\\t%0\";
+ else if (GET_CODE (target) == CONST_INT)
+ {
+ operands[0] = target;
+ operands[1] = gen_rtx (REG, SImode, GP_REG_FIRST + 31);
+ return \"%*%[li\\t%@,%0\\n\\tjal\\t%1,%@%]\";
+ }
+
else
{
operands[0] = target;
@@ -4048,6 +4055,13 @@ move\\t%0,%z4\\n\\
if (GET_CODE (target) == SYMBOL_REF)
return \"%*jal\\t%1\";
+ else if (GET_CODE (target) == CONST_INT)
+ {
+ operands[1] = target;
+ operands[2] = gen_rtx (REG, SImode, GP_REG_FIRST + 31);
+ return \"%*%[li\\t%@,%1\\n\\tjal\\t%2,%@%]\";
+ }
+
else
{
operands[1] = target;