aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTom Wood <wood@gnu.org>1993-03-23 12:51:52 +0000
committerTom Wood <wood@gnu.org>1993-03-23 12:51:52 +0000
commita93821e903e06a282633f4acf0abf23e1628cb99 (patch)
tree7c3b8e2a7af49a0c03e8ea73d0b150c8c863a45f
parente165d9e5cda4121db20e321d5d6d28bd9e9275d6 (diff)
downloadgcc-a93821e903e06a282633f4acf0abf23e1628cb99.zip
gcc-a93821e903e06a282633f4acf0abf23e1628cb99.tar.gz
gcc-a93821e903e06a282633f4acf0abf23e1628cb99.tar.bz2
(untyped_call): New pattern.
From-SVN: r3840
-rw-r--r--gcc/config/mips/mips.md24
1 files changed, 24 insertions, 0 deletions
diff --git a/gcc/config/mips/mips.md b/gcc/config/mips/mips.md
index 57ae3cb..56886b3 100644
--- a/gcc/config/mips/mips.md
+++ b/gcc/config/mips/mips.md
@@ -4203,6 +4203,30 @@ move\\t%0,%z4\\n\\
(set_attr "mode" "none")
(set_attr "length" "1")])
+;; Call subroutine returning any type.
+
+(define_expand "untyped_call"
+ [(parallel [(call (match_operand 0 "" "")
+ (const_int 0))
+ (match_operand 1 "" "")
+ (match_operand 2 "" "")])]
+ ""
+ "
+{
+ int i;
+
+ emit_call_insn (gen_call (operands[0], const0_rtx, NULL, const0_rtx));
+
+ for (i = 0; i < XVECLEN (operands[2], 0); i++)
+ {
+ rtx set = XVECEXP (operands[2], 0, i);
+ emit_move_insn (SET_DEST (set), SET_SRC (set));
+ }
+
+ emit_insn (gen_blockage ());
+
+ DONE;
+}")
;;
;; ....................