Make realization order invariant to unique_name suffixes #8124
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Currently the realization order is alphabetical in the case of ties, which may depend on suffixes introduced by unique_name, which will not have a consistent alphabetical order if you define the same pipeline multiple times, e.g. in a multi-target compilation scenario (because numeric order isn't alphabetical order if you don't have leading zeros).
This is a problem for machine-generated schedules, because they depend on topological order of the pipeline. So in a multi-target compilation, a machine-generated schedule that was checked in may be valid for the first few targets, but as soon as your unique_name counters start exceed 10, the ordering may no longer be correct.
This PR makes the realization order invariant to any unique_name suffixes. It works by stripping any potential suffixes, and then sorting primarily by any prefix that remains (for maximum consistency with existing machine-generated schedules), and secondarily by the order in which Funcs were given definitions (which is now tracked).