Now with the benefit of hindsight I see there is a terrible coupling
between EqualityExtractionPass and
FreeVariableToBufferAssignmentPass that means the implementation is
unnecessarily complicated. What EqualityExtractionPass should really
do is modify the constraints so that eliminated free variables are no
longer mentioned anywhere in the constraints. This would mean that
FreeVariableToBufferAssignmentPass would not need to know anything
about EqualityExtractionPass. So really EqualityExtractionPass
should really be PropagateEqualityPass or something like that...
Now with the benefit of hindsight I see there is a terrible coupling
between
EqualityExtractionPassandFreeVariableToBufferAssignmentPassthat means the implementation isunnecessarily complicated. What
EqualityExtractionPassshould reallydo is modify the constraints so that eliminated free variables are no
longer mentioned anywhere in the constraints. This would mean that
FreeVariableToBufferAssignmentPasswould not need to know anythingabout
EqualityExtractionPass. So reallyEqualityExtractionPassshould really be
PropagateEqualityPassor something like that...