From 5347cb83e730a84fabe162dfc722132cc3ed0f75 Mon Sep 17 00:00:00 2001 From: tomsmeding Date: Fri, 29 Nov 2019 12:01:43 +0100 Subject: WIP push temporaries before calls Requires liveness analysis --- Optimiser.hs | 15 +-------------- 1 file changed, 1 insertion(+), 14 deletions(-) (limited to 'Optimiser.hs') diff --git a/Optimiser.hs b/Optimiser.hs index 01267e2..626cb50 100644 --- a/Optimiser.hs +++ b/Optimiser.hs @@ -9,6 +9,7 @@ import qualified Data.Set as Set import AST (Name) import Intermediate +import Util optimise :: IRProgram -> IRProgram @@ -219,17 +220,3 @@ readTempsR RNone = [] mapFoldl :: (s -> a -> (s, b)) -> s -> [a] -> (s, [b]) mapFoldl f s = fmap reverse . foldl' (\(s', yet) x -> fmap (: yet) (f s' x)) (s, []) - -uniq :: Eq a => [a] -> [a] -uniq (x:y:zs) | x == y = uniq (y:zs) - | otherwise = x : uniq (y:zs) -uniq l = l - -oppositeGraph :: (Show a, Ord a) => Map.Map a [a] -> Map.Map a [a] -oppositeGraph graph = - let nodes = concat [k : vs | (k, vs) <- Map.assocs graph] - edges = map ((,) <$> fst . head <*> map snd) - . groupBy ((==) `on` fst) - . sortOn fst - $ [(to, from) | (from, tos) <- Map.assocs graph, to <- tos] - in Map.fromList (map (,[]) nodes ++ edges) -- cgit v1.2.3-70-g09d2