Fix compFastTailCalls check. (#35596)
authorEugene Rozenfeld <erozen@microsoft.com>
Thu, 30 Apr 2020 07:22:19 +0000 (00:22 -0700)
committerGitHub <noreply@github.com>
Thu, 30 Apr 2020 07:22:19 +0000 (00:22 -0700)
commit4becc7585148277c041bed2e1099744f7172df21
tree0b776d3ad45404d7a500fb288c38c622a869e3c7
parenta5b59746860b18452dea8b22d69ffd8390cd8a5f
Fix compFastTailCalls check. (#35596)

compFastTailCalls is true if COMPlus_FastTailCalls is not 0.
It was introduced in #341 to help with testing:
setting COMPlus_FastTailCalls to 0 forces all tail-prefixed
calls to be dispatched via helpers.

This fixes a subtle bug with checking compFastTailCalls:
it needs to be checked after `fgInitargInfo` has been called in
`fgCanFastTailCall`. `fgInitArgInfo` adds the stub address for VSD calls
and `fgMorphTailCallViaHelpers` then removes it.

This change also factors out the logic for checking whether the call
has byref parameters that must be copied by the caller.
src/coreclr/src/jit/compiler.h
src/coreclr/src/jit/morph.cpp