From ba2bdc98762a0105976abd556539cdd6dbe6edb5 Mon Sep 17 00:00:00 2001 From: Radek Doulik Date: Mon, 2 Sep 2024 13:43:59 +0200 Subject: [PATCH 1/3] Set unwind table kind To stop hitting assert in the verbose output, when aot compiler is built with the debug configuration of llvm --- src/mono/mono/mini/mini-llvm-cpp.cpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/mono/mono/mini/mini-llvm-cpp.cpp b/src/mono/mono/mini/mini-llvm-cpp.cpp index e15619703e511..3e7a6c8bc5258 100644 --- a/src/mono/mono/mini/mini-llvm-cpp.cpp +++ b/src/mono/mono/mini/mini-llvm-cpp.cpp @@ -484,6 +484,8 @@ void mono_llvm_add_func_attr (LLVMValueRef func, AttrKind kind) { unwrap (func)->addFnAttr (convert_attr (kind)); + if (kind == LLVM_ATTR_UW_TABLE) + unwrap (func)->setUWTableKind (UWTableKind::Async); } void From 9b5b4abffdf814d273db8cac220e923afc808ddd Mon Sep 17 00:00:00 2001 From: Radek Doulik Date: Wed, 11 Sep 2024 17:04:16 +0200 Subject: [PATCH 2/3] Set synchronous uw table kind on arm64 --- src/mono/mono/mini/mini-llvm-cpp.cpp | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/mono/mono/mini/mini-llvm-cpp.cpp b/src/mono/mono/mini/mini-llvm-cpp.cpp index 3e7a6c8bc5258..275dff478f3c2 100644 --- a/src/mono/mono/mini/mini-llvm-cpp.cpp +++ b/src/mono/mono/mini/mini-llvm-cpp.cpp @@ -485,7 +485,11 @@ mono_llvm_add_func_attr (LLVMValueRef func, AttrKind kind) { unwrap (func)->addFnAttr (convert_attr (kind)); if (kind == LLVM_ATTR_UW_TABLE) +#ifdef TARGET_ARM64 + unwrap (func)->setUWTableKind (UWTableKind::Sync); +#else unwrap (func)->setUWTableKind (UWTableKind::Async); +#endif } void From 952e0b85ff1b19f76a5eb6f50a4348a94c257be6 Mon Sep 17 00:00:00 2001 From: Radek Doulik Date: Wed, 18 Sep 2024 14:37:47 +0200 Subject: [PATCH 3/3] Feedback --- src/mono/mono/mini/mini-llvm-cpp.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/mono/mono/mini/mini-llvm-cpp.cpp b/src/mono/mono/mini/mini-llvm-cpp.cpp index 275dff478f3c2..8c7b173fa4065 100644 --- a/src/mono/mono/mini/mini-llvm-cpp.cpp +++ b/src/mono/mono/mini/mini-llvm-cpp.cpp @@ -485,7 +485,7 @@ mono_llvm_add_func_attr (LLVMValueRef func, AttrKind kind) { unwrap (func)->addFnAttr (convert_attr (kind)); if (kind == LLVM_ATTR_UW_TABLE) -#ifdef TARGET_ARM64 +#if defined(TARGET_ARM64) && defined(TARGET_MACH) unwrap (func)->setUWTableKind (UWTableKind::Sync); #else unwrap (func)->setUWTableKind (UWTableKind::Async);