Module Dominance

Provides dominance predicates for control-flow nodes.

These variations of the dominance relation are used for computing SSA form. Formally, a node d dominates a node n if all paths from the function entry point to n go through d; this applies within a function and only for nodes reachable from the entry point. Unreachable nodes are not part the dominance relation.

Import path

semmle.code.cpp.controlflow.Dominance

Imports

cpp

Provides classes and predicates for working with C/C++/ObjC/ObjC++ code.

Predicates

bbDominates

Holds if dominator is a dominator of node in the control-flow graph of basic blocks. This is reflexive.

bbIDominates

Holds if dominator is an immediate dominator of node in the control-flow graph of basic blocks.

bbStrictlyDominates

Holds if dominator is a strict dominator of node in the control-flow graph of basic blocks. Being strict means that dominator != node.

dominates

Holds if dominator is a dominator of node in the control-flow graph. This is reflexive.

functionEntry

Holds if entry is the entry point of a function.

iDominates

Holds if dominator is an immediate dominator of node in the control-flow graph.

strictlyDominates

Holds if dominator is a strict dominator of node in the control-flow graph. Being strict means that dominator != node.