From 190565c26d763be240cb3c4692559eebfffc9817 Mon Sep 17 00:00:00 2001
From: Keno Fischer <
[email protected]>
Date: Thu, 14 Apr 2022 00:53:14 -0400
Subject: [PATCH] Some minimal LLVM15 compat (#44870)
just a drive-by as I was trying out some commits on master
---
src/cgutils.cpp | 4 ++--
src/disasm.cpp | 13 ++++++++++++-
src/llvm-remove-addrspaces.cpp | 4 ++--
3 files changed, 16 insertions(+), 5 deletions(-)
diff --git a/src/cgutils.cpp b/src/cgutils.cpp
index 3dff14b7be63..f5f378de772c 100644
--- a/src/cgutils.cpp
+++ b/src/cgutils.cpp
@@ -2041,10 +2041,10 @@ static void emit_memcpy_llvm(jl_codectx_t &ctx, Value *dst, MDNode *tbaa_dst, Va
const DataLayout &DL = jl_Module->getDataLayout();
auto srcty = cast<PointerType>(src->getType());
//TODO unsafe nonopaque pointer
- auto srcel = srcty->getElementType();
+ auto srcel = srcty->getPointerElementType();
auto dstty = cast<PointerType>(dst->getType());
//TODO unsafe nonopaque pointer
- auto dstel = dstty->getElementType();
+ auto dstel = dstty->getPointerElementType();
if (srcel->isArrayTy() && srcel->getArrayNumElements() == 1) {
src = ctx.builder.CreateConstInBoundsGEP2_32(srcel, src, 0, 0);
srcel = srcel->getArrayElementType();
diff --git a/src/disasm.cpp b/src/disasm.cpp
index 22926043b9fa..ebbcd03d0fc3 100644
--- a/src/disasm.cpp
+++ b/src/disasm.cpp
@@ -108,6 +108,8 @@
#include <llvm/Support/CodeGen.h>
#include <llvm/IR/LegacyPassManager.h>
+#include <llvm-c/Disassembler.h>
+
#include "julia.h"
#include "julia_internal.h"
#include "jitlayers.h"
@@ -899,7 +901,11 @@ static void jl_dump_asm_internal(
std::unique_ptr<MCCodeEmitter> CE;
std::unique_ptr<MCAsmBackend> MAB;
if (ShowEncoding) {
+#if JL_LLVM_VERSION >= 150000
+ CE.reset(TheTarget->createMCCodeEmitter(*MCII, Ctx));
+#else
CE.reset(TheTarget->createMCCodeEmitter(*MCII, *MRI, Ctx));
+#endif
MAB.reset(TheTarget->createMCAsmBackend(*STI, *MRI, Options));
}
@@ -1231,8 +1237,13 @@ jl_value_t *jl_dump_function_asm_impl(void *F, char raw_mc, const char* asm_vari
std::unique_ptr<MCAsmBackend> MAB(TM->getTarget().createMCAsmBackend(
STI, MRI, TM->Options.MCOptions));
std::unique_ptr<MCCodeEmitter> MCE;
- if (binary) // enable MCAsmStreamer::AddEncodingComment printing
+ if (binary) { // enable MCAsmStreamer::AddEncodingComment printing
+#if JL_LLVM_VERSION >= 150000
+ MCE.reset(TM->getTarget().createMCCodeEmitter(MII, *Context));
+#else
MCE.reset(TM->getTarget().createMCCodeEmitter(MII, MRI, *Context));
+#endif
+ }
auto FOut = std::make_unique<formatted_raw_ostream>(asmfile);
std::unique_ptr<MCStreamer> S(TM->getTarget().createAsmStreamer(
*Context, std::move(FOut), true,
diff --git a/src/llvm-remove-addrspaces.cpp b/src/llvm-remove-addrspaces.cpp
index 5cd9a20b8cfd..a3f3cbb1fee7 100644
--- a/src/llvm-remove-addrspaces.cpp
+++ b/src/llvm-remove-addrspaces.cpp
@@ -51,7 +51,7 @@ class AddrspaceRemoveTypeRemapper : public ValueMapTypeRemapper {
else {
//Remove once opaque pointer transition is complete
DstTy = PointerType::get(
- remapType(Ty->getElementType()),
+ remapType(Ty->getPointerElementType()),
ASRemapper(Ty->getAddressSpace()));
}
}
@@ -161,7 +161,7 @@ class AddrspaceRemoveValueMaterializer : public ValueMaterializer {
auto ptrty = cast<PointerType>(Src->getType()->getScalarType());
//Remove once opaque pointer transition is complete
if (!ptrty->isOpaque()) {
- Type *SrcTy = remapType(ptrty->getElementType());
+ Type *SrcTy = remapType(ptrty->getPointerElementType());
DstV = CE->getWithOperands(Ops, Ty, false, SrcTy);
}
}