Optimized LLVM IR (#16448)
LLVM JIT: dump IR after optimizations
```csharp
[MethodImpl(MethodImplOptions.NoInlining)]
static int Test(int a, int b, int c) => a * b + a * c;
```
`MONO_VERBOSE_METHOD="Test"` now prints both unoptimized and optimized IR:
```llvm
*** Unoptimized LLVM IR for P:Test ***
; Function Attrs: noinline uwtable
define monocc i32 @"P:Test (int,int,int)"(i32 %arg_a, i32 %arg_b, i32 %arg_c) #0 {
BB0:
br label %BB3
BB3: ; preds = %BB0
br label %BB2
BB2: ; preds = %BB3
%t22 = mul i32 %arg_a, %arg_b
%t25 = mul i32 %arg_a, %arg_c
%t27 = add i32 %t22, %t25
br label %BB1
BB1: ; preds = %BB2
ret i32 %t27
}
***
*** Optimized LLVM IR for P:Test ***
; Function Attrs: noinline uwtable
define monocc i32 @"P:Test (int,int,int)"(i32 %arg_a, i32 %arg_b, i32 %arg_c) #0 {
BB0:
%t251 = add i32 %arg_b, %arg_c
%t27 = mul i32 %t251, %arg_a
ret i32 %t27
}
***
```