Page MenuHomePhabricator

[RegisterCoalescer] Fix for SubRegJoin failures
Needs ReviewPublic

Authored by dstuttard on Nov 21 2017, 5:51 AM.

Details

Reviewers
MatzeB
kparzysz
Summary

Issue was SubRanges containing a Segment of the form:

[1200r,1200d:0)

which isn't actually incorrect, but is redundant.
When performing a prune this can result in an error as the endpoint tagged for
further processing as one that requires dealing with in a later stage is no
longer valid (since the instruction is being removed).

I've seen a few asserts for SubRange join that seem related to this
issue. SubRanges can have Segments with [1200r,1200d:0) type Segments and while
this isn't incorrect (the sub registers are being defined after all) they are
immediately dead and some of the passes don't seem to cope with this very well.

See also https://llvm.org/PR35373

Change-Id: Ie7986b1d6599249cbc87ad8825df95945ef28d93

Event Timeline

dstuttard created this revision.Nov 21 2017, 5:51 AM
dstuttard added a subscriber: llvm-commits.

Any comment on this change? If not I'll land in the next few days.

I committed a different fix for this: https://reviews.llvm.org/rL334963.