diff options
author | Greg Fischer <greg@lunarg.com> | 2017-05-08 18:32:12 -0600 |
---|---|---|
committer | David Neto <dneto@google.com> | 2017-05-25 12:31:38 -0400 |
commit | d6f29790687f697ee3cb0bf105e365dba5faf384 (patch) | |
tree | 0631b96db3213da9dc69171f62a16f8b55106000 /source/validate.h | |
parent | df6537cee00f3459eaf48025643325c94a95157f (diff) | |
download | spirv-tools-d6f29790687f697ee3cb0bf105e365dba5faf384.tar.gz |
CFA: Pull in CalculateDominators
Diffstat (limited to 'source/validate.h')
-rw-r--r-- | source/validate.h | 24 |
1 files changed, 0 insertions, 24 deletions
diff --git a/source/validate.h b/source/validate.h index f24e75d9..34d1ffef 100644 --- a/source/validate.h +++ b/source/validate.h @@ -34,30 +34,6 @@ class BasicBlock; using get_blocks_func = std::function<const std::vector<BasicBlock*>*(const BasicBlock*)>; -/// @brief Calculates dominator edges for a set of blocks -/// -/// Computes dominators using the algorithm of Cooper, Harvey, and Kennedy -/// "A Simple, Fast Dominance Algorithm", 2001. -/// -/// The algorithm assumes there is a unique root node (a node without -/// predecessors), and it is therefore at the end of the postorder vector. -/// -/// This function calculates the dominator edges for a set of blocks in the CFG. -/// Uses the dominator algorithm by Cooper et al. -/// -/// @param[in] postorder A vector of blocks in post order traversal order -/// in a CFG -/// @param[in] predecessor_func Function used to get the predecessor nodes of a -/// block -/// -/// @return the dominator tree of the graph, as a vector of pairs of nodes. -/// The first node in the pair is a node in the graph. The second node in the -/// pair is its immediate dominator in the sense of Cooper et.al., where a block -/// without predecessors (such as the root node) is its own immediate dominator. -std::vector<std::pair<BasicBlock*, BasicBlock*>> CalculateDominators( - const std::vector<const BasicBlock*>& postorder, - get_blocks_func predecessor_func); - /// @brief Performs the Control Flow Graph checks /// /// @param[in] _ the validation state of the module |