diff options
author | Austin Seipp <austin@well-typed.com> | 2014-08-20 03:33:28 -0500 |
---|---|---|
committer | Austin Seipp <austin@well-typed.com> | 2014-08-20 03:47:35 -0500 |
commit | a9f5c8153f1eef5128ab09c53056cd17af4a2f62 (patch) | |
tree | 11eb467fbd27389a648e8e7a7cb15f5aec60a846 /compiler | |
parent | fb9bc40af7ced7ede22e91f12b66dc8035f94ff5 (diff) | |
download | haskell-a9f5c8153f1eef5128ab09c53056cd17af4a2f62.tar.gz |
utils: detabify/dewhitespace GraphBase
Signed-off-by: Austin Seipp <austin@well-typed.com>
Diffstat (limited to 'compiler')
-rw-r--r-- | compiler/utils/GraphBase.hs | 131 |
1 files changed, 59 insertions, 72 deletions
diff --git a/compiler/utils/GraphBase.hs b/compiler/utils/GraphBase.hs index 2aa16ae99e..c3850dfdd6 100644 --- a/compiler/utils/GraphBase.hs +++ b/compiler/utils/GraphBase.hs @@ -1,22 +1,14 @@ -- | Types for the general graph colorer. - -{-# OPTIONS_GHC -fno-warn-tabs #-} --- The above warning supression flag is a temporary kludge. --- While working on this module you are encouraged to remove it and --- detab the module (please do the detabbing in a separate patch). See --- http://ghc.haskell.org/trac/ghc/wiki/Commentary/CodingStyle#TabsvsSpaces --- for details - module GraphBase ( - Triv, - Graph (..), - initGraph, - graphMapModify, + Triv, + Graph (..), + initGraph, + graphMapModify, - Node (..), newNode, + Node (..), newNode, ) - + where @@ -25,94 +17,89 @@ import UniqFM -- | A fn to check if a node is trivially colorable --- For graphs who's color classes are disjoint then a node is 'trivially colorable' --- when it has less neighbors and exclusions than available colors for that node. +-- For graphs who's color classes are disjoint then a node is 'trivially colorable' +-- when it has less neighbors and exclusions than available colors for that node. -- --- For graph's who's color classes overlap, ie some colors alias other colors, then --- this can be a bit more tricky. There is a general way to calculate this, but --- it's likely be too slow for use in the code. The coloring algorithm takes --- a canned function which can be optimised by the user to be specific to the --- specific graph being colored. +-- For graph's who's color classes overlap, ie some colors alias other colors, then +-- this can be a bit more tricky. There is a general way to calculate this, but +-- it's likely be too slow for use in the code. The coloring algorithm takes +-- a canned function which can be optimised by the user to be specific to the +-- specific graph being colored. -- --- for details, see "A Generalised Algorithm for Graph-Coloring Register Allocation" --- Smith, Ramsey, Holloway - PLDI 2004. +-- for details, see "A Generalised Algorithm for Graph-Coloring Register Allocation" +-- Smith, Ramsey, Holloway - PLDI 2004. -- type Triv k cls color - = cls -- the class of the node we're trying to color. - -> UniqSet k -- the node's neighbors. - -> UniqSet color -- the node's exclusions. - -> Bool + = cls -- the class of the node we're trying to color. + -> UniqSet k -- the node's neighbors. + -> UniqSet color -- the node's exclusions. + -> Bool -- | The Interference graph. --- There used to be more fields, but they were turfed out in a previous revision. --- maybe we'll want more later.. +-- There used to be more fields, but they were turfed out in a previous revision. +-- maybe we'll want more later.. -- data Graph k cls color - = Graph { - -- | All active nodes in the graph. - graphMap :: UniqFM (Node k cls color) } + = Graph { + -- | All active nodes in the graph. + graphMap :: UniqFM (Node k cls color) } --- | An empty graph. +-- | An empty graph. initGraph :: Graph k cls color initGraph - = Graph - { graphMap = emptyUFM } + = Graph + { graphMap = emptyUFM } -- | Modify the finite map holding the nodes in the graph. -graphMapModify - :: (UniqFM (Node k cls color) -> UniqFM (Node k cls color)) - -> Graph k cls color -> Graph k cls color +graphMapModify + :: (UniqFM (Node k cls color) -> UniqFM (Node k cls color)) + -> Graph k cls color -> Graph k cls color graphMapModify f graph - = graph { graphMap = f (graphMap graph) } - - + = graph { graphMap = f (graphMap graph) } + + -- | Graph nodes. --- Represents a thing that can conflict with another thing. --- For the register allocater the nodes represent registers. +-- Represents a thing that can conflict with another thing. +-- For the register allocater the nodes represent registers. -- data Node k cls color - = Node { - -- | A unique identifier for this node. - nodeId :: k + = Node { + -- | A unique identifier for this node. + nodeId :: k - -- | The class of this node, - -- determines the set of colors that can be used. - , nodeClass :: cls + -- | The class of this node, + -- determines the set of colors that can be used. + , nodeClass :: cls - -- | The color of this node, if any. - , nodeColor :: Maybe color + -- | The color of this node, if any. + , nodeColor :: Maybe color - -- | Neighbors which must be colored differently to this node. - , nodeConflicts :: UniqSet k + -- | Neighbors which must be colored differently to this node. + , nodeConflicts :: UniqSet k - -- | Colors that cannot be used by this node. - , nodeExclusions :: UniqSet color + -- | Colors that cannot be used by this node. + , nodeExclusions :: UniqSet color - -- | Colors that this node would prefer to be, in decending order. - , nodePreference :: [color] + -- | Colors that this node would prefer to be, in decending order. + , nodePreference :: [color] - -- | Neighbors that this node would like to be colored the same as. - , nodeCoalesce :: UniqSet k } + -- | Neighbors that this node would like to be colored the same as. + , nodeCoalesce :: UniqSet k } -- | An empty node. newNode :: k -> cls -> Node k cls color newNode k cls - = Node - { nodeId = k - , nodeClass = cls - , nodeColor = Nothing - , nodeConflicts = emptyUniqSet - , nodeExclusions = emptyUniqSet - , nodePreference = [] - , nodeCoalesce = emptyUniqSet } - - - - - + = Node + { nodeId = k + , nodeClass = cls + , nodeColor = Nothing + , nodeConflicts = emptyUniqSet + , nodeExclusions = emptyUniqSet + , nodePreference = [] + , nodeCoalesce = emptyUniqSet } |