X-Git-Url: http://git.megacz.com/?p=ghc-hetmet.git;a=blobdiff_plain;f=compiler%2Fcmm%2FCmmBrokenBlock.hs;h=17b81783d6b3fb777cb70b5b9aed885a3afff711;hp=ffb7f025af7503cbf6a481dca745ec6f82a956bf;hb=edc0bafd3fcd01b85a2e8894e5dfe149eb0e0857;hpb=176fa33f17dd78355cc572e006d2ab26898e2c69 diff --git a/compiler/cmm/CmmBrokenBlock.hs b/compiler/cmm/CmmBrokenBlock.hs index ffb7f02..17b8178 100644 --- a/compiler/cmm/CmmBrokenBlock.hs +++ b/compiler/cmm/CmmBrokenBlock.hs @@ -1,9 +1,3 @@ -{-# OPTIONS -w #-} --- The above warning supression flag is a temporary kludge. --- While working on this module you are encouraged to remove it and fix --- any warnings in the module. See --- http://hackage.haskell.org/trac/ghc/wiki/Commentary/CodingStyle#Warnings --- for details module CmmBrokenBlock ( BrokenBlock(..), @@ -29,11 +23,9 @@ import CgUtils (callerSaveVolatileRegs) import ClosureInfo import Maybes -import List +import Data.List import Panic -import UniqSupply import Unique -import UniqFM -- This module takes a 'CmmBasicBlock' which might have 'CmmCall' -- statements in it with 'CmmSafe' set and breaks it up at each such call. @@ -188,6 +180,9 @@ data FinalStmt -- the 'adaptBlockToFormat' function. -- could be +{- +UNUSED: 2008-12-29 + breakProc :: [BlockId] -- ^ Any GC blocks that should be special -> [[Unique]] -- ^ An infinite list of uniques @@ -220,6 +215,7 @@ breakProc gc_block_idents uniques info ident params blocks = zipWith (adaptBlockToFormat selected) adaptor_uniques (snd broken_blocks) +-} ----------------------------------------------------------------------------- -- | Takes a 'CmmBasicBlock' and breaks it up into a list of 'BrokenBlock' @@ -347,8 +343,10 @@ selectContinuations needed_continuations = formats -- sort so the most votes goes *first* -- (thus the order of x and y is reversed) +makeContinuationEntries :: [(BlockId, ContFormat)] + -> BrokenBlock -> BrokenBlock makeContinuationEntries formats - block@(BrokenBlock ident entry stmts targets exit) = + block@(BrokenBlock ident _entry stmts targets exit) = case lookup ident formats of Nothing -> block Just (ContFormat formals srt is_gc) -> @@ -361,8 +359,8 @@ adaptBlockToFormat :: [(BlockId, ContFormat)] -> [BrokenBlock] adaptBlockToFormat formats unique block@(BrokenBlock ident entry stmts targets - exit@(FinalCall next target formals - actuals srt ret is_gc)) = + (FinalCall next target formals + actuals srt ret is_gc)) = if format_formals == formals && format_srt == srt && format_is_gc == is_gc @@ -420,4 +418,4 @@ cmmBlockFromBrokenBlock (BrokenBlock ident _ stmts _ exit) = ----------------------------------------------------------------------------- -- | Build a mapping so we can lookup a 'BrokenBlock' by its 'BlockId' blocksToBlockEnv :: [BrokenBlock] -> BlockEnv BrokenBlock -blocksToBlockEnv blocks = listToUFM $ map (\b -> (brokenBlockId b, b)) blocks +blocksToBlockEnv blocks = mkBlockEnv $ map (\b -> (brokenBlockId b, b)) blocks