Goal of this change is to guarantee stable ordering of the statepoint arguments and other newly inserted values such as gc.relocates. Previously we had explicit sorting in a couple of places. However for unnamed values ordering was partial and overall we didn't have any strong invariant regarding it. This change switches all data structures to use SetVector's and MapVector's which provide possibility for deterministic iteration over them. Explicit sorting is now redundant and was removed.
Details
Details
Diff Detail
Diff Detail
Event Timeline
Comment Actions
This lgtm with some inline comments on the SetOperations bit.
include/llvm/ADT/SetOperations.h | ||
---|---|---|
34 | Given that these functions only work with SetVector, why not just add these as member functions on SetVector (with the same TODO there as you have here)? | |
35 | Add a blank line here, same for set_subtract | |
39 | The first template args should probably be named V1Ty or El1Ty, since it is no longer a "set" type. Same for set_subtract. |
Given that these functions only work with SetVector, why not just add these as member functions on SetVector (with the same TODO there as you have here)?