JIT: Give up on the tail call if there are unexpected blocks after it (#50806)
authorEgor Bogatov <egorbo@gmail.com>
Thu, 15 Apr 2021 01:52:43 +0000 (04:52 +0300)
committerGitHub <noreply@github.com>
Thu, 15 Apr 2021 01:52:43 +0000 (18:52 -0700)
commit40a4cb663ee45d885bd5fa59d19d5d11750cf47f
treeb6808ceb78644673259eea8b1ce5e3bd89ded3f6
parent0cf4f158b88eb1c09a182610e06b169c68b3b4d9
JIT: Give up on the tail call if there are unexpected blocks after it (#50806)

Inlinee guarded devirtualization candidates that are also tail call
candidates can share the return temp with the parent inline.

Blocks containing only GT_NOP or only GT_PHI are empty.

Co-authored-by: Andy Ayers <andya@microsoft.com>
src/coreclr/jit/block.cpp
src/coreclr/jit/fginline.cpp
src/coreclr/jit/importer.cpp
src/coreclr/jit/indirectcalltransformer.cpp
src/coreclr/jit/morph.cpp
src/tests/JIT/opt/Devirtualization/GitHub_50492.cs [new file with mode: 0644]
src/tests/JIT/opt/Devirtualization/GitHub_50492.csproj [new file with mode: 0644]