Module Make
Provides an SSA implementation.
The SSA construction is pruned based on liveness. That is, SSA definitions are only
constructed for Input::variableWrite
s when it is possible to reach an
Input::variableRead
, without going through a certain write (the same goes for phi
nodes). Whenever a variable is both read and written at the same index in some basic
block, the read is assumed to happen before the write.
The result of invoking this parameterized module is not meant to be exposed directly; instead, one should define a language-specific layer on top, and make sure to cache all exposed predicates marked with
NB: If this predicate is exposed, it should be cached.
Import path
import codeql.ssa.Ssa
Predicates
adjacentDefRead | NB: If this predicate is exposed, it should be cached. |
adjacentDefReadExt | NB: If this predicate is exposed, it should be cached. |
lastRef | NB: If this predicate is exposed, it should be cached. |
lastRefExt | NB: If this predicate is exposed, it should be cached. |
lastRefRedef | NB: If this predicate is exposed, it should be cached. |
lastRefRedefExt | NB: If this predicate is exposed, it should be cached. |
lastRefRedefExt | NB: If this predicate is exposed, it should be cached. |
phiHasInputFromBlock | NB: If this predicate is exposed, it should be cached. |
phiHasInputFromBlockExt | NB: If this predicate is exposed, it should be cached. |
ssaDefReachesEndOfBlock | NB: If this predicate is exposed, it should be cached. |
ssaDefReachesEndOfBlockExt | NB: If this predicate is exposed, it should be cached. |
ssaDefReachesRead | NB: If this predicate is exposed, it should be cached. |
ssaDefReachesReadExt | NB: If this predicate is exposed, it should be cached. |
uncertainWriteDefinitionInput | NB: If this predicate is exposed, it should be cached. |
Classes
Definition | A static single assignment (SSA) definition. |
DefinitionExt | An extended static single assignment (SSA) definition. |
PhiNode | A phi node. |
PhiReadNode | A phi-read node. |
UncertainWriteDefinition | An SSA definition that represents an uncertain update of the underlying source variable. |
WriteDefinition | An SSA definition that corresponds to a write. |
Modules
Consistency | Provides a set of consistency queries. |
DataFlowIntegration | Constructs the type |
Module signatures
DataFlowIntegrationInputSig | Provides the input to |
Parameters
Location | LocationSig | |
Input | InputSig<Make::Location> |