diff options
author | Simon Marlow <marlowsd@gmail.com> | 2018-02-18 11:08:52 -0500 |
---|---|---|
committer | Ben Gamari <ben@smart-cactus.org> | 2018-02-18 11:57:45 -0500 |
commit | ccda4862102104e080a200e4d9c2ca8f42eb5b70 (patch) | |
tree | ec60814f7262b71dc0dff0bd1706f9a0efc24923 /compiler/cmm/CmmLayoutStack.hs | |
parent | bfb90bcab844ded9051370b822f0a9582c35e83e (diff) | |
download | haskell-ccda4862102104e080a200e4d9c2ca8f42eb5b70.tar.gz |
Tidy up and consolidate canned CmmReg and CmmGlobals
Test Plan: validate
Reviewers: bgamari, erikd
Reviewed By: bgamari
Subscribers: rwbarton, thomie, carter
Differential Revision: https://phabricator.haskell.org/D4380
Diffstat (limited to 'compiler/cmm/CmmLayoutStack.hs')
-rw-r--r-- | compiler/cmm/CmmLayoutStack.hs | 16 |
1 files changed, 8 insertions, 8 deletions
diff --git a/compiler/cmm/CmmLayoutStack.hs b/compiler/cmm/CmmLayoutStack.hs index 6cf8f8ea01..2602dc8d14 100644 --- a/compiler/cmm/CmmLayoutStack.hs +++ b/compiler/cmm/CmmLayoutStack.hs @@ -582,7 +582,7 @@ makeFixupBlock dflags sp0 l stack tscope assigs = block `blockSnoc` CmmUnwind [(Sp, Just unwind_val)] | otherwise = block - where unwind_val = cmmOffset dflags (CmmReg spReg) (sm_sp stack) + where unwind_val = cmmOffset dflags spExpr (sm_sp stack) block = blockJoin (CmmEntry tmp_lbl tscope) ( maybeAddSpAdj dflags sp_off $ maybeAddUnwind @@ -895,7 +895,7 @@ maybeAddSpAdj :: DynFlags -> ByteOff -> Block CmmNode O O -> Block CmmNode O O maybeAddSpAdj _ 0 block = block maybeAddSpAdj dflags sp_off block = block `blockSnoc` adj where - adj = CmmAssign spReg (cmmOffset dflags (CmmReg spReg) sp_off) + adj = CmmAssign spReg (cmmOffset dflags spExpr sp_off) {- Note [SP old/young offsets] @@ -918,7 +918,7 @@ arguments. areaToSp :: DynFlags -> ByteOff -> ByteOff -> (Area -> StackLoc) -> CmmExpr -> CmmExpr areaToSp dflags sp_old _sp_hwm area_off (CmmStackSlot area n) - = cmmOffset dflags (CmmReg spReg) (sp_old - area_off area - n) + = cmmOffset dflags spExpr (sp_old - area_off area - n) -- Replace (CmmStackSlot area n) with an offset from Sp areaToSp dflags _ sp_hwm _ (CmmLit CmmHighStackMark) @@ -1088,7 +1088,7 @@ insertReloads dflags stackmap live = [ CmmAssign (CmmLocal reg) -- This cmmOffset basically corresponds to manifesting -- @CmmStackSlot Old sp_off@, see Note [SP old/young offsets] - (CmmLoad (cmmOffset dflags (CmmReg spReg) (sp_off - reg_off)) + (CmmLoad (cmmOffset dflags spExpr (sp_off - reg_off)) (localRegType reg)) | (reg, reg_off) <- stackSlotRegs stackmap , reg `elemRegSet` live @@ -1141,7 +1141,7 @@ lowerSafeForeignCall dflags block -- Both 'id' and 'new_base' are KindNonPtr because they're -- RTS-only objects and are not subject to garbage collection id <- newTemp (bWord dflags) - new_base <- newTemp (cmmRegType dflags (CmmGlobal BaseReg)) + new_base <- newTemp (cmmRegType dflags baseReg) let (caller_save, caller_load) = callerSaveVolatileRegs dflags save_state_code <- saveThreadState dflags load_state_code <- loadThreadState dflags @@ -1152,7 +1152,7 @@ lowerSafeForeignCall dflags block resume = mkMiddle (callResumeThread new_base id) <*> -- Assign the result to BaseReg: we -- might now have a different Capability! - mkAssign (CmmGlobal BaseReg) (CmmReg (CmmLocal new_base)) <*> + mkAssign baseReg (CmmReg (CmmLocal new_base)) <*> caller_load <*> load_state_code @@ -1167,7 +1167,7 @@ lowerSafeForeignCall dflags block -- different. Hence we continue by jumping to the top stack frame, -- not by jumping to succ. jump = CmmCall { cml_target = entryCode dflags $ - CmmLoad (CmmReg spReg) (bWord dflags) + CmmLoad spExpr (bWord dflags) , cml_cont = Just succ , cml_args_regs = regs , cml_args = widthInBytes (wordWidth dflags) @@ -1197,7 +1197,7 @@ callSuspendThread dflags id intrbl = CmmUnsafeForeignCall (ForeignTarget (foreignLbl (fsLit "suspendThread")) (ForeignConvention CCallConv [AddrHint, NoHint] [AddrHint] CmmMayReturn)) - [id] [CmmReg (CmmGlobal BaseReg), mkIntExpr dflags (fromEnum intrbl)] + [id] [baseExpr, mkIntExpr dflags (fromEnum intrbl)] callResumeThread :: LocalReg -> LocalReg -> CmmNode O O callResumeThread new_base id = |