Member predicate SSA::Ssa::Definition::getAFirstUncertainRead

Gets a first uncertain read of the source variable underlying this SSA definition. That is, a read that can be reached from this SSA definition without passing through any other reads or SSA definitions, except for phi nodes and uncertain updates. 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 read of i on line 4 can be reached from the explicit SSA definition (wrapping an implicit entry definition) on line 3.
  • The reads of i on lines 6 and 7 are not the first reads of any SSA definition.
  • The read of this.Field on line 5 can be reached from the explicit SSA definition on line 4.
  • The read of this.Field on line 10 can be reached from the explicit SSA definition on line 7, the implicit SSA definition on line 9, and the phi node between lines 9 and 10.
  • The read of this.Field on line 11 is not the first read of any SSA definition.

Subsequent uncertain reads can be found by following the steps defined by AssignableRead.getANextUncertainRead().

AssignableRead getAFirstUncertainRead()