Commit 9a740fb9 authored by Michael D. Adams's avatar Michael D. Adams
Browse files

Removed an older version of selectStackFormat

parent 53a82428
......@@ -242,58 +242,6 @@ buildContinuation proc_points blocks start =
--------------------------------------------------------------------------------
-- For now just select the continuation orders in the order they are in the set with no gaps
selectStackFormat :: BlockEnv CmmLive -> [BrokenBlock] -> BlockEnv StackFormat
selectStackFormat live blocks =
fixedpoint dependants update (map brokenBlockId blocks) emptyUFM
where
blocks_ufm :: BlockEnv BrokenBlock
blocks_ufm = listToUFM $ map (\b -> (brokenBlockId b, b)) blocks
dependants :: BlockId -> [BlockId]
dependants ident =
brokenBlockTargets $ lookupWithDefaultUFM
blocks_ufm unknown_block ident
update :: BlockId -> Maybe BlockId
-> BlockEnv StackFormat -> Maybe (BlockEnv StackFormat)
update ident cause formats =
if ident `elemUFM` formats
then Nothing -- Blocks only need to be updated once
else case (cause,
brokenBlockEntry $ lookupWithDefaultUFM blocks_ufm
unknown_block ident) of
-- Propagate only to blocks entered by branches
-- (not function entry blocks or continuation entry blocks)
(Just cause_name, ControlEntry) ->
Just $ addToUFM formats ident cause_format
where cause_format = lookupWithDefaultUFM
formats unknown_block
cause_name
-- Do initial calculates for function blocks
(Nothing, FunctionEntry _ _) ->
Just $
addToUFM formats ident $
StackFormat ident 0 []
-- Do initial calculates for continuation blocks
(Nothing, ContinuationEntry _) ->
Just $
addToUFM formats ident $
live_to_format ident $
lookupWithDefaultUFM live unknown_block ident
_ -> Nothing
unknown_block = panic "unknown BlockId in selectStackFormat"
live_to_format :: BlockId -> CmmLive -> StackFormat
live_to_format label live =
foldl extend_format
(StackFormat label retAddrSizeW [])
(uniqSetToList live)
extend_format :: StackFormat -> LocalReg -> StackFormat
extend_format (StackFormat block size offsets) reg =
StackFormat block (slot_size reg + size) ((CmmLocal reg, size) : offsets)
selectStackFormat2 :: BlockEnv CmmLive -> [Continuation] -> [(CLabel, StackFormat)]
selectStackFormat2 live continuations =
map (\c -> (continuationLabel c, selectStackFormat' c)) continuations
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment