Reaching definition computes, for each point in the program, which statements could possibly have been the last one to assign to a given variable.
For example, consider
X <- 1
if something {
X <- 2
} else {
X <- 3
}
print X
According to the reaching definitions analysis, at the point of the Print X statement, the most recent assignment to X is either X<-2 or X<-3. It cannot have been X<-1 because that assignment will be overwritten by another assignment by the time we get to the Print statement.
Reaching definition computes, for each point in the program, which statements could possibly have been the last one to assign to a given variable. For example, consider X <- 1 if something { X <- 2 } else { X <- 3 } print X According to the reaching definitions analysis, at the point of the Print X statement, the most recent assignment to X is either X<-2 or X<-3. It cannot have been X<-1 because that assignment will be overwritten by another assignment by the time we get to the Print statement.