This is an archive of the discontinued LLVM Phabricator instance.

Remove stale live-ins in the branch folder
ClosedPublic

Authored by kparzysz on Apr 28 2017, 2:22 PM.

Details

Summary

Hoisting common code can cause registers that live-in in the successor blocks to no longer be live-in. The live-in information needs to be updated to reflect this, or otherwise incorrect code can be generated later on.

Diff Detail

Repository
rL LLVM

Event Timeline

kparzysz created this revision.Apr 28 2017, 2:22 PM
MatzeB accepted this revision.May 4 2017, 3:32 PM

I would consider it okay if the live-in lists contain more registers. I consider it a code-quality/optimization problem but in principle I don't think passes should fail because of it, so there would be a bug in IfConversion when it creates invalid code because of extra live-in registers.

Having said that: We should go ahead with this patch: It increases precision of the live-in lists.

This revision is now accepted and ready to land.May 4 2017, 3:32 PM
This revision was automatically updated to reflect the committed changes.