i386.md (return_indirect_internal): New.
authorRichard Henderson <rth@cygnus.com>
Fri, 4 Aug 2000 04:14:52 +0000 (21:14 -0700)
committerRichard Henderson <rth@gcc.gnu.org>
Fri, 4 Aug 2000 04:14:52 +0000 (21:14 -0700)
        * i386.md (return_indirect_internal): New.
        * i386.c (ix86_expand_epilogue): Use it.

From-SVN: r35471

gcc/ChangeLog
gcc/config/i386/i386.c
gcc/config/i386/i386.md

index 237bf485eee44ba5fe6f9c5e439042b2861cf0b6..ab59c2e60b3f3696642c70396cf189d9e989c2f1 100644 (file)
@@ -1,3 +1,8 @@
+2000-08-03  Richard Henderson  <rth@cygnus.com>
+
+        * config/i386/i386.md (return_indirect_internal): New.
+        * config/i386/i386.c (ix86_expand_epilogue): Use it.
+
 2000-08-03  Zack Weinberg  <zack@wolery.cumb.org>
 
        * cpplex.c (parse_name): Might have to glue a CPP_OTHER token
index c02dfc77346c1ded106247205ec186dcdee2e5ef..3a2603e083663490fe83244d6534ef81252b601a 100644 (file)
@@ -2138,7 +2138,7 @@ ix86_expand_epilogue (emit_return)
 
          emit_insn (gen_popsi1 (ecx));
          emit_insn (gen_addsi3 (stack_pointer_rtx, stack_pointer_rtx, popc));
-         emit_indirect_jump (ecx);
+         emit_jump_insn (gen_return_indirect_internal (ecx));
        }
       else
        emit_jump_insn (gen_return_pop_internal (popc));
index b6324b6ff7aead4e1522e75a6ab2bf1f1c5a891c..1d771e4a5cd13243166516b3e938378f8c66d5f8 100644 (file)
    (set_attr "length_immediate" "2")
    (set_attr "modrm" "0")])
 
+(define_insn "return_indirect_internal"
+  [(return)
+   (use (match_operand:SI 0 "register_operand" "r"))]
+  "reload_completed"
+  "jmp\\t%*%0"
+  [(set_attr "type" "ibr")
+   (set_attr "length_immediate" "0")])
+
 (define_insn "nop"
   [(const_int 0)]
   ""