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.
Details
Details
Diff Detail
Diff Detail
- Repository
- rL LLVM
Event Timeline
Comment Actions
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.