Commits

Michael Gottesman committed 341a77c856c
[loop-arc] Prepare the successor representation for non-local successors. In a forthcoming patch I am going to add support to loop regions to support non-local successors. This patch is an incremental step that does not change the current output. Without getting into too many details (see the forthcoming patch), The way that I am going to implement this is by creating a tagged SuccessorID that consists either of an index into the successor list of the parent node or the index of a local successor. Since the SuccessorIDs will be referring to the parent regions successor list, we can not sort or remove successors from the successor list since it would invalidate such indices. We still maintain the property that no successor edges are represented twice (the real property that we wanted after all), but by performing the check at insertion time instead of just sorting at various places. This patch begins the transition down that path by: 1. Creating a new struct SuccessorID with an IsDead flag on it. 2. Never sorting or removing SuccessorIDs from the list. Instead we just mark them dead and use FilterRanges to ignore them. 3. Adding a verifier that verifies that our successor lists do not have any duplicate elements. This ensures that we maintain the no-duplicate property. rdar://22238658 Swift SVN r32694