We frequently miss addressing mode opportunities in the JIT. Some examples I know of off-hand:
Frequently the problem seems like a simple one: we end up with an intervening single-def single-used LCL_VAR that we could get rid of by some form of forward substitution.
We could also consider a more advanced address mode formation pass that utilizes SSA or VN during the opts phases.
We frequently miss addressing mode opportunities in the JIT. Some examples I know of off-hand:
leacommand #67187GetArrayDataReferenceinVector*#104532 (comment)Unsafe.AsinBitConverter#112616 (comment)Frequently the problem seems like a simple one: we end up with an intervening single-def single-used
LCL_VARthat we could get rid of by some form of forward substitution.We could also consider a more advanced address mode formation pass that utilizes SSA or VN during the opts phases.