* config/mips/mips.md (exception_receiver): New.
authorRichard Henderson <rth@redhat.com>
Thu, 14 Jun 2001 20:15:19 +0000 (13:15 -0700)
committerRichard Henderson <rth@gcc.gnu.org>
Thu, 14 Jun 2001 20:15:19 +0000 (13:15 -0700)
From-SVN: r43379

gcc/ChangeLog
gcc/config/mips/mips.md

index 8f99787da02d8326180a09a77209f27c924848c1..1e63d0dcd41b69ee3149150946f8032652092f1e 100644 (file)
@@ -1,3 +1,7 @@
+2001-06-14  Richard Henderson  <rth@redhat.com>
+
+       * config/mips/mips.md (exception_receiver): New.
+
 2001-06-14  Daniel J. Berlin <dan@cgsoftware.com>
 
        * doc/gcc.texi:  Update passes documentation to be more in tune
index 5b8d00e92888fbd83bf999c9e75dbb25fef9177e..b01e484767e8c257a6b6fa1fdce68d76b9043319 100644 (file)
 ;; Number      USE
 ;; 0           movsi_ul
 ;; 1           movsi_us, get_fnaddr
-;; 2           loadgp
 ;; 3           eh_set_return
 ;; 20          builtin_setjmp_setup
 ;;
 ;; UNSPEC_VOLATILE values
 ;; 0           blockage
+;; 2           loadgp
 ;; 3           builtin_longjmp
+;; 4           exception_receiver
 ;; 10          consttable_qi
 ;; 11          consttable_hi
 ;; 12          consttable_si
@@ -9571,6 +9572,26 @@ ld\\t%2,%1-%S1(%2)\;daddu\\t%2,%2,$31\;j\\t%2"
                  operands[0]);
   DONE;
 }")
+
+(define_insn "exception_receiver"
+  [(unspec_volatile [(const_int 0)] 4)]
+  "TARGET_ABICALLS && (mips_abi == ABI_32 || mips_abi == ABI_O64)"
+  "*
+{
+  rtx loc;
+
+  operands[0] = pic_offset_table_rtx;
+  if (frame_pointer_needed)
+    loc = hard_frame_pointer_rtx;
+  else
+    loc = stack_pointer_rtx;
+  loc = plus_constant (loc, current_frame_info.args_size);
+  operands[1] = gen_rtx_MEM (Pmode, loc);
+
+  return mips_move_1word (operands, insn, 0);
+}"
+  [(set_attr "type"   "load")
+   (set_attr "length" "8")])
 \f
 ;;
 ;;  ....................