summaryrefslogtreecommitdiff
path: root/compiler/nativeGen
diff options
context:
space:
mode:
authorIan Lynagh <ian@well-typed.com>2012-09-14 15:24:30 +0100
committerIan Lynagh <ian@well-typed.com>2012-09-14 15:24:30 +0100
commitf203e63c6ff92bde63a206a58ea63ec082033b8a (patch)
tree0fdb84f953c6195727971d765a025c076fc5e07f /compiler/nativeGen
parent6f3be2b6ea39ee28d6cf8da08effb5dd215c92f2 (diff)
downloadhaskell-f203e63c6ff92bde63a206a58ea63ec082033b8a.tar.gz
Move more constants into platformConstants
Diffstat (limited to 'compiler/nativeGen')
-rw-r--r--compiler/nativeGen/X86/CodeGen.hs10
-rw-r--r--compiler/nativeGen/X86/Regs.hs6
2 files changed, 9 insertions, 7 deletions
diff --git a/compiler/nativeGen/X86/CodeGen.hs b/compiler/nativeGen/X86/CodeGen.hs
index 5e51a87699..66ebf75629 100644
--- a/compiler/nativeGen/X86/CodeGen.hs
+++ b/compiler/nativeGen/X86/CodeGen.hs
@@ -169,15 +169,15 @@ stmtToInstrs stmt = do
CmmSwitch arg ids -> do dflags <- getDynFlags
genSwitch dflags arg ids
CmmJump arg gregs -> do dflags <- getDynFlags
- let platform = targetPlatform dflags
- genJump arg (jumpRegs platform gregs)
+ genJump arg (jumpRegs dflags gregs)
CmmReturn ->
panic "stmtToInstrs: return statement should have been cps'd away"
-jumpRegs :: Platform -> Maybe [GlobalReg] -> [Reg]
-jumpRegs platform Nothing = allHaskellArgRegs platform
-jumpRegs platform (Just gregs) = [ RegReal r | Just r <- map (globalRegMaybe platform) gregs ]
+jumpRegs :: DynFlags -> Maybe [GlobalReg] -> [Reg]
+jumpRegs dflags Nothing = allHaskellArgRegs dflags
+jumpRegs dflags (Just gregs) = [ RegReal r | Just r <- map (globalRegMaybe platform) gregs ]
+ where platform = targetPlatform dflags
--------------------------------------------------------------------------------
-- | 'InstrBlock's are the insn sequences generated by the insn selectors.
diff --git a/compiler/nativeGen/X86/Regs.hs b/compiler/nativeGen/X86/Regs.hs
index 16938a8f15..c88ea98425 100644
--- a/compiler/nativeGen/X86/Regs.hs
+++ b/compiler/nativeGen/X86/Regs.hs
@@ -54,6 +54,7 @@ import RegClass
import OldCmm
import CmmCallConv
import CLabel ( CLabel )
+import DynFlags
import Outputable
import Platform
import FastTypes
@@ -440,8 +441,9 @@ instrClobberedRegs platform
--
-- All machine registers that are used for argument-passing to Haskell functions
-allHaskellArgRegs :: Platform -> [Reg]
-allHaskellArgRegs platform = [ RegReal r | Just r <- map (globalRegMaybe platform) globalArgRegs ]
+allHaskellArgRegs :: DynFlags -> [Reg]
+allHaskellArgRegs dflags = [ RegReal r | Just r <- map (globalRegMaybe platform) (globalArgRegs dflags) ]
+ where platform = targetPlatform dflags
-- allocatableRegs is allMachRegNos with the fixed-use regs removed.
-- i.e., these are the regs for which we are prepared to allow the