Repository : ssh://darcs.haskell.org//srv/darcs/ghc

On branch  : master

http://hackage.haskell.org/trac/ghc/changeset/23efe668b1dbd7a8a2b9c3a3ce3ad0ec84a3e464

>---------------------------------------------------------------

commit 23efe668b1dbd7a8a2b9c3a3ce3ad0ec84a3e464
Author: Ian Lynagh <[email protected]>
Date:   Wed Aug 22 00:40:58 2012 +0100

    Remove some CPP in nativeGen/X86/Regs.hs

>---------------------------------------------------------------

 compiler/nativeGen/X86/CodeGen.hs |   12 +++++-----
 compiler/nativeGen/X86/Regs.hs    |   42 +++++++++++++++---------------------
 2 files changed, 24 insertions(+), 30 deletions(-)

diff --git a/compiler/nativeGen/X86/CodeGen.hs 
b/compiler/nativeGen/X86/CodeGen.hs
index 63a4576..a8bbcbb 100644
--- a/compiler/nativeGen/X86/CodeGen.hs
+++ b/compiler/nativeGen/X86/CodeGen.hs
@@ -1978,11 +1978,11 @@ genCCall64' platform target dest_regs args = do
     (stack_args, int_regs_used, fp_regs_used, load_args_code)
          <-
         if platformOS platform == OSMinGW32
-        then load_args_win args [] [] allArgRegs nilOL
+        then load_args_win args [] [] (allArgRegs platform) nilOL
         else do (stack_args, aregs, fregs, load_args_code)
-                    <- load_args args allIntArgRegs allFPArgRegs nilOL
-                let fp_regs_used  = reverse (drop (length fregs) (reverse 
allFPArgRegs))
-                    int_regs_used = reverse (drop (length aregs) (reverse 
allIntArgRegs))
+                    <- load_args args (allIntArgRegs platform) (allFPArgRegs 
platform) nilOL
+                let fp_regs_used  = reverse (drop (length fregs) (reverse 
(allFPArgRegs platform)))
+                    int_regs_used = reverse (drop (length aregs) (reverse 
(allIntArgRegs platform)))
                 return (stack_args, int_regs_used, fp_regs_used, 
load_args_code)
 
     let
@@ -1991,7 +1991,7 @@ genCCall64' platform target dest_regs args = do
                 -- for annotating the call instruction with
         sse_regs = length fp_regs_used
         arg_stack_slots = if platformOS platform == OSMinGW32
-                          then length stack_args + length allArgRegs
+                          then length stack_args + length (allArgRegs platform)
                           else length stack_args
         tot_arg_size = arg_size * arg_stack_slots
 
@@ -2014,7 +2014,7 @@ genCCall64' platform target dest_regs args = do
     -- On Win64, we also have to leave stack space for the arguments
     -- that we are passing in registers
     lss_code <- if platformOS platform == OSMinGW32
-                then leaveStackSpace (length allArgRegs)
+                then leaveStackSpace (length (allArgRegs platform))
                 else return nilOL
     delta <- getDeltaNat
 
diff --git a/compiler/nativeGen/X86/Regs.hs b/compiler/nativeGen/X86/Regs.hs
index ab9b778..b0e5acf 100644
--- a/compiler/nativeGen/X86/Regs.hs
+++ b/compiler/nativeGen/X86/Regs.hs
@@ -421,11 +421,26 @@ xmm n = regSingle (firstxmm+n)
 -- horror show 
-----------------------------------------------------------------
 freeReg                 :: RegNo -> FastBool
 globalRegMaybe          :: GlobalReg -> Maybe RealReg
-allArgRegs              :: [(Reg, Reg)]
-allIntArgRegs           :: [Reg]
-allFPArgRegs            :: [Reg]
 callClobberedRegs       :: Platform -> [Reg]
 
+allArgRegs :: Platform -> [(Reg, Reg)]
+allArgRegs platform
+ | platformOS platform == OSMinGW32 = zip [rcx,rdx,r8,r9]
+                                          (map regSingle [firstxmm ..])
+ | otherwise = panic "X86.Regs.allArgRegs: not defined for this arch"
+
+allIntArgRegs :: Platform -> [Reg]
+allIntArgRegs platform
+ | (platformOS platform == OSMinGW32) || target32Bit platform
+    = panic "X86.Regs.allIntArgRegs: not defined for this platform"
+ | otherwise = [rdi,rsi,rdx,rcx,r8,r9]
+
+allFPArgRegs :: Platform -> [Reg]
+allFPArgRegs platform
+ | platformOS platform == OSMinGW32
+    = panic "X86.Regs.allFPArgRegs: not defined for this platform"
+ | otherwise = map regSingle [firstxmm .. firstxmm+7]
+
 #if i386_TARGET_ARCH
 #define eax 0
 #define ebx 1
@@ -601,27 +616,6 @@ globalRegMaybe _                        = Nothing
 
 --
 
-#if defined(mingw32_HOST_OS)
-
-allArgRegs = zip (map regSingle [rcx,rdx,r8,r9])
-                 (map regSingle [firstxmm ..])
-allIntArgRegs = panic "X86.Regs.allIntArgRegs: not defined for this platform"
-allFPArgRegs = panic "X86.Regs.allFPArgRegs: not defined for this platform"
-
-#elif i386_TARGET_ARCH
-
-allArgRegs = panic "X86.Regs.allArgRegs: not defined for this arch"
-allIntArgRegs = panic "X86.Regs.allIntArgRegs: should not be used!"
-allFPArgRegs    = map regSingle [firstxmm .. firstxmm+7]
-
-#else
-
-allArgRegs = panic "X86.Regs.allArgRegs: not defined for this arch"
-allIntArgRegs = map regSingle [rdi,rsi,rdx,rcx,r8,r9]
-allFPArgRegs    = map regSingle [firstxmm .. firstxmm+7]
-
-#endif
-
 -- All machine registers that are used for argument-passing to Haskell 
functions
 allHaskellArgRegs :: [Reg]
 allHaskellArgRegs = [ RegReal r | Just r <- map globalRegMaybe globalArgRegs ]



_______________________________________________
Cvs-ghc mailing list
[email protected]
http://www.haskell.org/mailman/listinfo/cvs-ghc

Reply via email to