From b0d2edff27655decef325f7c04bfbedf9190b74c Mon Sep 17 00:00:00 2001 From: Zoltan Varga Date: Sat, 1 Jun 2019 01:33:57 -0400 Subject: [PATCH] [arm64] Set a llvm target layout. Assert in llvm if the target layout is not set, the defaults used by 'opt' are not correct. (#14714) * [arm64] Set a llvm target layout. Assert in llvm if the target layout is not set, the defaults used by 'opt' are not correct. * Add a llvm target layout for amd64. --- mono/mini/mini-amd64.h | 1 + mono/mini/mini-arm64.h | 1 + mono/mini/mini-llvm.c | 2 ++ 3 files changed, 4 insertions(+) diff --git a/mono/mini/mini-amd64.h b/mono/mini/mini-amd64.h index cc950be4bf0..d020c16c971 100644 --- a/mono/mini/mini-amd64.h +++ b/mono/mini/mini-amd64.h @@ -460,6 +460,7 @@ typedef struct { #define MONO_ARCH_HAVE_OP_GENERIC_CLASS_INIT 1 #define MONO_ARCH_HAVE_GENERAL_RGCTX_LAZY_FETCH_TRAMPOLINE 1 #define MONO_ARCH_FLOAT32_SUPPORTED 1 +#define MONO_ARCH_LLVM_TARGET_LAYOUT "e-i64:64-i128:128-n8:16:32:64-S128" #define MONO_ARCH_HAVE_INTERP_PINVOKE_TRAMP #define MONO_ARCH_HAVE_INTERP_ENTRY_TRAMPOLINE 1 diff --git a/mono/mini/mini-arm64.h b/mono/mini/mini-arm64.h index 5447812249a..c1522a5a7f3 100644 --- a/mono/mini/mini-arm64.h +++ b/mono/mini/mini-arm64.h @@ -167,6 +167,7 @@ typedef struct { #define MONO_ARCH_HAVE_DECOMPOSE_LONG_OPTS 1 #define MONO_ARCH_FLOAT32_SUPPORTED 1 #define MONO_ARCH_HAVE_INTERP_PINVOKE_TRAMP 1 +#define MONO_ARCH_LLVM_TARGET_LAYOUT "e-i64:64-i128:128-n32:64-S128" // Does the ABI have a volatile non-parameter register, so tailcall // can pass context to generics or interfaces? diff --git a/mono/mini/mini-llvm.c b/mono/mini/mini-llvm.c index 3fd77c13fa2..8d6093838c0 100644 --- a/mono/mini/mini-llvm.c +++ b/mono/mini/mini-llvm.c @@ -8898,6 +8898,8 @@ mono_llvm_create_aot_module (MonoAssembly *assembly, const char *global_prefix, #ifdef MONO_ARCH_LLVM_TARGET_LAYOUT LLVMSetDataLayout (module->lmodule, MONO_ARCH_LLVM_TARGET_LAYOUT); +#else + g_assert_not_reached (); #endif #ifdef MONO_ARCH_LLVM_TARGET_TRIPLE -- 2.11.4.GIT