qute-0.1.0: A software analysis framework built around the QBE intermediate language.
Safe HaskellNone
LanguageGHC2021

Language.QBE.Analysis.Graph

Synopsis

Documentation

type Node = Int Source #

type Path = [Node] Source #

type Edge = (Node, Node) Source #

idom :: Rooted -> [(Node, Node)] Source #

Immediate dominators. O(|E|*alpha(|E|,|V|)), where alpha(m,n) is "a functional inverse of Ackermann's function".

This Complexity bound assumes O(1) indexing. Since we're using IntMap, it has an additional lg |V| factor somewhere in there. I'm not sure where.

ipdom :: Rooted -> [(Node, Node)] Source #

Immediate post-dominators. Complexity as for idom.

domTree :: Rooted -> Tree Node Source #

Dominator tree. Complexity as for idom.

pdomTree :: Rooted -> Tree Node Source #

Post-dominator tree. Complexity as for idom.

dom :: Rooted -> [(Node, Path)] Source #

Dominators. Complexity as for idom

pdom :: Rooted -> [(Node, Path)] Source #

Post-dominators. Complexity as for idom.

pddfs :: Rooted -> [Node] Source #

Post-dominated depth-first search.

rpddfs :: Rooted -> [Node] Source #

Reverse post-dominated depth-first search.

fromAdj :: [(Node, [Node])] -> Graph Source #

toAdj :: Graph -> [(Node, [Node])] Source #

parents :: Tree a -> [(a, a)] Source #

ancestors :: Tree a -> [(a, [a])] Source #