[llvm] 3f9ca80 - [ORC] Move Mangler functions into header. (#224209)

via llvm-commits llvm-commits at lists.llvm.org
Thu Sep 17 02:11:22 PDT 2026


Author: Lang Hames
Date: 2026-09-17T19:11:16+10:00
New Revision: 3f9ca800da7b22e3fcc37eeb89af0bd116959d0e

URL: https://github.com/llvm/llvm-project/commit/3f9ca800da7b22e3fcc37eeb89af0bd116959d0e
DIFF: https://github.com/llvm/llvm-project/commit/3f9ca800da7b22e3fcc37eeb89af0bd116959d0e.diff

LOG: [ORC] Move Mangler functions into header. (#224209)

Move Mangler functions into Mangler.h so that they can be used from
OrcTargetProcess without introducing a dependence on OrcJIT.

This is a temporary fix to enable use of SymbolNameSpec in
OrcTargetProcess (see https://github.com/llvm/llvm-project/pull/224188).
Future work will reorganize these libraries and should allow this code
to sink back down into a .cpp file.

Added: 
    

Modified: 
    llvm/include/llvm/ExecutionEngine/Orc/Shared/Mangler.h
    llvm/lib/ExecutionEngine/Orc/CMakeLists.txt

Removed: 
    llvm/lib/ExecutionEngine/Orc/Mangler.cpp


################################################################################
diff  --git a/llvm/include/llvm/ExecutionEngine/Orc/Shared/Mangler.h b/llvm/include/llvm/ExecutionEngine/Orc/Shared/Mangler.h
index e9a2f268fbaff..142fa29900f8a 100644
--- a/llvm/include/llvm/ExecutionEngine/Orc/Shared/Mangler.h
+++ b/llvm/include/llvm/ExecutionEngine/Orc/Shared/Mangler.h
@@ -14,9 +14,12 @@
 #define LLVM_EXECUTIONENGINE_ORC_SHARED_MANGLER_H
 
 #include "llvm/ADT/SmallString.h"
+#include "llvm/ADT/StringExtras.h"
 #include "llvm/ADT/StringRef.h"
 #include "llvm/ExecutionEngine/Orc/Shared/SymbolNameSpec.h"
 #include "llvm/Support/Compiler.h"
+#include "llvm/Support/ErrorHandling.h"
+#include "llvm/TargetParser/Triple.h"
 
 namespace llvm {
 
@@ -75,8 +78,45 @@ class Mangler {
   }
 
 private:
-  LLVM_ABI static Mode fromDataLayoutStr(StringRef DLStr);
-  LLVM_ABI static Mode fromTriple(const Triple &TT, StringRef ABIName);
+  // TODO: Sink this back into a .cpp file once OrcJIT and OrcSupport have
+  //       been reorganized.
+  static Mode fromDataLayoutStr(StringRef DLStr) {
+
+    for (StringRef Spec : split(DLStr, '-')) {
+      if (!Spec.starts_with("m:"))
+        continue;
+      auto ModeStr = Spec.drop_front(2);
+      assert(ModeStr.size() == 1 &&
+             "invalid data layout string from Triple::computeDataLayout");
+      switch (ModeStr[0]) {
+      case 'e':
+        return Mode::ELF;
+      case 'l':
+        return Mode::GOFF;
+      case 'o':
+        return Mode::MachO;
+      case 'm':
+        return Mode::Mips;
+      case 'w':
+        return Mode::WinCOFF;
+      case 'x':
+        return Mode::WinCOFFX86;
+      case 'a':
+        return Mode::XCOFF;
+      default:
+        llvm_unreachable(
+            "Invalid mangling mode from Triple::computeDataLayout");
+      }
+    }
+    return Mode::None;
+  }
+
+  // TODO: Sink this back into a .cpp file once OrcJIT and OrcSupport have
+  //       been reorganized.
+  static Mode fromTriple(const Triple &TT, StringRef ABIName) {
+    return fromDataLayoutStr(TT.computeDataLayout(ABIName));
+  }
+
   bool doNotMangleLeadingQuestionMark() const {
     return MM == Mode::WinCOFF || MM == Mode::WinCOFFX86;
   }

diff  --git a/llvm/lib/ExecutionEngine/Orc/CMakeLists.txt b/llvm/lib/ExecutionEngine/Orc/CMakeLists.txt
index 06c01f26f194d..11604d94fba34 100644
--- a/llvm/lib/ExecutionEngine/Orc/CMakeLists.txt
+++ b/llvm/lib/ExecutionEngine/Orc/CMakeLists.txt
@@ -47,7 +47,6 @@ add_llvm_component_library(LLVMOrcJIT
   LLJIT.cpp
   MachO.cpp
   MachOPlatform.cpp
-  Mangler.cpp
   MapperJITLinkMemoryManager.cpp
   MemoryMapper.cpp
   ELFNixPlatform.cpp

diff  --git a/llvm/lib/ExecutionEngine/Orc/Mangler.cpp b/llvm/lib/ExecutionEngine/Orc/Mangler.cpp
deleted file mode 100644
index 824b3d7053ddd..0000000000000
--- a/llvm/lib/ExecutionEngine/Orc/Mangler.cpp
+++ /dev/null
@@ -1,53 +0,0 @@
-//===------------- Mangler.cpp -- Linker name mangling for ORC ------------===//
-//
-// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
-// See https://llvm.org/LICENSE.txt for license information.
-// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
-//
-//===----------------------------------------------------------------------===//
-
-#include "llvm/ExecutionEngine/Orc/Shared/Mangler.h"
-#include "llvm/ADT/StringExtras.h"
-#include "llvm/Support/ErrorHandling.h"
-#include "llvm/TargetParser/Triple.h"
-
-#include <cassert>
-
-#define DEBUG_TYPE "orc"
-
-namespace llvm::orc {
-
-Mangler::Mode Mangler::fromDataLayoutStr(StringRef DLStr) {
-  for (StringRef Spec : split(DLStr, '-')) {
-    if (!Spec.starts_with("m:"))
-      continue;
-    auto ModeStr = Spec.drop_front(2);
-    assert(ModeStr.size() == 1 &&
-           "invalid data layout string from Triple::computeDataLayout");
-    switch (ModeStr[0]) {
-    case 'e':
-      return Mode::ELF;
-    case 'l':
-      return Mode::GOFF;
-    case 'o':
-      return Mode::MachO;
-    case 'm':
-      return Mode::Mips;
-    case 'w':
-      return Mode::WinCOFF;
-    case 'x':
-      return Mode::WinCOFFX86;
-    case 'a':
-      return Mode::XCOFF;
-    default:
-      llvm_unreachable("Invalid mangling mode from Triple::computeDataLayout");
-    }
-  }
-  return Mode::None;
-}
-
-Mangler::Mode Mangler::fromTriple(const Triple &TT, StringRef ABIName) {
-  return fromDataLayoutStr(TT.computeDataLayout(ABIName));
-}
-
-} // namespace llvm::orc


        


More information about the llvm-commits mailing list