[pypy-commit] pypy default: Support for 'rep ret'

arigo noreply at buildbot.pypy.org
Mon Apr 8 11:45:53 CEST 2013


Author: Armin Rigo <arigo at tunes.org>
Branch: 
Changeset: r63131:33015def606f
Date: 2013-04-08 11:45 +0200
http://bitbucket.org/pypy/pypy/changeset/33015def606f/

Log:	Support for 'rep ret'

diff --git a/rpython/translator/c/gcc/test/elf64/track_basic_argument_registers.s b/rpython/translator/c/gcc/test/elf64/track_basic_argument_registers.s
--- a/rpython/translator/c/gcc/test/elf64/track_basic_argument_registers.s
+++ b/rpython/translator/c/gcc/test/elf64/track_basic_argument_registers.s
@@ -25,7 +25,8 @@
 	/* GCROOT -48(%rbp) */
 	movq	-24(%rbp), %rax
 	leave
-	ret
+	; try out a "rep ret" instead of just a "ret", for bad reasons
+	rep ret
 	.cfi_endproc
 .LFE0:
 	.size	foobar, .-foobar
diff --git a/rpython/translator/c/gcc/trackgcroot.py b/rpython/translator/c/gcc/trackgcroot.py
--- a/rpython/translator/c/gcc/trackgcroot.py
+++ b/rpython/translator/c/gcc/trackgcroot.py
@@ -664,6 +664,12 @@
     def visit_ret(self, line):
         return InsnRet(self.CALLEE_SAVE_REGISTERS)
 
+    def visit_rep(self, line):
+        # 'rep ret': bad reasons for this bogus 'rep' here
+        if line.split()[:2] == ['rep', 'ret']:
+            return self.visit_ret(line)
+        return []
+
     def visit_jmp(self, line):
         tablelabels = []
         match = self.r_jmp_switch.match(line)


More information about the pypy-commit mailing list