Dominators.xcc
Benoit Dupont de Dinechin (Benoit.Dupont-de-Dinechin@st.com).
Copyright 2002 - 2007 STMicroelectronics. Copyright 1995 - 1998 Commissariat a l'Energie Atomique.
This program is free software; you can redistribute it and/or modify it under the terms of either (at your option): the GNU General Public License (GPL) version 2; the GNU Lesser General Public License (LGPL) version 2.1; any later version of these licences as published by the Free Software Foundation.
Dominators— Maintain dominance information.
struct Dominators_;
Dominators_nodeOf— This Dominators NODEOF array.
DGraphNode * Dominators_nodeOf(Dominators this);
Dominators_nodeIDOM— Return the IDOM of a DGraphNode.
int32_t Dominators_nodeIDOM(Dominators this, DGraphNode node);
Dominators_nodeDOMS— Return the DOMS IETree of a DGraphNode.
IETree Dominators_nodeDOMS(Dominators this, DGraphNode node);
Dominators_DOMS_FOREACH— Iterate over a DGraphNode DOMS DGraphNodes.
#define Dominators_DOMS_FOREACH(this, node, Type, succ) { \ DGraphNode *Dominators_NODEOF = Dominators_nodeOf(this); \ IETree Dominators_NODEDOMS = Dominators_nodeDOMS(this, node); \ IETree_FOREACH(Dominators_NODEDOMS, Dominators_ITER) { \ Type *(succ) = (Type *)Dominators_NODEOF[(int32_t)Dominators_ITER]; #define Dominators_DOMS_ENDEACH \ } IETree_ENDEACH \ }
Dominators_nodeDOMN— Return the DOMN of a DGraphNode.
int32_t Dominators_nodeDOMN(Dominators this, DGraphNode node);
Dominators_hasDOMF— True is this Dominators has DOMF.
bool Dominators_hasDOMF(Dominators this);
Dominators_nodeDOMF— Return the DOMF IETree of a DGraphNode.
IETree Dominators_nodeDOMF(Dominators this, DGraphNode node);
Dominators_DOMF_FOREACH— Iterate over a DGraphNode DOMF DGraphNodes.
#define Dominators_DOMF_FOREACH(this, node, Type, succ) { \ DGraphNode *Dominators_NODEOF = Dominators_nodeOf(this); \ IETree Dominators_NODEDOMF = Dominators_nodeDOMF(this, node); \ IETree_FOREACH(Dominators_NODEDOMF, Dominators_ITER) { \ Type *(succ) = (Type *)Dominators_NODEOF[(int32_t)Dominators_ITER]; #define Dominators_DOMF_ENDEACH \ } IETree_ENDEACH \ }
Dominators_dominates— Test dominance relation between two DGraphNodes.
Application of the (not so) well-known properties of DFS numbering.
bool Dominators_dominates(Dominators this, DGraphNode this_node, DGraphNode that_node);
Dominators_makeFrontiers— Make the dominance frontiers.
Implementation from "A Simple, Fast Dominators Algorithm", Software Practice and Experience, Vol 4, 2001, by K. D. Cooper, T. J. Harvey, K. Kennedy.
void Dominators_makeFrontiers(Dominators this);
Dominators_pretty— Pretty-print this Dominators.
bool Dominators_pretty(Dominators this, FILE *file);