CodeQL library for C#
codeql/csharp-all 3.0.1-dev (changelog, source)
Search

Member predicate Ssa::Definition::getAnUltimateDefinition

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

int Field;

void SetField(int i) {
  this.Field = i;
  Use(this.Field);
  if (i > 0)
    this.Field = i - 1;
  else if (i < 0)
    SetField(1);
  Use(this.Field);
  Use(this.Field);
}
  • The explicit SSA definition (wrapping an implicit entry definition) of i on line 3 is defined in terms of itself.
  • The explicit SSA definitions of this.Field on lines 4 and 7 are defined in terms of themselves.
  • The implicit SSA definition of this.Field on line 9 is defined in terms of itself and the explicit definition on line 4.
  • The phi node between lines 9 and 10 is defined in terms of the explicit definition on line 4, the explicit definition on line 7, and the implicit definition on line 9.
Definition getAnUltimateDefinition()