forked from pool/mono-core
67e86708af
Update to version 5.4.1.6 OBS-URL: https://build.opensuse.org/request/show/541013 OBS-URL: https://build.opensuse.org/package/show/Mono:Factory/mono-core?expand=0&rev=191
96 lines
3.0 KiB
Diff
96 lines
3.0 KiB
Diff
diff -uprN mono-5.4.1.6.old/external/api-snapshot/profiles/net_4_x/PEAPI.cs mono-5.4.1.6/external/api-snapshot/profiles/net_4_x/PEAPI.cs
|
|
--- mono-5.4.1.6.old/external/api-snapshot/profiles/net_4_x/PEAPI.cs 2017-11-08 18:52:46.000000000 +0300
|
|
+++ mono-5.4.1.6/external/api-snapshot/profiles/net_4_x/PEAPI.cs 2017-11-12 04:07:23.979579610 +0300
|
|
@@ -473,6 +473,7 @@ namespace PEAPI
|
|
}
|
|
public enum ImplAttr
|
|
{
|
|
+ AggressiveInlining = 256,
|
|
ForwardRef = 16,
|
|
IL = 0,
|
|
InternalCall = 4096,
|
|
diff -uprN mono-5.4.1.6.old/mono/mini/iltests.il mono-5.4.1.6/mono/mini/iltests.il
|
|
--- mono-5.4.1.6.old/mono/mini/iltests.il 2017-11-08 18:51:09.000000000 +0300
|
|
+++ mono-5.4.1.6/mono/mini/iltests.il 2017-11-12 04:07:23.979579610 +0300
|
|
@@ -2897,6 +2897,52 @@ END:
|
|
ret
|
|
}
|
|
|
|
+ .method private hidebysig static void fail_inline() cil managed
|
|
+ {
|
|
+ // Code size 9 (0x9)
|
|
+ .maxstack 8
|
|
+ IL_0000: ldc.i4.s 16
|
|
+ IL_0002: conv.u
|
|
+ IL_0003: ldc.i4.1
|
|
+ IL_0004: mul.ovf.un
|
|
+ IL_0005: localloc
|
|
+ IL_0007: pop
|
|
+ IL_0008: ret
|
|
+ }
|
|
+
|
|
+ .method private hidebysig static int32
|
|
+ always_inline(int32 op) cil managed aggressiveinlining
|
|
+ {
|
|
+ // Code size 24 (0x18)
|
|
+ .maxstack 8
|
|
+ IL_0000: ldarg.0
|
|
+ IL_0001: brfalse.s IL_0009
|
|
+
|
|
+ IL_0003: ldarg.0
|
|
+ IL_0004: ldc.i4.2
|
|
+ IL_0005: beq.s IL_000b
|
|
+
|
|
+ IL_0007: br.s IL_000d
|
|
+
|
|
+ IL_0009: ldc.i4.0
|
|
+ IL_000a: ret
|
|
+
|
|
+ IL_000b: ldc.i4.3
|
|
+ IL_000c: ret
|
|
+
|
|
+ IL_000d: call void Tests::fail_inline()
|
|
+ IL_0012: newobj instance void [mscorlib]System.Exception::.ctor()
|
|
+ IL_0017: throw
|
|
+ }
|
|
+
|
|
+ .method public hidebysig static int32 test_3_regress_59608() cil managed
|
|
+ {
|
|
+ .maxstack 8
|
|
+ IL_0000: ldc.i4.2
|
|
+ IL_0001: call int32 Tests::always_inline(int32)
|
|
+ IL_000c: ret
|
|
+ }
|
|
+
|
|
.method public static bool llvm_regress_59436 () {
|
|
// Code size 41 (0x29)
|
|
.maxstack 3
|
|
diff -uprN mono-5.4.1.6.old/mono/mini/method-to-ir.c mono-5.4.1.6/mono/mini/method-to-ir.c
|
|
--- mono-5.4.1.6.old/mono/mini/method-to-ir.c 2017-11-08 18:51:09.000000000 +0300
|
|
+++ mono-5.4.1.6/mono/mini/method-to-ir.c 2017-11-12 04:07:23.983579610 +0300
|
|
@@ -6156,9 +6156,7 @@ inline_method (MonoCompile *cfg, MonoMet
|
|
prev_args = cfg->args;
|
|
prev_arg_types = cfg->arg_types;
|
|
prev_inlined_method = cfg->inlined_method;
|
|
- cfg->inlined_method = cmethod;
|
|
- cfg->ret_var_set = FALSE;
|
|
- cfg->inline_depth ++;
|
|
+ prev_ret_var_set = cfg->ret_var_set;
|
|
prev_real_offset = cfg->real_offset;
|
|
prev_cbb_hash = cfg->cbb_hash;
|
|
prev_cil_offset_to_bb = cfg->cil_offset_to_bb;
|
|
@@ -6168,9 +6166,12 @@ inline_method (MonoCompile *cfg, MonoMet
|
|
prev_cbb = cfg->cbb;
|
|
prev_current_method = cfg->current_method;
|
|
prev_generic_context = cfg->generic_context;
|
|
- prev_ret_var_set = cfg->ret_var_set;
|
|
prev_disable_inline = cfg->disable_inline;
|
|
|
|
+ cfg->inlined_method = cmethod;
|
|
+ cfg->ret_var_set = FALSE;
|
|
+ cfg->inline_depth ++;
|
|
+
|
|
if (ip && *ip == CEE_CALLVIRT && !(cmethod->flags & METHOD_ATTRIBUTE_STATIC))
|
|
virtual_ = TRUE;
|
|
|