From 190565c26d763be240cb3c4692559eebfffc9817 Mon Sep 17 00:00:00 2001 From: Keno Fischer 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(src->getType()); //TODO unsafe nonopaque pointer - auto srcel = srcty->getElementType(); + auto srcel = srcty->getPointerElementType(); auto dstty = cast(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 #include +#include + #include "julia.h" #include "julia_internal.h" #include "jitlayers.h" @@ -899,7 +901,11 @@ static void jl_dump_asm_internal( std::unique_ptr CE; std::unique_ptr 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 MAB(TM->getTarget().createMCAsmBackend( STI, MRI, TM->Options.MCOptions)); std::unique_ptr 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(asmfile); std::unique_ptr 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(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); } }