-
Notifications
You must be signed in to change notification settings - Fork 5.4k
Closed
dotnet/coreclr
#26255Labels
arch-arm64arch-x64area-CodeGen-coreclrCLR JIT compiler in src/coreclr/src/jit and related components such as SuperPMICLR JIT compiler in src/coreclr/src/jit and related components such as SuperPMIbugos-linuxLinux OS (any supported distro)Linux OS (any supported distro)
Milestone
Description
https://github.com/dotnet/coreclr/blob/master/src/jit/lower.cpp#L1723 assumed the caller has the same number of arguments as the callee to be fastTailCalled. There are many different permutations of caller and callee that will break this assumption while still being decided as a fastTailCall case.
An example on unix amd64 would be:
// 9 arguments
// 8 in registers
// 1 on stack (16 bytes)
caller(float, float, float, float, float, float, float, float, { structOfSize 16 })
// 10 arguments
// 8 in registers
// 2 on stack (16 bytes)
callee(float, float, float, float, float, float, float, float, { structOfSize 8 }, { structOfSize 8} )
category:correctness
theme:tail-call
skill-level:intermediate
cost:small
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
arch-arm64arch-x64area-CodeGen-coreclrCLR JIT compiler in src/coreclr/src/jit and related components such as SuperPMICLR JIT compiler in src/coreclr/src/jit and related components such as SuperPMIbugos-linuxLinux OS (any supported distro)Linux OS (any supported distro)