Skip to content

[*nix|arm64] [FastTailCall] noway_assert(callerArgNum < comp->info.compArgsCount); in LowerFastTailCall #8413

@jashook

Description

@jashook

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

Metadata

Metadata

Assignees

Labels

arch-arm64arch-x64area-CodeGen-coreclrCLR JIT compiler in src/coreclr/src/jit and related components such as SuperPMIbugos-linuxLinux OS (any supported distro)

Type

No type

Projects

No projects

Relationships

None yet

Development

No branches or pull requests

Issue actions