This is an archive of the discontinued LLVM Phabricator instance.

RegisterCoalscer: Only coalesce complete reserved registers.
ClosedPublic

Authored by MatzeB on Nov 15 2016, 11:49 AM.

Details

Summary

The coalescer eliminates copies from reserved registers of the form:

%vregX = COPY %rY

when %rY is a reserved physreg. However this transformation may be invalid if %rY has non-reserved subregister for which we will miss liveness information. Be conservative in this case and do not coalesce.

The test requires https://reviews.llvm.org/D26648 to work.

Diff Detail

Repository
rL LLVM

Event Timeline

MatzeB updated this revision to Diff 78046.Nov 15 2016, 11:49 AM
MatzeB retitled this revision from to RegisterCoalscer: Only coalesce complete reserved registers..
MatzeB updated this object.
MatzeB added a reviewer: qcolombet.
MatzeB set the repository for this revision to rL LLVM.
MatzeB added a subscriber: llvm-commits.
qcolombet accepted this revision.Nov 15 2016, 4:09 PM
qcolombet edited edge metadata.

LGTM.

This revision is now accepted and ready to land.Nov 15 2016, 4:09 PM
This revision was automatically updated to reflect the committed changes.
lib/CodeGen/RegisterCoalescer.cpp