CodeQL library for C/C++
Search

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

import semmle.code.cpp.controlflow.Dominance

Imports

cpp

Provides classes and predicates for working with C/C++ 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.

bbIPostDominates

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

bbPostDominates

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

bbStrictlyDominates

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

bbStrictlyPostDominates

Holds if postDominator is a strict post-dominator of node in the control-flow graph of basic blocks. Being strict means that postDominator != 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.

functionExit

Holds if exit is the exit node of a function.

iDominates

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

iPostDominates

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

postDominates

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

strictlyDominates

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

strictlyPostDominates

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