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
Details
Diff Detail
Diff Detail
Unit Tests
Unit Tests
Time | Test | |
---|---|---|
70 ms | x64 debian > Clang.Driver::debug-pass-structure.c |
Event Timeline
Comment Actions
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 ↗ | (On Diff #338458) | 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. |
Comment Actions
LGTM w/comment addressed
llvm/test/CodeGen/X86/statepoint-invoke-ra.mir | ||
---|---|---|
3 | 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.