[llvm] x86: fix musttail sibcall miscompilation (PR #168956)
Folkert de Vries via llvm-commits
llvm-commits at lists.llvm.org
Tue Nov 25 11:29:41 PST 2025
================
@@ -2943,26 +3078,6 @@ bool X86TargetLowering::IsEligibleForTailCallOptimization(
// If the callee takes no arguments then go on to check the results of the
// call.
if (!Outs.empty()) {
- if (StackArgsSize > 0) {
- // Check if the arguments are already laid out in the right way as
- // the caller's fixed stack objects.
- MachineFrameInfo &MFI = MF.getFrameInfo();
- const MachineRegisterInfo *MRI = &MF.getRegInfo();
- const X86InstrInfo *TII = Subtarget.getInstrInfo();
- for (unsigned I = 0, E = ArgLocs.size(); I != E; ++I) {
- const CCValAssign &VA = ArgLocs[I];
- SDValue Arg = OutVals[I];
- ISD::ArgFlagsTy Flags = Outs[I].Flags;
- if (VA.getLocInfo() == CCValAssign::Indirect)
- return false;
- if (!VA.isRegLoc()) {
- if (!MatchingStackOffset(Arg, VA.getLocMemOffset(), Flags, MFI, MRI,
- TII, VA))
- return false;
- }
- }
- }
-
----------------
folkertdev wrote:
This rejected tail calls that needed stack shuffling, but because we handle that logic now, this restriction can be removed.
https://github.com/llvm/llvm-project/pull/168956
More information about the llvm-commits
mailing list