Module SSA

Provides classes and predicates for SSA representation (Static Single Assignment form).

An SSA variable consists of the pair of a SsaSourceVariable and a ControlFlowNode at which it is defined. Each SSA variable is defined either by a phi node, an implicit initial value (for parameters and fields), an explicit update, or an implicit update (for fields). An implicit update occurs either at a Call that might modify a field, at another update that can update the qualifier of a field, or at a FieldRead of the field in case the field is not amenable to a non-trivial SSA representation.

Import path

semmle.code.java.dataflow.SSA

Imports

SsaPublic
java

Provides all default Java QL imports.

Predicates

sameValue

Gets an expression that has the same value as the given SSA variable.

Classes

RefTypeCastExpr
SsaExplicitUpdate

An SSA variable that is defined by a VariableUpdate.

SsaImplicitInit

An SSA variable that is defined by its initial value in the callable. This includes initial values of parameters, fields, and closure variables.

SsaImplicitUpdate

An SSA variable that represents any sort of implicit update. This can be a Call that might reach a non-local update of the field, an explicit or implicit update of the qualifier of the field, or the implicit update that occurs just prior to a FieldRead of an untracked field.

SsaPhiNode

An SSA phi node.

SsaSourceField

A fully qualified field in the context of a Callable in which it is accessed.

SsaSourceVariable

A fully qualified variable in the context of a Callable in which it is accessed.

SsaUncertainImplicitUpdate

An SSA variable that represents an uncertain implicit update of the value. This is a Call that might reach a non-local update of the field or one of its qualifiers.

SsaUpdate

An SSA variable that either explicitly or implicitly updates the variable.

SsaVariable

An SSA variable.