Remove CPP from nativeGen/RegAlloc/Linear/FreeRegs.hs
[ghc-hetmet.git] / compiler / nativeGen / RegAlloc / Linear / Base.hs
index 087ab9c..432acdf 100644 (file)
@@ -18,7 +18,6 @@ module RegAlloc.Linear.Base (
 
 where
 
-import RegAlloc.Linear.FreeRegs
 import RegAlloc.Linear.StackMap
 import RegAlloc.Liveness
 import Reg
@@ -34,8 +33,8 @@ import UniqSupply
 --      target a particular label. We have to insert fixup code to make
 --      the register assignments from the different sources match up.
 --
-type BlockAssignment
-        = BlockMap (FreeRegs, RegMap Loc)
+type BlockAssignment freeRegs
+        = BlockMap (freeRegs, RegMap Loc)
 
 
 -- | Where a vreg is currently stored
@@ -101,16 +100,16 @@ data RegAllocStats
 
 
 -- | The register alloctor state
-data RA_State
+data RA_State freeRegs
         = RA_State
 
         {
         -- | the current mapping from basic blocks to
         --      the register assignments at the beginning of that block.
-          ra_blockassig :: BlockAssignment
+          ra_blockassig :: BlockAssignment freeRegs
 
         -- | free machine registers
-        , ra_freeregs   :: {-#UNPACK#-}!FreeRegs
+        , ra_freeregs   :: !freeRegs
 
         -- | assignment of temps to locations
         , ra_assig      :: RegMap Loc
@@ -131,7 +130,7 @@ data RA_State
 
 
 -- | The register allocator monad type.
-newtype RegM a
-        = RegM { unReg :: RA_State -> (# RA_State, a #) }
+newtype RegM freeRegs a
+        = RegM { unReg :: RA_State freeRegs -> (# RA_State freeRegs, a #) }