If end of interval for overlap utility is a use which has tied-def we
should not split interval on this instruction due to in this case use
and def may have different registers and it breaks tied-def property.
Details
Diff Detail
Event Timeline
Could you add dedicated test case?
It is unclear from the test change that this is covering what you've just added.
| llvm/test/CodeGen/X86/statepoint-invoke-ra1.ll | ||
|---|---|---|
| 2 | Please use an autogen test here to check the output and put a comment here explaining the two things this is testing. I think the comment will probably address Quentin's concerns as well, though he should confirm. | |
| llvm/lib/CodeGen/SplitKit.cpp | ||
|---|---|---|
| 822 | Generally, we cannot set end of OpenIdx to End if it is a statepoint instruction and register represents tied-def on this instructions. Setting end we split tied-use and tied-def in different live intervals allowing to assign them to different registers breaking the tied-ness property. | |
LGTM w/comment addressed
| llvm/test/CodeGen/X86/statepoint-invoke-ra.mir | ||
|---|---|---|
| 3 ↗ | (On Diff #341452) | This comment is now stale, please update. |
Generally, we cannot set end of OpenIdx to End if it is a statepoint instruction and register represents tied-def on this instructions.
Setting end we split tied-use and tied-def in different live intervals allowing to assign them to different registers breaking the tied-ness property.