diff gcc/config/i386/i386.md @ 25:2476ed92181e

modified machine description of i386 for support indirect sibcall attributed fastcall.
author kent <kent@cr.ie.u-ryukyu.ac.jp>
date Tue, 27 Oct 2009 16:04:06 +0900
parents 58ad6c70ea60
children 27e6f95b2c21
line wrap: on
line diff
--- a/gcc/config/i386/i386.md	Thu Oct 15 18:47:39 2009 +0900
+++ b/gcc/config/i386/i386.md	Tue Oct 27 16:04:06 2009 +0900
@@ -15009,6 +15009,18 @@
   DONE;
 })
 
+(define_expand "sibcall_pop"
+  [(parallel [(call (match_operand:QI 0 "" "")
+		    (match_operand:SI 1 "" ""))
+	      (set (reg:SI SP_REG)
+		   (plus:SI (reg:SI SP_REG)
+			    (match_operand:SI 3 "" "")))])]
+  ""
+{
+  ix86_expand_call (NULL, operands[0], operands[1], operands[2], operands[3], 1);
+  DONE;
+})
+
 (define_insn "*call_0"
   [(call (mem:QI (match_operand 0 "constant_call_address_operand" ""))
 	 (match_operand 1 "" ""))]
@@ -15132,6 +15144,21 @@
   DONE;
 })
 
+(define_expand "sibcall_value_pop"
+  [(parallel [(set (match_operand 0 "" "")
+		   (call (match_operand:QI 1 "" "")
+			 (match_operand:SI 2 "" "")))
+	      (set (reg:SI SP_REG)
+		   (plus:SI (reg:SI SP_REG)
+			    (match_operand:SI 4 "" "")))])]
+  "!TARGET_64BIT"
+{
+  ix86_expand_call (operands[0], operands[1], operands[2],
+		    operands[3], operands[4], 1);
+  DONE;
+})
+
+
 ;; Call subroutine returning any type.
 
 (define_expand "untyped_call"