JIT: only tail recursive calls become loops (dotnet/coreclr#27079)
Importer was a bit too liberal marking recursive calls as loop-inducing, at
least from the standpoint of enforcing backward-branch constraints. This would
sometimes lead us to inline into cold paths like throws. Only tail-recursive
calls will turn into loops.
Also, future-proof the propagation of simple loopness the root compiler, in
case we ever decide to enable inlining at Tier0.
Commit migrated from https://github.com/dotnet/coreclr/commit/
6b13065e7ac88671795a01577e017ff7cdc26f35