This is an archive of the discontinued LLVM Phabricator instance.

R600/SI: Fix live range error hidden by SIFoldOperands
ClosedPublic

Authored by arsenm on Nov 24 2014, 10:41 AM.

Details

Reviewers
arsenm
Summary

m0 is treated as a virtual register class with a single register
rather than the physical register it really is. This was updating
the live range of the used virtual copy of m0 from the first ds_read
instruction, and leaving the unused copy unchanged. This resulted in a
"Live segment doesn't end at a valid instruction" verifier error because
the erased instructions. Update the live range of the second copy (which
should be dead).

No test since I'm not sure how to trigger this with SIFoldOperands
enabled.

Diff Detail

Event Timeline

arsenm updated this revision to Diff 16569.Nov 24 2014, 10:41 AM
arsenm retitled this revision from to R600/SI: Fix live range error hidden by SIFoldOperands .
arsenm updated this object.
arsenm edited the test plan for this revision. (Show Details)
arsenm added a subscriber: Unknown Object (MLST).
arsenm accepted this revision.Dec 11 2014, 12:21 PM
arsenm added a reviewer: arsenm.
This revision is now accepted and ready to land.Dec 11 2014, 12:21 PM
arsenm closed this revision.Dec 11 2014, 12:22 PM