Class Ssa::Definition

A static single assignment (SSA) definition. Either an explicit variable definition (ExplicitDefinition), an implicit variable definition (ImplicitDefinition), or a pseudo definition (PseudoDefinition).

Import path

import csharp

Direct supertypes

Known direct subtypes

Predicates

definesAt

Holds if this SSA definition is at index i in basic block bb. Phi nodes and entry nodes (captured variables and fields/properties) are considered to be at index -1, while normal variable updates are at the index of the control flow node they wrap.

getAFirstRead

Gets a read of the source variable underlying this SSA definition that can be reached from this SSA definition without passing through any other SSA definition or read. Example:

getAFirstReadAtNode

Gets a read of the source variable underlying this SSA definition at control flow node cfn that can be reached from this SSA definition without passing through any other SSA definition or read. Example:

getALastRead

Gets a last read of the source variable underlying this SSA definition. That is, a read that can reach the end of the enclosing callable, or another SSA definition for the source variable, without passing through any other read. Example:

getALastReadAtNode

Gets a last read of the source variable underlying this SSA definition at control flow node cfn. That is, a read that can reach the end of the enclosing callable, or another SSA definition for the source variable, without passing through any other read. Example:

getARead

Gets a read of the source variable underlying this SSA definition that can be reached from this SSA definition without passing through any other SSA definitions. Example:

getAReadAtNode

Gets a read of the source variable underlying this SSA definition at control flow node cfn that can be reached from this SSA definition without passing through any other SSA definitions. Example:

getAnUltimateDefinition

Gets a definition that ultimately defines this SSA definition and is not itself a pseudo node. Example:

getBasicBlock

Gets the basic block to which this SSA definition belongs.

getControlFlowNode

Gets the control flow node of this SSA definition, if any. Phi nodes are examples of SSA definitions without a control flow node, as they are modelled at index -1 in the relevant basic block.

getElement

Gets the syntax element associated with this SSA definition, if any. This is either an expression, for example x = 0, a parameter, or a callable. Pseudo nodes have no associated syntax element.

getEnclosingCallable

Gets the callable to which this SSA definition belongs.

getLocation

Gets the location of this SSA definition.

getSourceVariable

Gets the source variable underlying this SSA definition.

isLiveAtEndOfBlock

Holds is this SSA definition is live at the end of basic block bb. That is, this definition reaches the end of basic block bb, at which point it is still live, without crossing another SSA definition of the same source variable.

isLiveOutRefParameterDefinition

Holds if this SSA definition assigns to out/ref parameter p, and the parameter may remain unchanged throughout the rest of the enclosing callable.

toString

Gets a textual representation of this SSA definition.