summaryrefslogtreecommitdiff
path: root/compiler/cmm
diff options
context:
space:
mode:
authorIan Lynagh <ian@well-typed.com>2012-09-12 12:37:01 +0100
committerIan Lynagh <ian@well-typed.com>2012-09-12 12:37:01 +0100
commit44b5f471a314d964948c38684ce74b7a87df4ed8 (patch)
tree075f88991983d976ad13714da61b9773a6ca0a02 /compiler/cmm
parentf611396a581e733c41cee41750c95675bdb64961 (diff)
downloadhaskell-44b5f471a314d964948c38684ce74b7a87df4ed8.tar.gz
Pass DynFlags down to gcWord
Diffstat (limited to 'compiler/cmm')
-rw-r--r--compiler/cmm/CmmExpr.hs7
-rw-r--r--compiler/cmm/CmmLayoutStack.hs4
-rw-r--r--compiler/cmm/CmmParse.y2
-rw-r--r--compiler/cmm/CmmType.hs4
-rw-r--r--compiler/cmm/CmmUtils.hs2
-rw-r--r--compiler/cmm/MkGraph.hs2
6 files changed, 11 insertions, 10 deletions
diff --git a/compiler/cmm/CmmExpr.hs b/compiler/cmm/CmmExpr.hs
index 3387b3f470..128eb1ca62 100644
--- a/compiler/cmm/CmmExpr.hs
+++ b/compiler/cmm/CmmExpr.hs
@@ -133,7 +133,7 @@ cmmLitType dflags (CmmHighStackMark) = bWord dflags
cmmLabelType :: DynFlags -> CLabel -> CmmType
cmmLabelType dflags lbl
- | isGcPtrLabel lbl = gcWord
+ | isGcPtrLabel lbl = gcWord dflags
| otherwise = bWord dflags
cmmExprWidth :: DynFlags -> CmmExpr -> Width
@@ -415,11 +415,12 @@ node :: GlobalReg
node = VanillaReg 1 VGcPtr
globalRegType :: DynFlags -> GlobalReg -> CmmType
-globalRegType _ (VanillaReg _ VGcPtr) = gcWord
+globalRegType dflags (VanillaReg _ VGcPtr) = gcWord dflags
globalRegType dflags (VanillaReg _ VNonGcPtr) = bWord dflags
globalRegType _ (FloatReg _) = cmmFloat W32
globalRegType _ (DoubleReg _) = cmmFloat W64
globalRegType _ (LongReg _) = cmmBits W64
-globalRegType _ Hp = gcWord -- The initialiser for all
+globalRegType dflags Hp = gcWord dflags
+ -- The initialiser for all
-- dynamically allocated closures
globalRegType dflags _ = bWord dflags
diff --git a/compiler/cmm/CmmLayoutStack.hs b/compiler/cmm/CmmLayoutStack.hs
index 27054bb8b3..0ddbfb6227 100644
--- a/compiler/cmm/CmmLayoutStack.hs
+++ b/compiler/cmm/CmmLayoutStack.hs
@@ -916,8 +916,8 @@ lowerSafeForeignCall dflags block
id <- newTemp (bWord dflags)
new_base <- newTemp (cmmRegType dflags (CmmGlobal BaseReg))
let (caller_save, caller_load) = callerSaveVolatileRegs dflags
- load_tso <- newTemp gcWord
- load_stack <- newTemp gcWord
+ load_tso <- newTemp (gcWord dflags)
+ load_stack <- newTemp (gcWord dflags)
let suspend = saveThreadState dflags <*>
caller_save <*>
mkMiddle (callSuspendThread id intrbl)
diff --git a/compiler/cmm/CmmParse.y b/compiler/cmm/CmmParse.y
index d7df52a566..bfde123fd5 100644
--- a/compiler/cmm/CmmParse.y
+++ b/compiler/cmm/CmmParse.y
@@ -611,7 +611,7 @@ typenot8 :: { CmmType }
| 'bits64' { b64 }
| 'float32' { f32 }
| 'float64' { f64 }
- | 'gcptr' { gcWord }
+ | 'gcptr' {% do dflags <- getDynFlags; return $ gcWord dflags }
{
section :: String -> Section
section "text" = Text
diff --git a/compiler/cmm/CmmType.hs b/compiler/cmm/CmmType.hs
index db5db9bf96..4c5d6b1138 100644
--- a/compiler/cmm/CmmType.hs
+++ b/compiler/cmm/CmmType.hs
@@ -102,8 +102,8 @@ bWord _ = cmmBits wordWidth
bHalfWord :: DynFlags -> CmmType
bHalfWord dflags = cmmBits (halfWordWidth dflags)
-gcWord :: CmmType
-gcWord = CmmType GcPtrCat wordWidth
+gcWord :: DynFlags -> CmmType
+gcWord _ = CmmType GcPtrCat wordWidth
cInt, cLong :: CmmType
cInt = cmmBits cIntWidth
diff --git a/compiler/cmm/CmmUtils.hs b/compiler/cmm/CmmUtils.hs
index bc092177b1..07130f336b 100644
--- a/compiler/cmm/CmmUtils.hs
+++ b/compiler/cmm/CmmUtils.hs
@@ -89,7 +89,7 @@ import Hoopl
primRepCmmType :: DynFlags -> PrimRep -> CmmType
primRepCmmType _ VoidRep = panic "primRepCmmType:VoidRep"
-primRepCmmType _ PtrRep = gcWord
+primRepCmmType dflags PtrRep = gcWord dflags
primRepCmmType dflags IntRep = bWord dflags
primRepCmmType dflags WordRep = bWord dflags
primRepCmmType _ Int64Rep = b64
diff --git a/compiler/cmm/MkGraph.hs b/compiler/cmm/MkGraph.hs
index 6bcdcaa966..d9dfb42cbe 100644
--- a/compiler/cmm/MkGraph.hs
+++ b/compiler/cmm/MkGraph.hs
@@ -231,7 +231,7 @@ mkReturn dflags e actuals updfr_off =
mkReturnSimple :: DynFlags -> [CmmActual] -> UpdFrameOffset -> CmmAGraph
mkReturnSimple dflags actuals updfr_off =
mkReturn dflags e actuals updfr_off
- where e = CmmLoad (CmmStackSlot Old updfr_off) gcWord
+ where e = CmmLoad (CmmStackSlot Old updfr_off) (gcWord dflags)
mkBranch :: BlockId -> CmmAGraph
mkBranch bid = mkLast (CmmBranch bid)