I am developing a compiler that emits IL code. It is important that the resulting IL is JIT’ted to the fastest possible machine codes by Mono and Microsoft .NET JIT compilers.
My questions are:
- Does it make sense to optimize patterns like:
`stloc.0; ldloc.0; ret` => `ret` `ldc.i4.0; conv.r8` => 'ldc.r8.0'
and such, or are the JIT’s smart enough to take care of these?
Is there a specification with the list of optimizations performed by Microsoft/Mono JIT compilers?
Is there any good read with practical recommendations / best practices to optimize IL so that JIT compilers can in turn generate the most optimal machine code (performance-wise)?