[ORC] Use JITLink as the default linker for LLJIT on Linux/arm64.
authorLang Hames <lhames@gmail.com>
Sun, 5 Feb 2023 03:36:40 +0000 (03:36 +0000)
committerLang Hames <lhames@gmail.com>
Sun, 5 Feb 2023 05:09:26 +0000 (05:09 +0000)
Also updates the OrcCAPIsTest unit test to enable the C API tests on Linux.

llvm/lib/ExecutionEngine/Orc/LLJIT.cpp
llvm/unittests/ExecutionEngine/Orc/CMakeLists.txt

index bc84988..a9cc668 100644 (file)
@@ -715,11 +715,22 @@ Error LLJITBuilderState::prepareForConstruction() {
   // JIT linker.
   if (!CreateObjectLinkingLayer) {
     auto &TT = JTMB->getTargetTriple();
-    if (TT.getArch() == Triple::riscv64 ||
-        TT.getArch() == Triple::loongarch64 ||
-        (TT.isOSBinFormatMachO() &&
-         (TT.getArch() == Triple::aarch64 || TT.getArch() == Triple::x86_64))) {
-
+    bool UseJITLink = false;
+    switch (TT.getArch()) {
+    case Triple::riscv64:
+    case Triple::loongarch64:
+      UseJITLink = true;
+      break;
+    case Triple::aarch64:
+      UseJITLink = !TT.isOSBinFormatCOFF();
+      break;
+    case Triple::x86_64:
+      UseJITLink = TT.isOSBinFormatMachO();
+      break;
+    default:
+      break;
+    }
+    if (UseJITLink) {
       JTMB->setRelocationModel(Reloc::PIC_);
       JTMB->setCodeModel(CodeModel::Small);
       CreateObjectLinkingLayer =
index 41c297b..7df4213 100644 (file)
@@ -46,3 +46,5 @@ target_link_libraries(OrcJITTests PRIVATE
                         ${ORC_JIT_TEST_LIBS})
 
 set_property(TARGET OrcJITTests PROPERTY FOLDER "Tests/UnitTests/ExecutionTests")
+
+export_executable_symbols(OrcJITTests)