[llvm] 48c2172 - Revert "[JITLink] Add an initial implementation of JITLink for ELF/LoongArch"

via llvm-commits llvm-commits at lists.llvm.org
Wed Jan 18 00:53:44 PST 2023


Author: wanglei
Date: 2023-01-18T16:53:37+08:00
New Revision: 48c2172e51b27ce173daf22c0266c7a380d8adf7

URL: https://github.com/llvm/llvm-project/commit/48c2172e51b27ce173daf22c0266c7a380d8adf7
DIFF: https://github.com/llvm/llvm-project/commit/48c2172e51b27ce173daf22c0266c7a380d8adf7.diff

LOG: Revert "[JITLink] Add an initial implementation of JITLink for ELF/LoongArch"

This reverts commit 28b6f38d0a841451af7b4893368543382dd5e630.

This breaks on LoongArch64 bot.
https://lab.llvm.org/staging/#/builders/236/builds/896

Added: 
    

Modified: 
    llvm/lib/ExecutionEngine/JITLink/CMakeLists.txt
    llvm/lib/ExecutionEngine/JITLink/ELF.cpp
    llvm/lib/Target/LoongArch/TargetInfo/LoongArchTargetInfo.cpp

Removed: 
    llvm/include/llvm/ExecutionEngine/JITLink/ELF_loongarch.h
    llvm/include/llvm/ExecutionEngine/JITLink/loongarch.h
    llvm/lib/ExecutionEngine/JITLink/ELF_loongarch.cpp
    llvm/lib/ExecutionEngine/JITLink/loongarch.cpp
    llvm/test/ExecutionEngine/JITLink/LoongArch/ELF_loongarch32_relocations.s
    llvm/test/ExecutionEngine/JITLink/LoongArch/ELF_loongarch64_ehframe.s
    llvm/test/ExecutionEngine/JITLink/LoongArch/ELF_loongarch64_relocations.s
    llvm/test/ExecutionEngine/JITLink/LoongArch/lit.local.cfg


################################################################################
diff  --git a/llvm/include/llvm/ExecutionEngine/JITLink/ELF_loongarch.h b/llvm/include/llvm/ExecutionEngine/JITLink/ELF_loongarch.h
deleted file mode 100644
index 4d7655c4b988b..0000000000000
--- a/llvm/include/llvm/ExecutionEngine/JITLink/ELF_loongarch.h
+++ /dev/null
@@ -1,39 +0,0 @@
-//===-- ELF_loongarch.h - JIT link functions for ELF/loongarch -*- 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
-//
-//===----------------------------------------------------------------------===//
-//
-//===----------------------------------------------------------------------===//
-//
-// jit-link functions for ELF/loongarch.
-//
-//===----------------------------------------------------------------------===//
-
-#ifndef LLVM_EXECUTIONENGINE_JITLINK_ELF_LOONGARCH_H
-#define LLVM_EXECUTIONENGINE_JITLINK_ELF_LOONGARCH_H
-
-#include "llvm/ExecutionEngine/JITLink/JITLink.h"
-
-namespace llvm {
-namespace jitlink {
-
-/// Create a LinkGraph from an ELF/loongarch relocatable object
-///
-/// Note: The graph does not take ownership of the underlying buffer, nor copy
-/// its contents. The caller is responsible for ensuring that the object buffer
-/// outlives the graph.
-Expected<std::unique_ptr<LinkGraph>>
-createLinkGraphFromELFObject_loongarch(MemoryBufferRef ObjectBuffer);
-
-/// jit-link the given object buffer, which must be an ELF loongarch object
-/// file.
-void link_ELF_loongarch(std::unique_ptr<LinkGraph> G,
-                        std::unique_ptr<JITLinkContext> Ctx);
-
-} // end namespace jitlink
-} // end namespace llvm
-
-#endif // LLVM_EXECUTIONENGINE_JITLINK_ELF_LOONGARCH_H

diff  --git a/llvm/include/llvm/ExecutionEngine/JITLink/loongarch.h b/llvm/include/llvm/ExecutionEngine/JITLink/loongarch.h
deleted file mode 100644
index bec657723a38c..0000000000000
--- a/llvm/include/llvm/ExecutionEngine/JITLink/loongarch.h
+++ /dev/null
@@ -1,399 +0,0 @@
-//= loongarch.h - Generic JITLink loongarch edge kinds, utilities -*- 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
-//
-//===----------------------------------------------------------------------===//
-//
-// Generic utilities for graphs representing loongarch objects.
-//
-//===----------------------------------------------------------------------===//
-
-#ifndef LLVM_EXECUTIONENGINE_JITLINK_LOONGARCH_H
-#define LLVM_EXECUTIONENGINE_JITLINK_LOONGARCH_H
-
-#include "TableManager.h"
-#include "llvm/ExecutionEngine/JITLink/JITLink.h"
-#include "llvm/ExecutionEngine/Orc/Shared/MemoryFlags.h"
-
-namespace llvm {
-namespace jitlink {
-namespace loongarch {
-
-/// Represents loongarch fixups.
-enum EdgeKind_loongarch : Edge::Kind {
-  /// A plain 64-bit pointer value relocation.
-  ///
-  /// Fixup expression:
-  ///   Fixup <- Target + Addend : uint64
-  ///
-  Pointer64 = Edge::FirstRelocation,
-
-  /// A plain 32-bit pointer value relocation.
-  ///
-  /// Fixup expression:
-  ///   Fixup <- Target + Addend : uint32
-  ///
-  /// Errors:
-  ///   - The target must reside in the low 32-bits of the address space,
-  ///     otherwise an out-of-range error will be returned.
-  ///
-  Pointer32,
-
-  /// A 26-bit PC-relative branch.
-  ///
-  /// Represents a PC-relative call or branch to a target within +/-128Mb. The
-  /// target must be 4-byte aligned.
-  ///
-  /// Fixup expression:
-  ///   Fixup <- (Target - Fixup + Addend) >> 2 : int26
-  ///
-  /// Notes:
-  ///   The '26' in the name refers to the number operand bits and follows the
-  /// naming convention used by the corresponding ELF relocations. Since the low
-  /// two bits must be zero (because of the 4-byte alignment of the target) the
-  /// operand is effectively a signed 28-bit number.
-  ///
-  /// Errors:
-  ///   - The result of the unshifted part of the fixup expression must be
-  ///     4-byte aligned otherwise an alignment error will be returned.
-  ///   - The result of the fixup expression must fit into an int26 otherwise an
-  ///     out-of-range error will be returned.
-  ///
-  Branch26PCRel,
-
-  /// A 32-bit delta.
-  ///
-  /// Delta from the fixup to the target.
-  ///
-  /// Fixup expression:
-  ///   Fixup <- Target - Fixup + Addend : int32
-  ///
-  /// Errors:
-  ///   - The result of the fixup expression must fit into an int32, otherwise
-  ///     an out-of-range error will be returned.
-  ///
-  Delta32,
-
-  /// A 32-bit negative delta.
-  ///
-  /// Delta from the target back to the fixup.
-  ///
-  /// Fixup expression:
-  ///   Fixup <- Fixup - Target + Addend : int32
-  ///
-  /// Errors:
-  ///   - The result of the fixup expression must fit into an int32, otherwise
-  ///     an out-of-range error will be returned.
-  ///
-  NegDelta32,
-
-  /// A 64-bit delta.
-  ///
-  /// Delta from the fixup to the target.
-  ///
-  /// Fixup expression:
-  ///   Fixup <- Target - Fixup + Addend : int64
-  ///
-  Delta64,
-
-  /// The signed 20-bit delta from the fixup page to the page containing the
-  /// target.
-  ///
-  /// Fixup expression:
-  ///   Fixup <- (((Target + Addend + ((Target + Addend) & 0x800)) & ~0xfff)
-  //              - (Fixup & ~0xfff)) >> 12 : int20
-  ///
-  /// Notes:
-  ///   For PCALAU12I fixups.
-  ///
-  /// Errors:
-  ///   - The result of the fixup expression must fit into an int20 otherwise an
-  ///     out-of-range error will be returned.
-  ///
-  Page20,
-
-  /// The 12-bit offset of the target within its page.
-  ///
-  /// Typically used to fix up ADDI/LD_W/LD_D immediates.
-  ///
-  /// Fixup expression:
-  ///   Fixup <- ((Target + Addend) >> Shift) & 0xfff : int12
-  ///
-  PageOffset12,
-
-  /// A GOT entry getter/constructor, transformed to Page20 pointing at the GOT
-  /// entry for the original target.
-  ///
-  /// Indicates that this edge should be transformed into a Page20 targeting
-  /// the GOT entry for the edge's current target, maintaining the same addend.
-  /// A GOT entry for the target should be created if one does not already
-  /// exist.
-  ///
-  /// Edges of this kind are usually handled by a GOT/PLT builder pass inserted
-  /// by default.
-  ///
-  /// Fixup expression:
-  ///   NONE
-  ///
-  /// Errors:
-  ///   - *ASSERTION* Failure to handle edges of this kind prior to the fixup
-  ///     phase will result in an assert/unreachable during the fixup phase.
-  ///
-  RequestGOTAndTransformToPage20,
-
-  /// A GOT entry getter/constructor, transformed to Pageoffset12 pointing at
-  /// the GOT entry for the original target.
-  ///
-  /// Indicates that this edge should be transformed into a PageOffset12
-  /// targeting the GOT entry for the edge's current target, maintaining the
-  /// same addend. A GOT entry for the target should be created if one does not
-  /// already exist.
-  ///
-  /// Edges of this kind are usually handled by a GOT/PLT builder pass inserted
-  /// by default.
-  ///
-  /// Fixup expression:
-  ///   NONE
-  ///
-  RequestGOTAndTransformToPageOffset12,
-};
-
-/// Returns a string name for the given loongarch edge. For debugging purposes
-/// only.
-const char *getEdgeKindName(Edge::Kind K);
-
-// Returns extract bits Val[Hi:Lo].
-inline uint32_t extractBits(uint32_t Val, unsigned Hi, unsigned Lo) {
-  return (Val & (((1UL << (Hi + 1)) - 1))) >> Lo;
-}
-
-/// Apply fixup expression for edge to block content.
-inline Error applyFixup(LinkGraph &G, Block &B, const Edge &E) {
-  using namespace support;
-
-  char *BlockWorkingMem = B.getAlreadyMutableContent().data();
-  char *FixupPtr = BlockWorkingMem + E.getOffset();
-  uint64_t FixupAddress = (B.getAddress() + E.getOffset()).getValue();
-  uint64_t TargetAddress = E.getTarget().getAddress().getValue();
-  int64_t Addend = E.getAddend();
-
-  switch (E.getKind()) {
-  case Pointer64:
-    *(ulittle64_t *)FixupPtr = TargetAddress + Addend;
-    break;
-  case Pointer32: {
-    uint64_t Value = TargetAddress + Addend;
-    if (Value > std::numeric_limits<uint32_t>::max())
-      return makeTargetOutOfRangeError(G, B, E);
-    *(ulittle32_t *)FixupPtr = Value;
-    break;
-  }
-  case Branch26PCRel: {
-    int64_t Value = TargetAddress - FixupAddress + Addend;
-
-    if (!isInt<28>(Value))
-      return makeTargetOutOfRangeError(G, B, E);
-
-    if (!isShiftedInt<26, 2>(Value))
-      return makeAlignmentError(orc::ExecutorAddr(FixupAddress), Value, 4, E);
-
-    uint32_t RawInstr = *(little32_t *)FixupPtr;
-    uint32_t Imm = static_cast<uint32_t>(Value >> 2);
-    uint32_t Imm15_0 = extractBits(Imm, /*Hi=*/15, /*Lo=*/0) << 10;
-    uint32_t Imm25_16 = extractBits(Imm, /*Hi=*/25, /*Lo=*/16);
-    *(little32_t *)FixupPtr = RawInstr | Imm15_0 | Imm25_16;
-    break;
-  }
-  case Delta32: {
-    int64_t Value = TargetAddress - FixupAddress + Addend;
-
-    if (!isInt<32>(Value))
-      return makeTargetOutOfRangeError(G, B, E);
-    *(little32_t *)FixupPtr = Value;
-    break;
-  }
-  case NegDelta32: {
-    int64_t Value = FixupAddress - TargetAddress + Addend;
-    if (!isInt<32>(Value))
-      return makeTargetOutOfRangeError(G, B, E);
-    *(little32_t *)FixupPtr = Value;
-    break;
-  }
-  case Delta64:
-    *(little64_t *)FixupPtr = TargetAddress - FixupAddress + Addend;
-    break;
-  case Page20: {
-    uint64_t Target = TargetAddress + Addend;
-    uint64_t TargetPage =
-        (Target + (Target & 0x800)) & ~static_cast<uint64_t>(0xfff);
-    uint64_t PCPage = FixupAddress & ~static_cast<uint64_t>(0xfff);
-
-    int64_t PageDelta = TargetPage - PCPage;
-    if (!isInt<32>(PageDelta))
-      return makeTargetOutOfRangeError(G, B, E);
-
-    uint32_t RawInstr = *(little32_t *)FixupPtr;
-    uint32_t Imm31_12 = extractBits(PageDelta, /*Hi=*/31, /*Lo=*/12) << 5;
-    *(little32_t *)FixupPtr = RawInstr | Imm31_12;
-    break;
-  }
-  case PageOffset12: {
-    uint64_t TargetOffset = (TargetAddress + Addend) & 0xfff;
-
-    uint32_t RawInstr = *(ulittle32_t *)FixupPtr;
-    uint32_t Imm11_0 = TargetOffset << 10;
-    *(ulittle32_t *)FixupPtr = RawInstr | Imm11_0;
-    break;
-  }
-  default:
-    return make_error<JITLinkError>(
-        "In graph " + G.getName() + ", section " + B.getSection().getName() +
-        " unsupported edge kind " + getEdgeKindName(E.getKind()));
-  }
-
-  return Error::success();
-}
-
-/// loongarch null pointer content.
-extern const char NullPointerContent[8];
-inline ArrayRef<char> getGOTEntryBlockContent(LinkGraph &G) {
-  return {reinterpret_cast<const char *>(NullPointerContent),
-          G.getPointerSize()};
-}
-
-/// loongarch stub content.
-///
-/// Contains the instruction sequence for an indirect jump via an in-memory
-/// pointer:
-///   pcalau12i $t8, %page20(ptr)
-///   ld.[w/d]  $t8, %pageoff12(ptr)
-///   jr        $t8
-constexpr size_t StubEntrySize = 12;
-extern const uint8_t LA64StubContent[StubEntrySize];
-extern const uint8_t LA32StubContent[StubEntrySize];
-inline ArrayRef<char> getStubBlockContent(LinkGraph &G) {
-  auto StubContent =
-      G.getPointerSize() == 8 ? LA64StubContent : LA32StubContent;
-  return {reinterpret_cast<const char *>(StubContent), StubEntrySize};
-}
-
-/// Creates a new pointer block in the given section and returns an
-/// Anonymous symobl pointing to it.
-///
-/// If InitialTarget is given then an Pointer64 relocation will be added to the
-/// block pointing at InitialTarget.
-///
-/// The pointer block will have the following default values:
-///   alignment: PointerSize
-///   alignment-offset: 0
-inline Symbol &createAnonymousPointer(LinkGraph &G, Section &PointerSection,
-                                      Symbol *InitialTarget = nullptr,
-                                      uint64_t InitialAddend = 0) {
-  auto &B = G.createContentBlock(PointerSection, getGOTEntryBlockContent(G),
-                                 orc::ExecutorAddr(), G.getPointerSize(), 0);
-  if (InitialTarget)
-    B.addEdge(G.getPointerSize() == 8 ? Pointer64 : Pointer32, 0,
-              *InitialTarget, InitialAddend);
-  return G.addAnonymousSymbol(B, 0, G.getPointerSize(), false, false);
-}
-
-/// Create a jump stub that jumps via the pointer at the given symbol and
-/// an anonymous symbol pointing to it. Return the anonymous symbol.
-inline Symbol &createAnonymousPointerJumpStub(LinkGraph &G,
-                                              Section &StubSection,
-                                              Symbol &PointerSymbol) {
-  Block &StubContentBlock = G.createContentBlock(
-      StubSection, getStubBlockContent(G), orc::ExecutorAddr(), 4, 0);
-  StubContentBlock.addEdge(Page20, 0, PointerSymbol, 0);
-  StubContentBlock.addEdge(PageOffset12, 4, PointerSymbol, 0);
-  return G.addAnonymousSymbol(StubContentBlock, 0, StubEntrySize, true, false);
-}
-
-/// Global Offset Table Builder.
-class GOTTableManager : public TableManager<GOTTableManager> {
-public:
-  static StringRef getSectionName() { return "$__GOT"; }
-
-  bool visitEdge(LinkGraph &G, Block *B, Edge &E) {
-    Edge::Kind KindToSet = Edge::Invalid;
-    switch (E.getKind()) {
-    case RequestGOTAndTransformToPage20:
-      KindToSet = Page20;
-      break;
-    case RequestGOTAndTransformToPageOffset12:
-      KindToSet = PageOffset12;
-      break;
-    default:
-      return false;
-    }
-    assert(KindToSet != Edge::Invalid &&
-           "Fell through switch, but no new kind to set");
-    DEBUG_WITH_TYPE("jitlink", {
-      dbgs() << "  Fixing " << G.getEdgeKindName(E.getKind()) << " edge at "
-             << B->getFixupAddress(E) << " (" << B->getAddress() << " + "
-             << formatv("{0:x}", E.getOffset()) << ")\n";
-    });
-    E.setKind(KindToSet);
-    E.setTarget(getEntryForTarget(G, E.getTarget()));
-    return true;
-  }
-
-  Symbol &createEntry(LinkGraph &G, Symbol &Target) {
-    return createAnonymousPointer(G, getGOTSection(G), &Target);
-  }
-
-private:
-  Section &getGOTSection(LinkGraph &G) {
-    if (!GOTSection)
-      GOTSection = &G.createSection(getSectionName(),
-                                    orc::MemProt::Read | orc::MemProt::Exec);
-    return *GOTSection;
-  }
-
-  Section *GOTSection = nullptr;
-};
-
-/// Procedure Linkage Table Builder.
-class PLTTableManager : public TableManager<PLTTableManager> {
-public:
-  PLTTableManager(GOTTableManager &GOT) : GOT(GOT) {}
-
-  static StringRef getSectionName() { return "$__STUBS"; }
-
-  bool visitEdge(LinkGraph &G, Block *B, Edge &E) {
-    if (E.getKind() == Branch26PCRel && !E.getTarget().isDefined()) {
-      DEBUG_WITH_TYPE("jitlink", {
-        dbgs() << "  Fixing " << G.getEdgeKindName(E.getKind()) << " edge at "
-               << B->getFixupAddress(E) << " (" << B->getAddress() << " + "
-               << formatv("{0:x}", E.getOffset()) << ")\n";
-      });
-      E.setTarget(getEntryForTarget(G, E.getTarget()));
-      return true;
-    }
-    return false;
-  }
-
-  Symbol &createEntry(LinkGraph &G, Symbol &Target) {
-    return createAnonymousPointerJumpStub(G, getStubsSection(G),
-                                          GOT.getEntryForTarget(G, Target));
-  }
-
-public:
-  Section &getStubsSection(LinkGraph &G) {
-    if (!StubsSection)
-      StubsSection = &G.createSection(getSectionName(),
-                                      orc::MemProt::Read | orc::MemProt::Exec);
-    return *StubsSection;
-  }
-
-  GOTTableManager &GOT;
-  Section *StubsSection = nullptr;
-};
-
-} // namespace loongarch
-} // namespace jitlink
-} // namespace llvm
-
-#endif

diff  --git a/llvm/lib/ExecutionEngine/JITLink/CMakeLists.txt b/llvm/lib/ExecutionEngine/JITLink/CMakeLists.txt
index 52ff5e8370031..64a0df57a03d9 100644
--- a/llvm/lib/ExecutionEngine/JITLink/CMakeLists.txt
+++ b/llvm/lib/ExecutionEngine/JITLink/CMakeLists.txt
@@ -22,7 +22,6 @@ add_llvm_component_library(LLVMJITLink
   ELFLinkGraphBuilder.cpp
   ELF_aarch64.cpp
   ELF_i386.cpp
-  ELF_loongarch.cpp
   ELF_riscv.cpp
   ELF_x86_64.cpp
 
@@ -35,7 +34,6 @@ add_llvm_component_library(LLVMJITLink
   # Architectures:
   aarch64.cpp
   i386.cpp
-  loongarch.cpp
   riscv.cpp
   x86_64.cpp
 

diff  --git a/llvm/lib/ExecutionEngine/JITLink/ELF.cpp b/llvm/lib/ExecutionEngine/JITLink/ELF.cpp
index ef0f19a785712..9d55e6e2bf965 100644
--- a/llvm/lib/ExecutionEngine/JITLink/ELF.cpp
+++ b/llvm/lib/ExecutionEngine/JITLink/ELF.cpp
@@ -15,7 +15,6 @@
 #include "llvm/BinaryFormat/ELF.h"
 #include "llvm/ExecutionEngine/JITLink/ELF_aarch64.h"
 #include "llvm/ExecutionEngine/JITLink/ELF_i386.h"
-#include "llvm/ExecutionEngine/JITLink/ELF_loongarch.h"
 #include "llvm/ExecutionEngine/JITLink/ELF_riscv.h"
 #include "llvm/ExecutionEngine/JITLink/ELF_x86_64.h"
 #include "llvm/Object/ELF.h"
@@ -69,8 +68,6 @@ createLinkGraphFromELFObject(MemoryBufferRef ObjectBuffer) {
   switch (*TargetMachineArch) {
   case ELF::EM_AARCH64:
     return createLinkGraphFromELFObject_aarch64(ObjectBuffer);
-  case ELF::EM_LOONGARCH:
-    return createLinkGraphFromELFObject_loongarch(ObjectBuffer);
   case ELF::EM_RISCV:
     return createLinkGraphFromELFObject_riscv(ObjectBuffer);
   case ELF::EM_X86_64:
@@ -90,10 +87,6 @@ void link_ELF(std::unique_ptr<LinkGraph> G,
   case Triple::aarch64:
     link_ELF_aarch64(std::move(G), std::move(Ctx));
     return;
-  case Triple::loongarch32:
-  case Triple::loongarch64:
-    link_ELF_loongarch(std::move(G), std::move(Ctx));
-    return;
   case Triple::riscv32:
   case Triple::riscv64:
     link_ELF_riscv(std::move(G), std::move(Ctx));

diff  --git a/llvm/lib/ExecutionEngine/JITLink/ELF_loongarch.cpp b/llvm/lib/ExecutionEngine/JITLink/ELF_loongarch.cpp
deleted file mode 100644
index aa6247f551f0e..0000000000000
--- a/llvm/lib/ExecutionEngine/JITLink/ELF_loongarch.cpp
+++ /dev/null
@@ -1,208 +0,0 @@
-//===--- ELF_loongarch.cpp - JIT linker implementation for ELF/loongarch --===//
-//
-// 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
-//
-//===----------------------------------------------------------------------===//
-//
-// ELF/loongarch jit-link implementation.
-//
-//===----------------------------------------------------------------------===//
-
-#include "llvm/ExecutionEngine/JITLink/ELF_loongarch.h"
-#include "llvm/BinaryFormat/ELF.h"
-#include "llvm/ExecutionEngine/JITLink/DWARFRecordSectionSplitter.h"
-#include "llvm/ExecutionEngine/JITLink/JITLink.h"
-#include "llvm/ExecutionEngine/JITLink/loongarch.h"
-#include "llvm/Object/ELF.h"
-#include "llvm/Object/ELFObjectFile.h"
-
-#include "EHFrameSupportImpl.h"
-#include "ELFLinkGraphBuilder.h"
-#include "JITLinkGeneric.h"
-
-#define DEBUG_TYPE "jitlink"
-
-using namespace llvm;
-using namespace llvm::jitlink;
-using namespace llvm::jitlink::loongarch;
-
-namespace {
-
-class ELFJITLinker_loongarch : public JITLinker<ELFJITLinker_loongarch> {
-  friend class JITLinker<ELFJITLinker_loongarch>;
-
-public:
-  ELFJITLinker_loongarch(std::unique_ptr<JITLinkContext> Ctx,
-                         std::unique_ptr<LinkGraph> G,
-                         PassConfiguration PassConfig)
-      : JITLinker(std::move(Ctx), std::move(G), std::move(PassConfig)) {}
-
-private:
-  Error applyFixup(LinkGraph &G, Block &B, const Edge &E) const {
-    return loongarch::applyFixup(G, B, E);
-  }
-};
-
-template <typename ELFT>
-class ELFLinkGraphBuilder_loongarch : public ELFLinkGraphBuilder<ELFT> {
-private:
-  static Expected<loongarch::EdgeKind_loongarch>
-  getRelocationKind(const uint32_t Type) {
-    using namespace loongarch;
-    switch (Type) {
-    case ELF::R_LARCH_64:
-      return Pointer64;
-    case ELF::R_LARCH_32:
-      return Pointer32;
-    case ELF::R_LARCH_32_PCREL:
-      return Delta32;
-    case ELF::R_LARCH_B26:
-      return Branch26PCRel;
-    case ELF::R_LARCH_PCALA_HI20:
-      return Page20;
-    case ELF::R_LARCH_PCALA_LO12:
-      return PageOffset12;
-    case ELF::R_LARCH_GOT_PC_HI20:
-      return RequestGOTAndTransformToPage20;
-    case ELF::R_LARCH_GOT_PC_LO12:
-      return RequestGOTAndTransformToPageOffset12;
-    }
-
-    return make_error<JITLinkError>(
-        "Unsupported loongarch relocation:" + formatv("{0:d}: ", Type) +
-        object::getELFRelocationTypeName(ELF::EM_LOONGARCH, Type));
-  }
-
-  Error addRelocations() override {
-    LLVM_DEBUG(dbgs() << "Processing relocations:\n");
-
-    using Base = ELFLinkGraphBuilder<ELFT>;
-    using Self = ELFLinkGraphBuilder_loongarch<ELFT>;
-    for (const auto &RelSect : Base::Sections)
-      if (Error Err = Base::forEachRelaRelocation(RelSect, this,
-                                                  &Self::addSingleRelocation))
-        return Err;
-
-    return Error::success();
-  }
-
-  Error addSingleRelocation(const typename ELFT::Rela &Rel,
-                            const typename ELFT::Shdr &FixupSect,
-                            Block &BlockToFix) {
-    using Base = ELFLinkGraphBuilder<ELFT>;
-
-    uint32_t SymbolIndex = Rel.getSymbol(false);
-    auto ObjSymbol = Base::Obj.getRelocationSymbol(Rel, Base::SymTabSec);
-    if (!ObjSymbol)
-      return ObjSymbol.takeError();
-
-    Symbol *GraphSymbol = Base::getGraphSymbol(SymbolIndex);
-    if (!GraphSymbol)
-      return make_error<StringError>(
-          formatv("Could not find symbol at given index, did you add it to "
-                  "JITSymbolTable? index: {0}, shndx: {1} Size of table: {2}",
-                  SymbolIndex, (*ObjSymbol)->st_shndx,
-                  Base::GraphSymbols.size()),
-          inconvertibleErrorCode());
-
-    uint32_t Type = Rel.getType(false);
-    Expected<loongarch::EdgeKind_loongarch> Kind = getRelocationKind(Type);
-    if (!Kind)
-      return Kind.takeError();
-
-    int64_t Addend = Rel.r_addend;
-    auto FixupAddress = orc::ExecutorAddr(FixupSect.sh_addr) + Rel.r_offset;
-    Edge::OffsetT Offset = FixupAddress - BlockToFix.getAddress();
-    Edge GE(*Kind, Offset, *GraphSymbol, Addend);
-    LLVM_DEBUG({
-      dbgs() << "    ";
-      printEdge(dbgs(), BlockToFix, GE, loongarch::getEdgeKindName(*Kind));
-      dbgs() << "\n";
-    });
-
-    BlockToFix.addEdge(std::move(GE));
-
-    return Error::success();
-  }
-
-public:
-  ELFLinkGraphBuilder_loongarch(StringRef FileName,
-                                const object::ELFFile<ELFT> &Obj,
-                                const Triple T)
-      : ELFLinkGraphBuilder<ELFT>(Obj, std::move(T), FileName,
-                                  loongarch::getEdgeKindName) {}
-};
-
-Error buildTables_ELF_loongarch(LinkGraph &G) {
-  LLVM_DEBUG(dbgs() << "Visiting edges in graph:\n");
-
-  GOTTableManager GOT;
-  PLTTableManager PLT(GOT);
-  visitExistingEdges(G, GOT, PLT);
-  return Error::success();
-}
-
-} // namespace
-
-namespace llvm {
-namespace jitlink {
-
-Expected<std::unique_ptr<LinkGraph>>
-createLinkGraphFromELFObject_loongarch(MemoryBufferRef ObjectBuffer) {
-  LLVM_DEBUG({
-    dbgs() << "Building jitlink graph for new input "
-           << ObjectBuffer.getBufferIdentifier() << "...\n";
-  });
-
-  auto ELFObj = object::ObjectFile::createELFObjectFile(ObjectBuffer);
-  if (!ELFObj)
-    return ELFObj.takeError();
-
-  if ((*ELFObj)->getArch() == Triple::loongarch64) {
-    auto &ELFObjFile = cast<object::ELFObjectFile<object::ELF64LE>>(**ELFObj);
-    return ELFLinkGraphBuilder_loongarch<object::ELF64LE>(
-               (*ELFObj)->getFileName(), ELFObjFile.getELFFile(),
-               (*ELFObj)->makeTriple())
-        .buildGraph();
-  }
-
-  assert((*ELFObj)->getArch() == Triple::loongarch32 &&
-         "Invalid triple for LoongArch ELF object file");
-  auto &ELFObjFile = cast<object::ELFObjectFile<object::ELF32LE>>(**ELFObj);
-  return ELFLinkGraphBuilder_loongarch<object::ELF32LE>(
-             (*ELFObj)->getFileName(), ELFObjFile.getELFFile(),
-             (*ELFObj)->makeTriple())
-      .buildGraph();
-}
-
-void link_ELF_loongarch(std::unique_ptr<LinkGraph> G,
-                        std::unique_ptr<JITLinkContext> Ctx) {
-  PassConfiguration Config;
-  const Triple &TT = G->getTargetTriple();
-  if (Ctx->shouldAddDefaultTargetPasses(TT)) {
-    // Add eh-frame passses.
-    Config.PrePrunePasses.push_back(DWARFRecordSectionSplitter(".eh_frame"));
-    Config.PrePrunePasses.push_back(
-        EHFrameEdgeFixer(".eh_frame", G->getPointerSize(), Pointer32, Pointer64,
-                         Delta32, Delta64, NegDelta32));
-
-    // Add a mark-live pass.
-    if (auto MarkLive = Ctx->getMarkLivePass(TT))
-      Config.PrePrunePasses.push_back(std::move(MarkLive));
-    else
-      Config.PrePrunePasses.push_back(markAllSymbolsLive);
-
-    // Add an in-place GOT/PLTStubs build pass.
-    Config.PostPrunePasses.push_back(buildTables_ELF_loongarch);
-  }
-
-  if (auto Err = Ctx->modifyPassConfig(*G, Config))
-    return Ctx->notifyFailed(std::move(Err));
-
-  ELFJITLinker_loongarch::link(std::move(Ctx), std::move(G), std::move(Config));
-}
-
-} // namespace jitlink
-} // namespace llvm

diff  --git a/llvm/lib/ExecutionEngine/JITLink/loongarch.cpp b/llvm/lib/ExecutionEngine/JITLink/loongarch.cpp
deleted file mode 100644
index d1e44ec187cc8..0000000000000
--- a/llvm/lib/ExecutionEngine/JITLink/loongarch.cpp
+++ /dev/null
@@ -1,60 +0,0 @@
-//===--- loongarch.cpp - Generic JITLink loongarch edge kinds, utilities --===//
-//
-// 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
-//
-//===----------------------------------------------------------------------===//
-//
-// Generic utilities for graphs representing loongarch objects.
-//
-//===----------------------------------------------------------------------===//
-
-#include "llvm/ExecutionEngine/JITLink/loongarch.h"
-
-#define DEBUG_TYPE "jitlink"
-
-namespace llvm {
-namespace jitlink {
-namespace loongarch {
-
-const char NullPointerContent[8] = {0x00, 0x00, 0x00, 0x00,
-                                    0x00, 0x00, 0x00, 0x00};
-
-const uint8_t LA64StubContent[StubEntrySize] = {
-    0x14, 0x00, 0x00, 0x1a, // pcalau12i $t8, %page20(imm)
-    0x94, 0x02, 0xc0, 0x28, // ld.d $t8, $t8, %pageoff12(imm)
-    0x80, 0x02, 0x00, 0x4c  // jr $t8
-};
-
-const uint8_t LA32StubContent[StubEntrySize] = {
-    0x14, 0x00, 0x00, 0x1a, // pcalau12i $t8, %page20(imm)
-    0x94, 0x02, 0x80, 0x28, // ld.w $t8, $t8, %pageoff12(imm)
-    0x80, 0x02, 0x00, 0x4c  // jr $t8
-};
-
-const char *getEdgeKindName(Edge::Kind K) {
-#define KIND_NAME_CASE(K)                                                      \
-  case K:                                                                      \
-    return #K;
-
-  switch (K) {
-    KIND_NAME_CASE(Pointer64)
-    KIND_NAME_CASE(Pointer32)
-    KIND_NAME_CASE(Delta32)
-    KIND_NAME_CASE(NegDelta32)
-    KIND_NAME_CASE(Delta64)
-    KIND_NAME_CASE(Branch26PCRel)
-    KIND_NAME_CASE(Page20)
-    KIND_NAME_CASE(PageOffset12)
-    KIND_NAME_CASE(RequestGOTAndTransformToPage20)
-    KIND_NAME_CASE(RequestGOTAndTransformToPageOffset12)
-  default:
-    return getGenericEdgeKindName(K);
-  }
-#undef KIND_NAME_CASE
-}
-
-} // namespace loongarch
-} // namespace jitlink
-} // namespace llvm

diff  --git a/llvm/lib/Target/LoongArch/TargetInfo/LoongArchTargetInfo.cpp b/llvm/lib/Target/LoongArch/TargetInfo/LoongArchTargetInfo.cpp
index 1d6be4069b71e..10654510032f0 100644
--- a/llvm/lib/Target/LoongArch/TargetInfo/LoongArchTargetInfo.cpp
+++ b/llvm/lib/Target/LoongArch/TargetInfo/LoongArchTargetInfo.cpp
@@ -24,7 +24,7 @@ extern "C" LLVM_EXTERNAL_VISIBILITY void LLVMInitializeLoongArchTargetInfo() {
   RegisterTarget<Triple::loongarch32, /*HasJIT=*/false> X(
       getTheLoongArch32Target(), "loongarch32", "32-bit LoongArch",
       "LoongArch");
-  RegisterTarget<Triple::loongarch64, /*HasJIT=*/true> Y(
+  RegisterTarget<Triple::loongarch64, /*HasJIT=*/false> Y(
       getTheLoongArch64Target(), "loongarch64", "64-bit LoongArch",
       "LoongArch");
 }

diff  --git a/llvm/test/ExecutionEngine/JITLink/LoongArch/ELF_loongarch32_relocations.s b/llvm/test/ExecutionEngine/JITLink/LoongArch/ELF_loongarch32_relocations.s
deleted file mode 100644
index 23f6acc307b98..0000000000000
--- a/llvm/test/ExecutionEngine/JITLink/LoongArch/ELF_loongarch32_relocations.s
+++ /dev/null
@@ -1,113 +0,0 @@
-# RUN: rm -rf %t && mkdir -p %t
-# RUN: llvm-mc --triple=loongarch32 --filetype=obj -o %t/elf_reloc.o %s
-# RUN: llvm-jitlink --noexec \
-# RUN:              --abs external_data=0xdeadbeef \
-# RUN:              --abs external_func=0xcafef00d \
-# RUN:              --check %s %t/elf_reloc.o
-    .text
-
-    .globl main
-    .p2align 2
-    .type main, at function
-main:
-    ret
-
-    .size main, .-main
-
-## Check R_LARCH_B26 relocation of a local function call.
-
-# jitlink-check: decode_operand(local_func_call26, 0)[27:0] = \
-# jitlink-check:   (local_func - local_func_call26)[27:0]
-# jitlink-check: decode_operand(local_func_jump26, 0)[27:0] = \
-# jitlink-check:   (local_func - local_func_jump26)[27:0]
-    .globl local_func
-    .p2align 2
-    .type local_func, at function
-local_func:
-    ret
-    .size local_func, .-local_func
-
-    .globl local_func_call26
-    .p2align 2
-local_func_call26:
-    bl local_func
-    .size local_func_call26, .-local_func_call26
-
-    .globl local_func_jump26
-    .p2align 2
-local_func_jump26:
-    b local_func
-    .size local_func_jump26, .-local_func_jump26
-
-## Check R_LARCH_PCALA_HI20 / R_LARCH_PCALA_LO12 relocation of a local symbol.
-
-# jitlink-check: decode_operand(test_pcalau12i_pcrel, 1)[19:0] = \
-# jitlink-check:   (named_data - test_pcalau12i_pcrel)[31:12] + \
-# jitlink-check:      named_data[11:11]
-# jitlink-check: decode_operand(test_addi_pcrel_lo12, 2)[11:0] = \
-# jitlink-check:   (named_data)[11:0]
-    .globl test_pcalau12i_pcrel
-    .p2align 2
-test_pcalau12i_pcrel:
-    pcalau12i $a0, %pc_hi20(named_data)
-    .size test_pcalau12i_pcrel, .-test_pcalau12i_pcrel
-
-    .globl test_addi_pcrel_lo12
-    .p2align 2
-test_addi_pcrel_lo12:
-    addi.w $a0, $a0, %pc_lo12(named_data)
-    .size test_addi_pcrel_lo12, .-test_addi_pcrel_lo12
-
-## Check that calls/jumps to external functions trigger the generation of stubs
-## and GOT entries.
-
-# jitlink-check: *{4}(got_addr(elf_reloc.o, external_func)) = external_func
-# jitlink-check: decode_operand(test_external_call, 0) = \
-# jitlink-check:   (stub_addr(elf_reloc.o, external_func) - \
-# jitlink-check:      test_external_call)[27:0]
-# jitlink-check: decode_operand(test_external_jump, 0) = \
-# jitlink-check:   (stub_addr(elf_reloc.o, external_func) - \
-# jitlink-check:      test_external_jump)[27:0]
-    .globl test_external_call
-    .p2align  2
-test_external_call:
-    bl external_func
-    .size test_external_call, .-test_external_call
-
-    .globl test_external_jump
-    .p2align 2
-test_external_jump:
-    b external_func
-    .size test_external_jump, .-test_external_jump
-
-## Check R_LARCH_GOT_PC_HI20 / R_LARCH_GOT_PC_LO12 handling with a reference to
-## an external symbol. Validate both the reference to the GOT entry, and also
-## the content of the GOT entry.
-
-# jitlink-check: *{4}(got_addr(elf_reloc.o, external_data)) = external_data
-# jitlink-check: decode_operand(test_gotpage_external, 1)[19:0] = \
-# jitlink-check:   (got_addr(elf_reloc.o, external_data)[31:12] - \
-# jitlink-check:      test_gotpage_external[31:12] + \
-# jitlink-check:      got_addr(elf_reloc.o, external_data)[11:11])[19:0]
-# jitlink-check: decode_operand(test_gotoffset12_external, 2)[11:0] = \
-# jitlink-check:   got_addr(elf_reloc.o, external_data)[11:0]
-    .globl test_gotpage_external
-    .p2align 2
-test_gotpage_external:
-    pcalau12i $a0, %got_pc_hi20(external_data)
-    .size test_gotpage_external, .-test_gotpage_external
-
-    .globl test_gotoffset12_external
-    .p2align 2
-test_gotoffset12_external:
-    ld.w $a0, $a0, %got_pc_lo12(external_data)
-    .size test_gotoffset12_external, .-test_gotoffset12_external
-
-
-    .globl named_data
-    .p2align 4
-    .type named_data, at object
-named_data:
-    .quad 0x2222222222222222
-    .quad 0x3333333333333333
-    .size named_data, .-named_data

diff  --git a/llvm/test/ExecutionEngine/JITLink/LoongArch/ELF_loongarch64_ehframe.s b/llvm/test/ExecutionEngine/JITLink/LoongArch/ELF_loongarch64_ehframe.s
deleted file mode 100644
index 4a1a1649508eb..0000000000000
--- a/llvm/test/ExecutionEngine/JITLink/LoongArch/ELF_loongarch64_ehframe.s
+++ /dev/null
@@ -1,72 +0,0 @@
-# REQUIRES: asserts
-# RUN: llvm-mc --triple=loongarch64-linux-gnu --filetype=obj -o %t %s
-# RUN: llvm-jitlink --noexec --phony-externals --debug-only=jitlink %t 2>&1 | \
-# RUN:   FileCheck %s
-
-## Check that splitting of eh-frame sections works.
-
-# CHECK: DWARFRecordSectionSplitter: Processing .eh_frame...
-# CHECK:  Processing block at
-# CHECK:    Processing CFI record at
-# CHECK:      Extracted {{.*}} section = .eh_frame
-# CHECK:    Processing CFI record at
-# CHECK:      Extracted {{.*}} section = .eh_frame
-# CHECK: EHFrameEdgeFixer: Processing .eh_frame in "{{.*}}"...
-# CHECK:   Processing block at
-# CHECK:     Processing CFI record at
-# CHECK:       Record is CIE
-# CHECK:   Processing block at
-# CHECK:     Processing CFI record at
-# CHECK:       Record is FDE
-# CHECK:         Adding edge at {{.*}} to CIE at: {{.*}}
-# CHECK:         Existing edge at {{.*}} to PC begin at {{.*}}
-# CHECK:         Adding keep-alive edge from target at {{.*}} to FDE at {{.*}}
-# CHECK:   Processing block at
-# CHECK:     Processing CFI record at
-# CHECK:       Record is FDE
-# CHECK:         Adding edge at {{.*}} to CIE at: {{.*}}
-# CHECK:         Existing edge at {{.*}} to PC begin at {{.*}}
-# CHECK:         Adding keep-alive edge from target at {{.*}} to FDE at {{.*}}
-
- .text
- .globl main
- .p2align 2
- .type main, at function
-main:
- .cfi_startproc
- addi.d $sp, $sp, -16
- .cfi_def_cfa_offset 16
- st.d $ra, $sp, 8
- .cfi_offset 1, -8
- ori $a0, $zero, 4
- bl %plt(__cxa_allocate_exception)
- ori $a1, $zero, 5
- st.w $a1, $a0, 0
- pcalau12i $a1, %got_pc_hi20(_ZTIi)
- ld.d $a1, $a1, %got_pc_lo12(_ZTIi)
- move $a2, $zero
- bl %plt(__cxa_throw)
-.main_end:
- .size main, .main_end-main
- .cfi_endproc
-
- .globl dup
- .p2align 2
- .type main, at function
-dup:
- .cfi_startproc
- addi.d $sp, $sp, -16
- .cfi_def_cfa_offset 16
- st.d $ra, $sp, 8
- .cfi_offset 1, -8
- ori $a0, $zero, 4
- bl %plt(__cxa_allocate_exception)
- ori $a1, $zero, 5
- st.w $a1, $a0, 0
- pcalau12i $a1, %got_pc_hi20(_ZTIi)
- ld.d $a1, $a1, %got_pc_lo12(_ZTIi)
- move $a2, $zero
- bl %plt(__cxa_throw)
-.dup_end:
- .size main, .dup_end-dup
- .cfi_endproc

diff  --git a/llvm/test/ExecutionEngine/JITLink/LoongArch/ELF_loongarch64_relocations.s b/llvm/test/ExecutionEngine/JITLink/LoongArch/ELF_loongarch64_relocations.s
deleted file mode 100644
index 74eb8118d10e3..0000000000000
--- a/llvm/test/ExecutionEngine/JITLink/LoongArch/ELF_loongarch64_relocations.s
+++ /dev/null
@@ -1,113 +0,0 @@
-# RUN: rm -rf %t && mkdir -p %t
-# RUN: llvm-mc --triple=loongarch64 --filetype=obj -o %t/elf_reloc.o %s
-# RUN: llvm-jitlink --noexec \
-# RUN:              --abs external_data=0xdeadbeef \
-# RUN:              --abs external_func=0xcafef00d \
-# RUN:              --check %s %t/elf_reloc.o
-    .text
-
-    .globl main
-    .p2align 2
-    .type main, at function
-main:
-    ret
-
-    .size main, .-main
-
-## Check R_LARCH_B26 relocation of a local function call.
-
-# jitlink-check: decode_operand(local_func_call26, 0)[27:0] = \
-# jitlink-check:   (local_func - local_func_call26)[27:0]
-# jitlink-check: decode_operand(local_func_jump26, 0)[27:0] = \
-# jitlink-check:   (local_func - local_func_jump26)[27:0]
-    .globl local_func
-    .p2align 2
-    .type local_func, at function
-local_func:
-    ret
-    .size local_func, .-local_func
-
-    .globl local_func_call26
-    .p2align 2
-local_func_call26:
-    bl local_func
-    .size local_func_call26, .-local_func_call26
-
-    .globl local_func_jump26
-    .p2align 2
-local_func_jump26:
-    b local_func
-    .size local_func_jump26, .-local_func_jump26
-
-## Check R_LARCH_PCALA_HI20 / R_LARCH_PCALA_LO12 relocation of a local symbol.
-
-# jitlink-check: decode_operand(test_pcalau12i_pcrel, 1)[19:0] = \
-# jitlink-check:   (named_data - test_pcalau12i_pcrel)[31:12] + \
-# jitlink-check:      named_data[11:11]
-# jitlink-check: decode_operand(test_addi_pcrel_lo12, 2)[11:0] = \
-# jitlink-check:   (named_data)[11:0]
-    .globl test_pcalau12i_pcrel
-    .p2align 2
-test_pcalau12i_pcrel:
-    pcalau12i $a0, %pc_hi20(named_data)
-    .size test_pcalau12i_pcrel, .-test_pcalau12i_pcrel
-
-    .globl test_addi_pcrel_lo12
-    .p2align 2
-test_addi_pcrel_lo12:
-    addi.d $a0, $a0, %pc_lo12(named_data)
-    .size test_addi_pcrel_lo12, .-test_addi_pcrel_lo12
-
-## Check that calls/jumps to external functions trigger the generation of stubs
-## and GOT entries.
-
-# jitlink-check: *{8}(got_addr(elf_reloc.o, external_func)) = external_func
-# jitlink-check: decode_operand(test_external_call, 0) = \
-# jitlink-check:   (stub_addr(elf_reloc.o, external_func) - \
-# jitlink-check:      test_external_call)[27:0]
-# jitlink-check: decode_operand(test_external_jump, 0) = \
-# jitlink-check:   (stub_addr(elf_reloc.o, external_func) - \
-# jitlink-check:      test_external_jump)[27:0]
-    .globl test_external_call
-    .p2align  2
-test_external_call:
-    bl external_func
-    .size test_external_call, .-test_external_call
-
-    .globl test_external_jump
-    .p2align 2
-test_external_jump:
-    b external_func
-    .size test_external_jump, .-test_external_jump
-
-## Check R_LARCH_GOT_PC_HI20 / R_LARCH_GOT_PC_LO12 handling with a reference to
-## an external symbol. Validate both the reference to the GOT entry, and also
-## the content of the GOT entry.
-
-# jitlink-check: *{8}(got_addr(elf_reloc.o, external_data)) = external_data
-# jitlink-check: decode_operand(test_gotpage_external, 1)[19:0] = \
-# jitlink-check:   (got_addr(elf_reloc.o, external_data)[31:12] - \
-# jitlink-check:      test_gotpage_external[31:12] + \
-# jitlink-check:      got_addr(elf_reloc.o, external_data)[11:11])[19:0]
-# jitlink-check: decode_operand(test_gotoffset12_external, 2)[11:0] = \
-# jitlink-check:   got_addr(elf_reloc.o, external_data)[11:0]
-    .globl test_gotpage_external
-    .p2align 2
-test_gotpage_external:
-    pcalau12i $a0, %got_pc_hi20(external_data)
-    .size test_gotpage_external, .-test_gotpage_external
-
-    .globl test_gotoffset12_external
-    .p2align 2
-test_gotoffset12_external:
-    ld.d $a0, $a0, %got_pc_lo12(external_data)
-    .size test_gotoffset12_external, .-test_gotoffset12_external
-
-
-    .globl named_data
-    .p2align 4
-    .type named_data, at object
-named_data:
-    .quad 0x2222222222222222
-    .quad 0x3333333333333333
-    .size named_data, .-named_data

diff  --git a/llvm/test/ExecutionEngine/JITLink/LoongArch/lit.local.cfg b/llvm/test/ExecutionEngine/JITLink/LoongArch/lit.local.cfg
deleted file mode 100644
index a4b6c6f59bdbd..0000000000000
--- a/llvm/test/ExecutionEngine/JITLink/LoongArch/lit.local.cfg
+++ /dev/null
@@ -1,2 +0,0 @@
-if not 'LoongArch' in config.root.targets:
-  config.unsupported = True


        


More information about the llvm-commits mailing list