CodeGenPrepare pass can sink pointer comparison across statepoint to the point of use (see comment in IR/SafepointIRVerifier.cpp) Due to specifics of statepoints, it is still legal to have tied def and use rewritten to the same register in TwoAddress pass. However, properly updating LiveIntervals and LiveVariables becomes complicated. For simplicity, let's fall back to generic handling of tied registers when we detect such case.
Details
Details
Diff Detail
Diff Detail
- Repository
- rG LLVM Github Monorepo
Event Timeline
Comment Actions
The precommitted test breaks tests on mac: http://45.33.8.238/macm1/42841/step_11.txt
Please take a look and revert for now if it takes a while to fix. (Looks like the check looks for "Assertion ... failed" while the mac runtime apparently prints "Assertion failed: ...")
Comment Actions
The precommitted test also appears to break on Windows: https://lab.llvm.org/buildbot/#/builders/216/builds/8547
Comment Actions
Rebase on top of relanded test.
Added TODO about recomputation of live range/liveness instead of bailing out.
Comment Actions
lgtm as correctness fix. It would b good still to find a way to recompute analysis and revert this back.