projects
/
ghc-hetmet.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Derive some Typeable instances
[ghc-hetmet.git]
/
compiler
/
utils
/
GraphColor.hs
diff --git
a/compiler/utils/GraphColor.hs
b/compiler/utils/GraphColor.hs
index
8e7989d
..
8dc4121
100644
(file)
--- a/
compiler/utils/GraphColor.hs
+++ b/
compiler/utils/GraphColor.hs
@@
-98,12
+98,13
@@
colorGraph iterative spinCount colors triv spill graph0
-- with the provided triv function.
--
in if not $ null ksNoTriv
-- with the provided triv function.
--
in if not $ null ksNoTriv
- then pprPanic "colorGraph: trivially colorable nodes didn't color!" empty
-{- ( empty
+ then pprPanic "colorGraph: trivially colorable nodes didn't color!" -- empty
+ ( empty
$$ text "ksTriv = " <> ppr ksTriv
$$ text "ksNoTriv = " <> ppr ksNoTriv
$$ text "ksTriv = " <> ppr ksTriv
$$ text "ksNoTriv = " <> ppr ksNoTriv
+ $$ text "colors = " <> ppr colors
$$ empty
$$ empty
- $$ dotGraph (\x -> text "white") triv graph1) -}
+ $$ dotGraph (\_ -> text "white") triv graph_triv)
else ( graph_prob
, mkUniqSet ksNoColor -- the nodes that didn't color (spills)
else ( graph_prob
, mkUniqSet ksNoColor -- the nodes that didn't color (spills)
@@
-131,7
+132,7
@@
colorGraph iterative spinCount colors triv spill graph0
colorScan
:: ( Uniquable k, Uniquable cls, Uniquable color
, Ord k, Eq cls
colorScan
:: ( Uniquable k, Uniquable cls, Uniquable color
, Ord k, Eq cls
- , Outputable k, Outputable color)
+ , Outputable k, Outputable cls)
=> Bool -- ^ whether to do iterative coalescing
-> Triv k cls color -- ^ fn to decide whether a node is trivially colorable
-> (Graph k cls color -> k) -- ^ fn to choose a node to potentially leave uncolored if nothing is trivially colorable.
=> Bool -- ^ whether to do iterative coalescing
-> Triv k cls color -- ^ fn to decide whether a node is trivially colorable
-> (Graph k cls color -> k) -- ^ fn to choose a node to potentially leave uncolored if nothing is trivially colorable.
@@
-224,7
+225,8
@@
colorScan_spill iterative triv spill graph
-- | Try to assign a color to all these nodes.
assignColors
-- | Try to assign a color to all these nodes.
assignColors
- :: ( Uniquable k, Uniquable cls, Uniquable color, Eq color )
+ :: ( Uniquable k, Uniquable cls, Uniquable color
+ , Eq color, Outputable cls)
=> UniqFM (UniqSet color) -- ^ map of (node class -> set of colors available for this class).
-> Graph k cls color -- ^ the graph
-> [k] -- ^ nodes to assign a color to.
=> UniqFM (UniqSet color) -- ^ map of (node class -> set of colors available for this class).
-> Graph k cls color -- ^ the graph
-> [k] -- ^ nodes to assign a color to.
@@
-261,7
+263,8
@@
assignColors colors graph ks
-- returns Nothing if no color can be assigned to this node.
--
selectColor
-- returns Nothing if no color can be assigned to this node.
--
selectColor
- :: ( Uniquable k, Uniquable cls, Uniquable color, Eq color)
+ :: ( Uniquable k, Uniquable cls, Uniquable color
+ , Eq color, Outputable cls)
=> UniqFM (UniqSet color) -- ^ map of (node class -> set of colors available for this class).
-> Graph k cls color -- ^ the graph
-> k -- ^ key of the node to select a color for.
=> UniqFM (UniqSet color) -- ^ map of (node class -> set of colors available for this class).
-> Graph k cls color -- ^ the graph
-> k -- ^ key of the node to select a color for.
@@
-272,8
+275,10
@@
selectColor colors graph u
Just node = lookupNode graph u
-- lookup the available colors for the class of this node.
Just node = lookupNode graph u
-- lookup the available colors for the class of this node.
- Just colors_avail
- = lookupUFM colors (nodeClass node)
+ colors_avail
+ = case lookupUFM colors (nodeClass node) of
+ Nothing -> pprPanic "selectColor: no colors available for class " (ppr (nodeClass node))
+ Just cs -> cs
-- find colors we can't use because they're already being used
-- by a node that conflicts with this one.
-- find colors we can't use because they're already being used
-- by a node that conflicts with this one.