Hello!

We can jump indirect from memory address, sparing a couple of cycles.

2012-02-14  Uros Bizjak  <ubiz...@gmail.com>

        * config/x86/target.h (GTM_longjmp): Jump indirect from memory address.

Tested on x86_64-pc-linux-gnu {,-m32}.

OK for mainline?

Uros.
Index: config/x86/sjlj.S
===================================================================
--- config/x86/sjlj.S   (revision 184177)
+++ config/x86/sjlj.S   (working copy)
@@ -119,23 +119,19 @@ SYM(GTM_longjmp):
        movq    32(%rsi), %r13
        movq    40(%rsi), %r14
        movq    48(%rsi), %r15
-       movq    56(%rsi), %rdx
        movl    %edi, %eax
        cfi_def_cfa(%rcx, 0)
-       cfi_register(%rip, %rdx)
        movq    %rcx, %rsp
-       jmp     *%rdx
+       jmp     *56(%rsi)
 #else
        movl    (%edx), %ecx
        movl    4(%edx), %ebx
        movl    8(%edx), %esi
        movl    12(%edx), %edi
        movl    16(%edx), %ebp
-       movl    20(%edx), %edx
        cfi_def_cfa(%ecx, 0)
-       cfi_register(%eip, %edx)
        movl    %ecx, %esp
-       jmp     *%edx
+       jmp     *20(%edx)
 #endif
        cfi_endproc
 

Reply via email to