From 601afeacd00b6a5140b62d2b33dfd847a8647145 Mon Sep 17 00:00:00 2001 From: Zoltan Varga Date: Wed, 21 Aug 2019 12:20:50 -0400 Subject: [PATCH] [llvm] Use a different inline limit (30) for llvm+aot. Commit migrated from https://github.com/mono/mono/commit/433b9a7f70231bcdfe4bb2d9ef08a240f92090eb --- src/mono/mono/mini/method-to-ir.c | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/src/mono/mono/mini/method-to-ir.c b/src/mono/mono/mini/method-to-ir.c index c66e36e..bb376f7 100644 --- a/src/mono/mono/mini/method-to-ir.c +++ b/src/mono/mono/mini/method-to-ir.c @@ -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; -- 2.7.4