X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;f=compiler%2Fcmm%2FCmmInfo.hs;h=c0e217c1cc62029ad3d0514b51c50afda56fe760;hb=4f92da533cd1c7b5f41ef8794ee6a284f1680413;hp=770baec2eac12f6f623b95983585dc6174f4ee71;hpb=16dc208aaad7aadaea970e47b8055d7d7f8781e5;p=ghc-hetmet.git diff --git a/compiler/cmm/CmmInfo.hs b/compiler/cmm/CmmInfo.hs index 770baec..c0e217c 100644 --- a/compiler/cmm/CmmInfo.hs +++ b/compiler/cmm/CmmInfo.hs @@ -14,7 +14,6 @@ module CmmInfo ( import Cmm import CmmUtils -import PprCmm import CLabel import MachOp @@ -28,7 +27,6 @@ import SMRep import Constants import StaticFlags -import DynFlags import Unique import UniqSupply import Panic @@ -78,10 +76,10 @@ cmmToRawCmm cmm = do mkInfoTable :: Unique -> CmmTop -> [RawCmmTop] mkInfoTable uniq (CmmData sec dat) = [CmmData sec dat] -mkInfoTable uniq (CmmProc (CmmInfo _ _ info) entry_label arguments (ListGraph blocks)) = +mkInfoTable uniq (CmmProc (CmmInfo _ _ info) entry_label arguments blocks) = case info of -- | Code without an info table. Easy. - CmmNonInfoTable -> [CmmProc [] entry_label arguments (ListGraph blocks)] + CmmNonInfoTable -> [CmmProc [] entry_label arguments blocks] CmmInfoTable (ProfilingInfo ty_prof cl_prof) type_tag type_info -> let info_label = entryLblToInfoLbl entry_label @@ -152,22 +150,22 @@ mkInfoTableAndCode :: CLabel -> [CmmLit] -> [CmmLit] -> CLabel - -> CmmFormals - -> [CmmBasicBlock] + -> CmmFormalsWithoutKinds + -> ListGraph CmmStmt -> [RawCmmTop] mkInfoTableAndCode info_lbl std_info extra_bits entry_lbl args blocks | tablesNextToCode -- Reverse the extra_bits; and emit the top-level proc = [CmmProc (map CmmStaticLit (reverse extra_bits ++ std_info)) - entry_lbl args (ListGraph blocks)] + entry_lbl args blocks] - | null blocks -- No actual code; only the info table is significant + | ListGraph [] <- blocks -- No code; only the info table is significant = -- Use a zero place-holder in place of the -- entry-label in the info table [mkRODataLits info_lbl (zeroCLit : std_info ++ extra_bits)] | otherwise -- Separately emit info table (with the function entry = -- point as first entry) and the entry code - [CmmProc [] entry_lbl args (ListGraph blocks), + [CmmProc [] entry_lbl args blocks, mkDataLits info_lbl (CmmLabel entry_lbl : std_info ++ extra_bits)] mkSRTLit :: CLabel @@ -224,8 +222,8 @@ mkLiveness uniq live = is_non_ptr Nothing = True is_non_ptr (Just reg) = case localRegGCFollow reg of - KindNonPtr -> True - KindPtr -> False + GCKindNonPtr -> True + GCKindPtr -> False bits :: [Bool] bits = mkBits live @@ -277,3 +275,4 @@ mkStdInfoTable type_descr closure_descr cl_type srt_len layout_lit | otherwise = [] type_lit = packHalfWordsCLit cl_type srt_len +