[llvm-commits] [llvm] r77968 - /llvm/trunk/lib/Target/X86/X86CompilationCallback_Win64.asm

Anton Korobeynikov asl at math.spbu.ru
Mon Aug 3 01:43:38 PDT 2009


Author: asl
Date: Mon Aug  3 03:43:36 2009
New Revision: 77968

URL: http://llvm.org/viewvc/llvm-project?rev=77968&view=rev
Log:
Unbreak win64 compilation callback.
Since we're generating stubs by hands we don't follow the ABI and don't
create a register spill area.
Don't use this area in compilation callback!

Modified:
    llvm/trunk/lib/Target/X86/X86CompilationCallback_Win64.asm

Modified: llvm/trunk/lib/Target/X86/X86CompilationCallback_Win64.asm
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/X86/X86CompilationCallback_Win64.asm?rev=77968&r1=77967&r2=77968&view=diff

==============================================================================
--- llvm/trunk/lib/Target/X86/X86CompilationCallback_Win64.asm (original)
+++ llvm/trunk/lib/Target/X86/X86CompilationCallback_Win64.asm Mon Aug  3 03:43:36 2009
@@ -15,17 +15,18 @@
 
 .code
 X86CompilationCallback proc
-    ; Save all int arg registers into register spill area.
-    mov     [rsp+ 8], rcx
-    mov     [rsp+16], rdx
-    mov     [rsp+24], r8
-    mov     [rsp+32], r9
-
     push    rbp
 
     ; Save RSP.
     mov     rbp, rsp
 
+    ; Save all int arg registers
+    ; WARNING: We cannot use register spill area - we're generating stubs by hands!
+    push    rcx
+    push    rdx
+    push    r8
+    push    r9
+
     ; Align stack on 16-byte boundary.
     and     rsp, -16
 
@@ -52,15 +53,15 @@
     ; Restore RSP.
     mov     rsp, rbp
 
+    ; Restore all int arg registers
+    sub     rsp, 32
+    pop     r9
+    pop     r8
+    pop     rdx
+    pop     rcx
+
     ; Restore RBP.
     pop     rbp
-
-    ; Restore all int arg registers.
-    mov     r9,  [rsp+32]
-    mov     r8,  [rsp+24]
-    mov     rdx, [rsp+16]
-    mov     rcx, [rsp+ 8]
-
     ret
 X86CompilationCallback endp
 





More information about the llvm-commits mailing list