JIT: Support delegate GDV guards in loop cloning (#75140)
authorJakob Botsch Nielsen <Jakob.botsch.nielsen@gmail.com>
Thu, 20 Oct 2022 09:20:40 +0000 (11:20 +0200)
committerGitHub <noreply@github.com>
Thu, 20 Oct 2022 09:20:40 +0000 (11:20 +0200)
commit17d613e49190db4d68181e045626fe7c63488c7f
tree37ee3b9b303464c7ee2cf777e021f756b27adf8b
parent12f9f91031224a45c146812a7f4a41e8cdb87e1c
JIT: Support delegate GDV guards in loop cloning (#75140)

Add support for cloning loops based on delegate GDV guards. Mark delegate address loads as invariant to allow VN and CSE of them.

Remove exceptions on indirs in guards after loop cloning, which otherwise prevents RBO from optimizing them away if the loop is inside an EH handler (e.g. foreach loop).
src/coreclr/jit/compiler.h
src/coreclr/jit/indirectcalltransformer.cpp
src/coreclr/jit/jitconfigvalues.h
src/coreclr/jit/loopcloning.cpp
src/coreclr/jit/loopcloning.h
src/coreclr/jit/loopcloningopts.h