From a91f9b8454c18564967fdb4c720e3465419c86c5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Stefan=20Gr=C3=A4nitz?= Date: Wed, 29 Nov 2023 23:22:22 +0100 Subject: [PATCH 1/8] [llvm-c] Expose debug support for LLJIT in Orc bindings --- llvm/include/llvm-c/LLJIT.h | 6 ++ .../Orc/Debugging/DebuggerSupport.cpp | 2 +- .../ExecutionEngine/Orc/OrcV2CBindings.cpp | 5 ++ .../ExecutionEngine/Orc/CMakeLists.txt | 1 + .../ExecutionEngine/Orc/OrcCAPITest.cpp | 64 +++++++++++++++++++ 5 files changed, 77 insertions(+), 1 deletion(-) diff --git a/llvm/include/llvm-c/LLJIT.h b/llvm/include/llvm-c/LLJIT.h index a06133aac4fb0..88a2261aacd66 100644 --- a/llvm/include/llvm-c/LLJIT.h +++ b/llvm/include/llvm-c/LLJIT.h @@ -242,6 +242,12 @@ LLVMOrcIRTransformLayerRef LLVMOrcLLJITGetIRTransformLayer(LLVMOrcLLJITRef J); */ const char *LLVMOrcLLJITGetDataLayoutStr(LLVMOrcLLJITRef J); +/** + * Install the plugin that submits debug objects to the executor. Executors must + * expose the llvm_orc_registerJITLoaderGDBWrapper symbol. + */ +LLVMErrorRef LLVMOrcLLJITEnableDebugSupport(LLVMOrcLLJITRef J); + /** * @} */ diff --git a/llvm/lib/ExecutionEngine/Orc/Debugging/DebuggerSupport.cpp b/llvm/lib/ExecutionEngine/Orc/Debugging/DebuggerSupport.cpp index 9ba6dd90f50de..1668473c0eb47 100644 --- a/llvm/lib/ExecutionEngine/Orc/Debugging/DebuggerSupport.cpp +++ b/llvm/lib/ExecutionEngine/Orc/Debugging/DebuggerSupport.cpp @@ -39,7 +39,7 @@ Error enableDebuggerSupport(LLJIT &J) { if (!Registrar) return Registrar.takeError(); ObjLinkingLayer->addPlugin(std::make_unique( - ES, std::move(*Registrar), true, true)); + ES, std::move(*Registrar), false, true)); return Error::success(); } case Triple::MachO: { diff --git a/llvm/lib/ExecutionEngine/Orc/OrcV2CBindings.cpp b/llvm/lib/ExecutionEngine/Orc/OrcV2CBindings.cpp index 72314cceedf33..698cb3241cb3d 100644 --- a/llvm/lib/ExecutionEngine/Orc/OrcV2CBindings.cpp +++ b/llvm/lib/ExecutionEngine/Orc/OrcV2CBindings.cpp @@ -11,6 +11,7 @@ #include "llvm-c/OrcEE.h" #include "llvm-c/TargetMachine.h" +#include "llvm/ExecutionEngine/Orc/Debugging/DebuggerSupport.h" #include "llvm/ExecutionEngine/Orc/JITTargetMachineBuilder.h" #include "llvm/ExecutionEngine/Orc/LLJIT.h" #include "llvm/ExecutionEngine/Orc/ObjectTransformLayer.h" @@ -1179,3 +1180,7 @@ void LLVMOrcDisposeLazyCallThroughManager( LLVMOrcLazyCallThroughManagerRef LCM) { std::unique_ptr TmpLCM(unwrap(LCM)); } + +LLVMErrorRef LLVMOrcLLJITEnableDebugSupport(LLVMOrcLLJITRef J) { + return wrap(llvm::orc::enableDebuggerSupport(*unwrap(J))); +} diff --git a/llvm/unittests/ExecutionEngine/Orc/CMakeLists.txt b/llvm/unittests/ExecutionEngine/Orc/CMakeLists.txt index 37768e91fd447..f102ba59e3754 100644 --- a/llvm/unittests/ExecutionEngine/Orc/CMakeLists.txt +++ b/llvm/unittests/ExecutionEngine/Orc/CMakeLists.txt @@ -5,6 +5,7 @@ set(LLVM_LINK_COMPONENTS IRReader JITLink Object + OrcDebugging OrcJIT OrcShared OrcTargetProcess diff --git a/llvm/unittests/ExecutionEngine/Orc/OrcCAPITest.cpp b/llvm/unittests/ExecutionEngine/Orc/OrcCAPITest.cpp index cbdd4af47e1d4..7b3be6532944e 100644 --- a/llvm/unittests/ExecutionEngine/Orc/OrcCAPITest.cpp +++ b/llvm/unittests/ExecutionEngine/Orc/OrcCAPITest.cpp @@ -494,6 +494,70 @@ TEST_F(OrcCAPITestBase, AddObjectBuffer) { ASSERT_TRUE(!!SumAddr); } +// This must be kept in sync with gdb/gdb/jit.h . +extern "C" { + +typedef enum { + JIT_NOACTION = 0, + JIT_REGISTER_FN, + JIT_UNREGISTER_FN +} jit_actions_t; + +struct jit_code_entry { + struct jit_code_entry *next_entry; + struct jit_code_entry *prev_entry; + const char *symfile_addr; + uint64_t symfile_size; +}; + +struct jit_descriptor { + uint32_t version; + // This should be jit_actions_t, but we want to be specific about the + // bit-width. + uint32_t action_flag; + struct jit_code_entry *relevant_entry; + struct jit_code_entry *first_entry; +}; + +// We put information about the JITed function in this global, which the +// debugger reads. Make sure to specify the version statically, because the +// debugger checks the version before we can set it during runtime. +struct jit_descriptor __jit_debug_descriptor; + +static void *findLastDebugDescriptorEntryPtr() { + struct jit_code_entry *Last = __jit_debug_descriptor.first_entry; + while (Last && Last->next_entry) + Last = Last->next_entry; + return Last; +} +} + +#if defined(_AIX) or (not defined(__ELF__) and not defined(__MACH__)) +TEST_F(OrcCAPITestBase, DISABLED_EnableDebugSupport) { +#else +TEST_F(OrcCAPITestBase, EnableDebugSupport) { +#endif + if (LLVMErrorRef E = LLVMOrcLLJITEnableDebugSupport(Jit)) + FAIL() << "Error testing LLJIT debug support (triple = " << TargetTriple + << "): " << toString(E); + + void *Before = findLastDebugDescriptorEntryPtr(); + LLVMMemoryBufferRef ObjBuffer = createTestObject(SumExample, "sum.ll"); + LLVMOrcObjectLayerRef ObjLayer = LLVMOrcLLJITGetObjLinkingLayer(Jit); + if (LLVMErrorRef E = + LLVMOrcObjectLayerAddObjectFile(ObjLayer, MainDylib, ObjBuffer)) + FAIL() << "Failed to add object file to ObjLinkingLayer (triple = " + << TargetTriple << "): " << toString(E); + + LLVMOrcJITTargetAddress SumAddr; + if (LLVMErrorRef E = LLVMOrcLLJITLookup(Jit, &SumAddr, "sum")) + FAIL() << "Symbol \"sum\" was not added into JIT (triple = " << TargetTriple + << "): " << toString(E); + + void *After = findLastDebugDescriptorEntryPtr(); + ASSERT_NE(Before, After); +} + #if defined(_AIX) TEST_F(OrcCAPITestBase, DISABLED_ExecutionTest) { #else From c6edfcfb3c45532d3285ba583d696e9d4fd8b4d9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Stefan=20Gr=C3=A4nitz?= Date: Wed, 29 Nov 2023 23:51:36 +0100 Subject: [PATCH 2/8] Temporarily disable the test for MachO --- llvm/unittests/ExecutionEngine/Orc/OrcCAPITest.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/llvm/unittests/ExecutionEngine/Orc/OrcCAPITest.cpp b/llvm/unittests/ExecutionEngine/Orc/OrcCAPITest.cpp index 7b3be6532944e..04d41eeb37f1f 100644 --- a/llvm/unittests/ExecutionEngine/Orc/OrcCAPITest.cpp +++ b/llvm/unittests/ExecutionEngine/Orc/OrcCAPITest.cpp @@ -532,7 +532,7 @@ static void *findLastDebugDescriptorEntryPtr() { } } -#if defined(_AIX) or (not defined(__ELF__) and not defined(__MACH__)) +#if defined(_AIX) or not defined(__ELF__) TEST_F(OrcCAPITestBase, DISABLED_EnableDebugSupport) { #else TEST_F(OrcCAPITestBase, EnableDebugSupport) { From 09de0168eb8387eea7f90352b00510a511631737 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Stefan=20Gr=C3=A4nitz?= Date: Fri, 8 Dec 2023 11:36:55 +0100 Subject: [PATCH 3/8] Add example with minimal debug-info and re-enable MachO test --- .../ExecutionEngine/Orc/OrcCAPITest.cpp | 26 ++++++++++++++++--- 1 file changed, 23 insertions(+), 3 deletions(-) diff --git a/llvm/unittests/ExecutionEngine/Orc/OrcCAPITest.cpp b/llvm/unittests/ExecutionEngine/Orc/OrcCAPITest.cpp index 04d41eeb37f1f..836afd97a99e4 100644 --- a/llvm/unittests/ExecutionEngine/Orc/OrcCAPITest.cpp +++ b/llvm/unittests/ExecutionEngine/Orc/OrcCAPITest.cpp @@ -13,6 +13,7 @@ #include "gtest/gtest.h" #include "llvm/ExecutionEngine/Orc/CompileUtils.h" +#include "llvm/ExecutionEngine/Orc/TargetProcess/JITLoaderGDB.h" #include "llvm/IR/LLVMContext.h" #include "llvm/IR/Module.h" #include "llvm/IRReader/IRReader.h" @@ -211,6 +212,20 @@ constexpr StringRef SumExample = } )"; +constexpr StringRef SumDebugExample = + R"( + define i32 @sum(i32 %x, i32 %y) { + entry: + %r = add nsw i32 %x, %y + ret i32 %r + } + !llvm.module.flags = !{!0} + !llvm.dbg.cu = !{!1} + !0 = !{i32 2, !"Debug Info Version", i32 3} + !1 = distinct !DICompileUnit(language: DW_LANG_C99, file: !2, emissionKind: FullDebug) + !2 = !DIFile(filename: "sum.c", directory: "/tmp") + )"; + } // end anonymous namespace. // Consumes the given error ref and returns the string error message. @@ -522,7 +537,7 @@ struct jit_descriptor { // We put information about the JITed function in this global, which the // debugger reads. Make sure to specify the version statically, because the // debugger checks the version before we can set it during runtime. -struct jit_descriptor __jit_debug_descriptor; +extern struct jit_descriptor __jit_debug_descriptor; static void *findLastDebugDescriptorEntryPtr() { struct jit_code_entry *Last = __jit_debug_descriptor.first_entry; @@ -532,9 +547,14 @@ static void *findLastDebugDescriptorEntryPtr() { } } -#if defined(_AIX) or not defined(__ELF__) +#if defined(_AIX) or not(defined(__ELF__) or defined(__MACH__)) TEST_F(OrcCAPITestBase, DISABLED_EnableDebugSupport) { #else +static LLVM_ATTRIBUTE_USED void linkComponents() { + errs() << "Linking in runtime functions\n" + << (void *)&llvm_orc_registerJITLoaderGDBWrapper << '\n' + << (void *)&llvm_orc_registerJITLoaderGDBAllocAction << '\n'; +} TEST_F(OrcCAPITestBase, EnableDebugSupport) { #endif if (LLVMErrorRef E = LLVMOrcLLJITEnableDebugSupport(Jit)) @@ -542,7 +562,7 @@ TEST_F(OrcCAPITestBase, EnableDebugSupport) { << "): " << toString(E); void *Before = findLastDebugDescriptorEntryPtr(); - LLVMMemoryBufferRef ObjBuffer = createTestObject(SumExample, "sum.ll"); + LLVMMemoryBufferRef ObjBuffer = createTestObject(SumDebugExample, "sum.ll"); LLVMOrcObjectLayerRef ObjLayer = LLVMOrcLLJITGetObjLinkingLayer(Jit); if (LLVMErrorRef E = LLVMOrcObjectLayerAddObjectFile(ObjLayer, MainDylib, ObjBuffer)) From 8c94494ba6f4c0cb6e112702a14339d84d6ebfa4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Stefan=20Gr=C3=A4nitz?= Date: Mon, 11 Dec 2023 10:47:40 +0100 Subject: [PATCH 4/8] Declare in new C-API header and implement in libLLVMOrcDebugging --- llvm/include/llvm-c/LLJIT.h | 6 -- llvm/include/llvm-c/LLJITUtils.h | 57 +++++++++++++++++++ .../Orc/Debugging/CMakeLists.txt | 1 + .../Orc/Debugging/LLJITUtilsCBindings.cpp | 22 +++++++ .../ExecutionEngine/Orc/OrcCAPITest.cpp | 1 + 5 files changed, 81 insertions(+), 6 deletions(-) create mode 100644 llvm/include/llvm-c/LLJITUtils.h create mode 100644 llvm/lib/ExecutionEngine/Orc/Debugging/LLJITUtilsCBindings.cpp diff --git a/llvm/include/llvm-c/LLJIT.h b/llvm/include/llvm-c/LLJIT.h index 88a2261aacd66..a06133aac4fb0 100644 --- a/llvm/include/llvm-c/LLJIT.h +++ b/llvm/include/llvm-c/LLJIT.h @@ -242,12 +242,6 @@ LLVMOrcIRTransformLayerRef LLVMOrcLLJITGetIRTransformLayer(LLVMOrcLLJITRef J); */ const char *LLVMOrcLLJITGetDataLayoutStr(LLVMOrcLLJITRef J); -/** - * Install the plugin that submits debug objects to the executor. Executors must - * expose the llvm_orc_registerJITLoaderGDBWrapper symbol. - */ -LLVMErrorRef LLVMOrcLLJITEnableDebugSupport(LLVMOrcLLJITRef J); - /** * @} */ diff --git a/llvm/include/llvm-c/LLJITUtils.h b/llvm/include/llvm-c/LLJITUtils.h new file mode 100644 index 0000000000000..6c400173f0920 --- /dev/null +++ b/llvm/include/llvm-c/LLJITUtils.h @@ -0,0 +1,57 @@ +/*===--- llvm-c/LLJITUtils.h - OrcV2 LLJIT Utilities C bindings -*- C++ -*-===*\ +|* *| +|* 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 *| +|* *| +|*===----------------------------------------------------------------------===*| +|* *| +|* This header declares the C interface for extra utilities to be used with *| +|* the LLJIT class from the llvm-c/LLJIT.h header. It requires to following *| +|* link libraries in addition to libLLVMOrcJIT.a: *| +|* - libLLVMOrcDebugging.a *| +|* *| +|* Many exotic languages can interoperate with C code but have a harder time *| +|* with C++ due to name mangling. So in addition to C, this interface enables *| +|* tools written in such languages. *| +|* *| +|* Note: This interface is experimental. It is *NOT* stable, and may be *| +|* changed without warning. Only C API usage documentation is *| +|* provided. See the C++ documentation for all higher level ORC API *| +|* details. *| +|* *| +\*===----------------------------------------------------------------------===*/ + +#ifndef LLVM_C_LLJITUTILS_H +#define LLVM_C_LLJITUTILS_H + +#include "llvm-c/LLJIT.h" + +LLVM_C_EXTERN_C_BEGIN + +/** + * @defgroup LLVMCExecutionEngineLLJITUtils LLJIT Utilities + * @ingroup LLVMCExecutionEngineLLJIT + * + * @{ + */ + +/** + * A reference to an orc::LLJIT instance. + */ +typedef struct LLVMOrcOpaqueLLJIT *LLVMOrcLLJITRef; + +/** + * Install the plugin that submits debug objects to the executor. Executors must + * expose the llvm_orc_registerJITLoaderGDBWrapper symbol. + */ +LLVMErrorRef LLVMOrcLLJITEnableDebugSupport(LLVMOrcLLJITRef J); + +/** + * @} + */ + +LLVM_C_EXTERN_C_END + +#endif /* LLVM_C_LLJITUTILS_H */ diff --git a/llvm/lib/ExecutionEngine/Orc/Debugging/CMakeLists.txt b/llvm/lib/ExecutionEngine/Orc/Debugging/CMakeLists.txt index 23b4714816185..5bf23a7ec0bc8 100644 --- a/llvm/lib/ExecutionEngine/Orc/Debugging/CMakeLists.txt +++ b/llvm/lib/ExecutionEngine/Orc/Debugging/CMakeLists.txt @@ -6,6 +6,7 @@ add_llvm_component_library(LLVMOrcDebugging DebugInfoSupport.cpp DebuggerSupport.cpp DebuggerSupportPlugin.cpp + LLJITUtilsCBindings.cpp PerfSupportPlugin.cpp ADDITIONAL_HEADER_DIRS diff --git a/llvm/lib/ExecutionEngine/Orc/Debugging/LLJITUtilsCBindings.cpp b/llvm/lib/ExecutionEngine/Orc/Debugging/LLJITUtilsCBindings.cpp new file mode 100644 index 0000000000000..8e53f779b26aa --- /dev/null +++ b/llvm/lib/ExecutionEngine/Orc/Debugging/LLJITUtilsCBindings.cpp @@ -0,0 +1,22 @@ +//===--------------- OrcV2CBindings.cpp - C bindings OrcV2 APIs -----------===// +// +// 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-c/LLJIT.h" +#include "llvm-c/LLJITUtils.h" + +#include "llvm/ExecutionEngine/Orc/Debugging/DebuggerSupport.h" +#include "llvm/ExecutionEngine/Orc/LLJIT.h" + +using namespace llvm; +using namespace llvm::orc; + +DEFINE_SIMPLE_CONVERSION_FUNCTIONS(LLJIT, LLVMOrcLLJITRef) + +LLVMErrorRef LLVMOrcLLJITEnableDebugSupport(LLVMOrcLLJITRef J) { + return wrap(llvm::orc::enableDebuggerSupport(*unwrap(J))); +} diff --git a/llvm/unittests/ExecutionEngine/Orc/OrcCAPITest.cpp b/llvm/unittests/ExecutionEngine/Orc/OrcCAPITest.cpp index 836afd97a99e4..65d2f57234d0a 100644 --- a/llvm/unittests/ExecutionEngine/Orc/OrcCAPITest.cpp +++ b/llvm/unittests/ExecutionEngine/Orc/OrcCAPITest.cpp @@ -9,6 +9,7 @@ #include "llvm-c/Core.h" #include "llvm-c/Error.h" #include "llvm-c/LLJIT.h" +#include "llvm-c/LLJITUtils.h" #include "llvm-c/Orc.h" #include "gtest/gtest.h" From e0fbd64ebe1241b8a0b4cc2f01bc2922561dbfa9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Stefan=20Gr=C3=A4nitz?= Date: Mon, 11 Dec 2023 13:41:32 +0100 Subject: [PATCH 5/8] Drop LLVMOrcLLJITEnableDebugSupport() from OrcV2CBindings.cpp --- llvm/lib/ExecutionEngine/Orc/OrcV2CBindings.cpp | 4 ---- 1 file changed, 4 deletions(-) diff --git a/llvm/lib/ExecutionEngine/Orc/OrcV2CBindings.cpp b/llvm/lib/ExecutionEngine/Orc/OrcV2CBindings.cpp index 698cb3241cb3d..bee7e72942892 100644 --- a/llvm/lib/ExecutionEngine/Orc/OrcV2CBindings.cpp +++ b/llvm/lib/ExecutionEngine/Orc/OrcV2CBindings.cpp @@ -1180,7 +1180,3 @@ void LLVMOrcDisposeLazyCallThroughManager( LLVMOrcLazyCallThroughManagerRef LCM) { std::unique_ptr TmpLCM(unwrap(LCM)); } - -LLVMErrorRef LLVMOrcLLJITEnableDebugSupport(LLVMOrcLLJITRef J) { - return wrap(llvm::orc::enableDebuggerSupport(*unwrap(J))); -} From efc145dd21882cac11bb9e8f300cd6c878a04b2a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Stefan=20Gr=C3=A4nitz?= Date: Mon, 11 Dec 2023 15:06:42 +0100 Subject: [PATCH 6/8] Drop unnecessary include from OrcV2CBindings.cpp --- llvm/lib/ExecutionEngine/Orc/OrcV2CBindings.cpp | 1 - 1 file changed, 1 deletion(-) diff --git a/llvm/lib/ExecutionEngine/Orc/OrcV2CBindings.cpp b/llvm/lib/ExecutionEngine/Orc/OrcV2CBindings.cpp index bee7e72942892..72314cceedf33 100644 --- a/llvm/lib/ExecutionEngine/Orc/OrcV2CBindings.cpp +++ b/llvm/lib/ExecutionEngine/Orc/OrcV2CBindings.cpp @@ -11,7 +11,6 @@ #include "llvm-c/OrcEE.h" #include "llvm-c/TargetMachine.h" -#include "llvm/ExecutionEngine/Orc/Debugging/DebuggerSupport.h" #include "llvm/ExecutionEngine/Orc/JITTargetMachineBuilder.h" #include "llvm/ExecutionEngine/Orc/LLJIT.h" #include "llvm/ExecutionEngine/Orc/ObjectTransformLayer.h" From e842e061b289ae1ed634126dba91a1c22381de2d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Stefan=20Gr=C3=A4nitz?= Date: Mon, 11 Dec 2023 18:47:23 +0100 Subject: [PATCH 7/8] Fix file headers (NFC) --- llvm/include/llvm-c/LLJIT.h | 2 +- llvm/include/llvm-c/LLJITUtils.h | 2 +- llvm/lib/ExecutionEngine/Orc/Debugging/LLJITUtilsCBindings.cpp | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/llvm/include/llvm-c/LLJIT.h b/llvm/include/llvm-c/LLJIT.h index a06133aac4fb0..a58c3b8bbef70 100644 --- a/llvm/include/llvm-c/LLJIT.h +++ b/llvm/include/llvm-c/LLJIT.h @@ -1,4 +1,4 @@ -/*===----------- llvm-c/LLJIT.h - OrcV2 LLJIT C bindings --------*- C++ -*-===*\ +/*===----------- llvm-c/LLJIT.h - OrcV2 LLJIT C bindings ----------*- C -*-===*\ |* *| |* Part of the LLVM Project, under the Apache License v2.0 with LLVM *| |* Exceptions. *| diff --git a/llvm/include/llvm-c/LLJITUtils.h b/llvm/include/llvm-c/LLJITUtils.h index 6c400173f0920..45488bf9268e2 100644 --- a/llvm/include/llvm-c/LLJITUtils.h +++ b/llvm/include/llvm-c/LLJITUtils.h @@ -1,4 +1,4 @@ -/*===--- llvm-c/LLJITUtils.h - OrcV2 LLJIT Utilities C bindings -*- C++ -*-===*\ +/*===------- llvm-c/LLJITUtils.h - Advanced LLJIT features --------*- C -*-===*\ |* *| |* Part of the LLVM Project, under the Apache License v2.0 with LLVM *| |* Exceptions. *| diff --git a/llvm/lib/ExecutionEngine/Orc/Debugging/LLJITUtilsCBindings.cpp b/llvm/lib/ExecutionEngine/Orc/Debugging/LLJITUtilsCBindings.cpp index 8e53f779b26aa..2df5aef733fb3 100644 --- a/llvm/lib/ExecutionEngine/Orc/Debugging/LLJITUtilsCBindings.cpp +++ b/llvm/lib/ExecutionEngine/Orc/Debugging/LLJITUtilsCBindings.cpp @@ -1,4 +1,4 @@ -//===--------------- OrcV2CBindings.cpp - C bindings OrcV2 APIs -----------===// +//===--------- LLJITUtilsCBindings.cpp - Advanced LLJIT features ----------===// // // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. // See https://llvm.org/LICENSE.txt for license information. From 3e443cc033a9d453d3d5d33148d007b410d1618f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Stefan=20Gr=C3=A4nitz?= Date: Mon, 11 Dec 2023 20:31:28 +0100 Subject: [PATCH 8/8] Drop unnecessary typedef in LLJITUtils.h --- llvm/include/llvm-c/LLJITUtils.h | 5 ----- 1 file changed, 5 deletions(-) diff --git a/llvm/include/llvm-c/LLJITUtils.h b/llvm/include/llvm-c/LLJITUtils.h index 45488bf9268e2..940097432b78f 100644 --- a/llvm/include/llvm-c/LLJITUtils.h +++ b/llvm/include/llvm-c/LLJITUtils.h @@ -37,11 +37,6 @@ LLVM_C_EXTERN_C_BEGIN * @{ */ -/** - * A reference to an orc::LLJIT instance. - */ -typedef struct LLVMOrcOpaqueLLJIT *LLVMOrcLLJITRef; - /** * Install the plugin that submits debug objects to the executor. Executors must * expose the llvm_orc_registerJITLoaderGDBWrapper symbol.