Make
Module Make
Provides an SSA implementation.
The SSA construction is pruned based on liveness. That is, SSA definitions are only
constructed for Input::variableWrites 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. |
| adjacentUseUse | Holds if the certain read at index |
| firstUse | Holds if |
| 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. |
| ssaDefReachesRead | NB: If this predicate is exposed, it should be cached. |
| ssaDefReachesReadExt | NB: If this predicate is exposed, it should be cached. |
Classes
Modules
| Consistency | Provides a set of consistency queries. |
| DataFlowIntegration | Constructs the type |
| MakeSsa | |
| TestAdjacentRefs | Provides query predicates for testing adjacent SSA references and insertion of phi reads. |