[llvm] Use a different inline limit (30) for llvm+aot.
authorZoltan Varga <vargaz@gmail.com>
Wed, 21 Aug 2019 16:20:50 +0000 (12:20 -0400)
committerZoltan Varga <vargaz@gmail.com>
Wed, 21 Aug 2019 16:20:50 +0000 (12:20 -0400)
Commit migrated from https://github.com/mono/mono/commit/433b9a7f70231bcdfe4bb2d9ef08a240f92090eb

src/mono/mono/mini/method-to-ir.c

index c66e36e..bb376f7 100644 (file)
@@ -90,6 +90,8 @@
 #define CALL_COST 10
 /* Used for the JIT */
 #define INLINE_LENGTH_LIMIT 20
+/* Used by LLVM AOT */
+#define LLVM_AOT_INLINE_LENGTH_LIMIT 30
 /* Used to LLVM JIT */
 #define LLVM_JIT_INLINE_LENGTH_LIMIT 100
 
@@ -3769,7 +3771,7 @@ method_does_not_return (MonoMethod *method)
                !method->is_inflated;
 }
 
-static int inline_limit, llvm_jit_inline_limit;
+static int inline_limit, llvm_jit_inline_limit, llvm_aot_inline_limit;
 static gboolean inline_limit_inited;
 
 static gboolean
@@ -3812,18 +3814,31 @@ mono_method_check_inlining (MonoCompile *cfg, MonoMethod *method)
                if ((inlinelimit = g_getenv ("MONO_INLINELIMIT"))) {
                        inline_limit = atoi (inlinelimit);
                        llvm_jit_inline_limit = inline_limit;
+                       llvm_aot_inline_limit = inline_limit;
                        g_free (inlinelimit);
                } else {
                        inline_limit = INLINE_LENGTH_LIMIT;
                        llvm_jit_inline_limit = LLVM_JIT_INLINE_LENGTH_LIMIT;
+                       llvm_aot_inline_limit = LLVM_AOT_INLINE_LENGTH_LIMIT;
                }
                inline_limit_inited = TRUE;
        }
 
+#ifdef ENABLE_NETCORE
+       if (COMPILE_LLVM (cfg)) {
+               if (cfg->compile_aot)
+                       limit = llvm_aot_inline_limit;
+               else
+                       limit = llvm_jit_inline_limit;
+       } else {
+               limit = inline_limit;
+       }
+#else
        if (COMPILE_LLVM (cfg) && !cfg->compile_aot)
                limit = llvm_jit_inline_limit;
        else
                limit = inline_limit;
+#endif
        if (header.code_size >= limit && !(method->iflags & METHOD_IMPL_ATTRIBUTE_AGGRESSIVE_INLINING))
                return FALSE;