- User Since
- Oct 3 2021, 6:09 PM (77 w, 3 h)
Feb 11 2023
Changed some wording in the review, used a virtual function instead of hardcoded emitNops call so that X86 (and potentially other targets) can use their own implementations if necessary.
Feb 10 2023
Feb 9 2023
Jan 30 2023
Rebase to fix w/ new LLVM version. @paquette ping, this PR has been open for some time now and it's blocking the more important change (preventing XRay pseudo-opcodes from being outlined without needless code duplication)
Jun 20 2022
May 21 2022
May 7 2022
Rebase, update a few comments.
May 6 2022
Rebase and add assertions for other operands that shouldn't exist at this point.
May 5 2022
Comment clarification and typo fix.
Apr 30 2022
Apr 29 2022
Okay, taking this off the review queue until I take a look at the other bug incidentally exposed by fixing this one; the MachineOutliner doesn't properly adjust attributes of new outlined functions with XRay instrumentation opcodes. (should it even run on those at all?)
As such, what happens is that this check doesn't pass, meaning CurrentFnBegin isn't set, meaning that an assertion failure is thrown when the code generator tries to use it as a symbol when emitting the XRay instrumentation table.
The reason this testcase didn't fail before is because AArch64InstrInfo::getOutliningCandidateInfo uses the sizes of instructions as part of the outlining heuristic. When the pseudo-opcode sizes were fixed, the heuristic decided it was profitable to outline an XRay pseudo-instruction, triggering the bug.
Add newline to end of test case
Oct 14 2021
Note: abandoning this due to concerns mentioned above. Will run some more testing with this entire block removed.
Oct 13 2021
Make clang-format happy.
Fix faulty assertion.
Change from if statement to assert.
Make sure replaceAllUsesWith is also removed.
Make sure not to diff off of a local branch instead of main.
Visit with SCCPSolver after replacing users.
Oct 12 2021
Oct 5 2021
Add some comments.