13 changes: 12 additions & 1 deletion llvm/include/llvm/ExecutionEngine/Orc/LazyEmittingLayer.h
Original file line number Diff line number Diff line change
Expand Up @@ -196,7 +196,14 @@ template <typename BaseLayerT> class LazyEmittingLayer {
public:

/// Construct a lazy emitting layer.
LazyEmittingLayer(BaseLayerT &BaseLayer) : BaseLayer(BaseLayer) {}
LLVM_ATTRIBUTE_DEPRECATED(
LazyEmittingLayer(BaseLayerT &BaseLayer),
"ORCv1 layers (including LazyEmittingLayer) are deprecated. Please use "
"ORCv2, where lazy emission is the default");

/// Construct a lazy emitting layer.
LazyEmittingLayer(ORCv1DeprecationAcknowledgement, BaseLayerT &BaseLayer)
: BaseLayer(BaseLayer) {}

/// Add the given module to the lazy emitting layer.
Error addModule(VModuleKey K, std::unique_ptr<Module> M) {
Expand Down Expand Up @@ -254,6 +261,10 @@ template <typename BaseLayerT> class LazyEmittingLayer {
}
};

template <typename BaseLayerT>
LazyEmittingLayer<BaseLayerT>::LazyEmittingLayer(BaseLayerT &BaseLayer)
: BaseLayer(BaseLayer) {}

} // end namespace orc
} // end namespace llvm

Expand Down
16 changes: 15 additions & 1 deletion llvm/include/llvm/ExecutionEngine/Orc/ObjectTransformLayer.h
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,16 @@ template <typename BaseLayerT, typename TransformFtor>
class LegacyObjectTransformLayer {
public:
/// Construct an ObjectTransformLayer with the given BaseLayer
LegacyObjectTransformLayer(BaseLayerT &BaseLayer,
LLVM_ATTRIBUTE_DEPRECATED(
LegacyObjectTransformLayer(BaseLayerT &BaseLayer,
TransformFtor Transform = TransformFtor()),
"ORCv1 layers (layers with the 'Legacy' prefix) are deprecated. Please "
"use "
"the ORCv2 ObjectTransformLayer instead");

/// Legacy layer constructor with deprecation acknowledgement.
LegacyObjectTransformLayer(ORCv1DeprecationAcknowledgement,
BaseLayerT &BaseLayer,
TransformFtor Transform = TransformFtor())
: BaseLayer(BaseLayer), Transform(std::move(Transform)) {}

Expand Down Expand Up @@ -107,6 +116,11 @@ class LegacyObjectTransformLayer {
TransformFtor Transform;
};

template <typename BaseLayerT, typename TransformFtor>
LegacyObjectTransformLayer<BaseLayerT, TransformFtor>::
LegacyObjectTransformLayer(BaseLayerT &BaseLayer, TransformFtor Transform)
: BaseLayer(BaseLayer), Transform(std::move(Transform)) {}

} // end namespace orc
} // end namespace llvm

Expand Down
18 changes: 14 additions & 4 deletions llvm/include/llvm/ExecutionEngine/Orc/RTDyldObjectLinkingLayer.h
Original file line number Diff line number Diff line change
Expand Up @@ -353,17 +353,27 @@ class LegacyRTDyldObjectLinkingLayer : public LegacyRTDyldObjectLinkingLayerBase

/// Construct an ObjectLinkingLayer with the given NotifyLoaded,
/// and NotifyFinalized functors.
LLVM_ATTRIBUTE_DEPRECATED(
LegacyRTDyldObjectLinkingLayer(
ExecutionSession &ES, ResourcesGetter GetResources,
NotifyLoadedFtor NotifyLoaded = NotifyLoadedFtor(),
NotifyFinalizedFtor NotifyFinalized = NotifyFinalizedFtor(),
NotifyFreedFtor NotifyFreed = NotifyFreedFtor()),
"ORCv1 layers (layers with the 'Legacy' prefix) are deprecated. Please "
"use "
"ORCv2 (see docs/ORCv2.rst)");

// Legacy layer constructor with deprecation acknowledgement.
LegacyRTDyldObjectLinkingLayer(
ExecutionSession &ES, ResourcesGetter GetResources,
ORCv1DeprecationAcknowledgement, ExecutionSession &ES,
ResourcesGetter GetResources,
NotifyLoadedFtor NotifyLoaded = NotifyLoadedFtor(),
NotifyFinalizedFtor NotifyFinalized = NotifyFinalizedFtor(),
NotifyFreedFtor NotifyFreed = NotifyFreedFtor())
: ES(ES), GetResources(std::move(GetResources)),
NotifyLoaded(std::move(NotifyLoaded)),
NotifyFinalized(std::move(NotifyFinalized)),
NotifyFreed(std::move(NotifyFreed)),
ProcessAllSections(false) {
}
NotifyFreed(std::move(NotifyFreed)), ProcessAllSections(false) {}

/// Set the 'ProcessAllSections' flag.
///
Expand Down
53 changes: 47 additions & 6 deletions llvm/include/llvm/ExecutionEngine/Orc/RemoteObjectLayer.h
Original file line number Diff line number Diff line change
Expand Up @@ -13,9 +13,10 @@
#ifndef LLVM_EXECUTIONENGINE_ORC_REMOTEOBJECTLAYER_H
#define LLVM_EXECUTIONENGINE_ORC_REMOTEOBJECTLAYER_H

#include "llvm/ExecutionEngine/Orc/Core.h"
#include "llvm/ExecutionEngine/Orc/LambdaResolver.h"
#include "llvm/ExecutionEngine/Orc/OrcRemoteTargetRPCAPI.h"
#include "llvm/Object/ObjectFile.h"
#include "llvm/ExecutionEngine/Orc/LambdaResolver.h"
#include <map>

namespace llvm {
Expand Down Expand Up @@ -312,7 +313,14 @@ class RemoteObjectClientLayer : public RemoteObjectLayer<RPCEndpoint> {
///
/// The ReportError functor can be used locally log errors that are intended
/// to be sent sent
RemoteObjectClientLayer(RPCEndpoint &Remote,
LLVM_ATTRIBUTE_DEPRECATED(
RemoteObjectClientLayer(RPCEndpoint &Remote,
std::function<void(Error)> ReportError),
"ORCv1 layers (including RemoteObjectClientLayer) are deprecated. Please "
"use "
"ORCv2 (see docs/ORCv2.rst)");

RemoteObjectClientLayer(ORCv1DeprecationAcknowledgement, RPCEndpoint &Remote,
std::function<void(Error)> ReportError)
: RemoteObjectLayer<RPCEndpoint>(Remote, std::move(ReportError)) {
using ThisT = RemoteObjectClientLayer<RPCEndpoint>;
Expand Down Expand Up @@ -417,11 +425,18 @@ class RemoteObjectServerLayer : public RemoteObjectLayer<RPCEndpoint> {

/// Create a RemoteObjectServerLayer with the given base layer (which must be
/// an object layer), RPC endpoint, and error reporter function.
RemoteObjectServerLayer(BaseLayerT &BaseLayer,
RPCEndpoint &Remote,
LLVM_ATTRIBUTE_DEPRECATED(
RemoteObjectServerLayer(BaseLayerT &BaseLayer, RPCEndpoint &Remote,
std::function<void(Error)> ReportError),
"ORCv1 layers (including RemoteObjectServerLayer) are deprecated. Please "
"use "
"ORCv2 (see docs/ORCv2.rst)");

RemoteObjectServerLayer(ORCv1DeprecationAcknowledgement,
BaseLayerT &BaseLayer, RPCEndpoint &Remote,
std::function<void(Error)> ReportError)
: RemoteObjectLayer<RPCEndpoint>(Remote, std::move(ReportError)),
BaseLayer(BaseLayer), HandleIdMgr(1) {
: RemoteObjectLayer<RPCEndpoint>(Remote, std::move(ReportError)),
BaseLayer(BaseLayer), HandleIdMgr(1) {
using ThisT = RemoteObjectServerLayer<BaseLayerT, RPCEndpoint>;

Remote.template addHandler<AddObject>(*this, &ThisT::addObject);
Expand Down Expand Up @@ -462,6 +477,7 @@ class RemoteObjectServerLayer : public RemoteObjectLayer<RPCEndpoint> {
assert(!BaseLayerHandles.count(Id) && "Id already in use?");

auto Resolver = createLambdaResolver(
AcknowledgeORCv1Deprecation,
[this, Id](const std::string &Name) { return lookup(Id, Name); },
[this, Id](const std::string &Name) {
return lookupInLogicalDylib(Id, Name);
Expand Down Expand Up @@ -522,6 +538,31 @@ class RemoteObjectServerLayer : public RemoteObjectLayer<RPCEndpoint> {
std::map<ObjHandleT, typename BaseLayerT::ObjHandleT> BaseLayerHandles;
};

template <typename RPCEndpoint>
RemoteObjectClientLayer<RPCEndpoint>::RemoteObjectClientLayer(
RPCEndpoint &Remote, std::function<void(Error)> ReportError)
: RemoteObjectLayer<RPCEndpoint>(Remote, std::move(ReportError)) {
using ThisT = RemoteObjectClientLayer<RPCEndpoint>;
Remote.template addHandler<Lookup>(*this, &ThisT::lookup);
Remote.template addHandler<LookupInLogicalDylib>(
*this, &ThisT::lookupInLogicalDylib);
}

template <typename BaseLayerT, typename RPCEndpoint>
RemoteObjectServerLayer<BaseLayerT, RPCEndpoint>::RemoteObjectServerLayer(
BaseLayerT &BaseLayer, RPCEndpoint &Remote,
std::function<void(Error)> ReportError)
: RemoteObjectLayer<RPCEndpoint>(Remote, std::move(ReportError)),
BaseLayer(BaseLayer), HandleIdMgr(1) {
using ThisT = RemoteObjectServerLayer<BaseLayerT, RPCEndpoint>;

Remote.template addHandler<AddObject>(*this, &ThisT::addObject);
Remote.template addHandler<RemoveObject>(*this, &ThisT::removeObject);
Remote.template addHandler<FindSymbol>(*this, &ThisT::findSymbol);
Remote.template addHandler<FindSymbolIn>(*this, &ThisT::findSymbolIn);
Remote.template addHandler<EmitAndFinalize>(*this, &ThisT::emitAndFinalize);
}

} // end namespace orc
} // end namespace llvm

Expand Down
22 changes: 22 additions & 0 deletions llvm/include/llvm/ExecutionEngine/OrcV1Deprecation.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
//===------ OrcV1Deprecation.h - Memory manager for MC-JIT ------*- 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
//
//===----------------------------------------------------------------------===//
//
// Tag for suppressing ORCv1 deprecation warnings.
//
//===----------------------------------------------------------------------===//

#ifndef LLVM_EXECUTIONENGINE_ORCV1DEPRECATION_H
#define LLVM_EXECUTIONENGINE_ORCV1DEPRECATION_H

namespace llvm {

enum ORCv1DeprecationAcknowledgement { AcknowledgeORCv1Deprecation };

} // namespace llvm

#endif // LLVM_EXECUTIONENGINE_ORCV1DEPRECATION_H
46 changes: 25 additions & 21 deletions llvm/lib/ExecutionEngine/Orc/OrcCBindingsStack.h
Original file line number Diff line number Diff line change
Expand Up @@ -211,28 +211,31 @@ class OrcCBindingsStack {
IndirectStubsManagerBuilder IndirectStubsMgrBuilder)
: CCMgr(createCompileCallbackManager(TM, ES)), DL(TM.createDataLayout()),
IndirectStubsMgr(IndirectStubsMgrBuilder()),
ObjectLayer(ES,
[this](orc::VModuleKey K) {
auto ResolverI = Resolvers.find(K);
assert(ResolverI != Resolvers.end() &&
"No resolver for module K");
auto Resolver = std::move(ResolverI->second);
Resolvers.erase(ResolverI);
return ObjLayerT::Resources{
std::make_shared<SectionMemoryManager>(), Resolver};
},
nullptr,
[this](orc::VModuleKey K, const object::ObjectFile &Obj,
const RuntimeDyld::LoadedObjectInfo &LoadedObjInfo) {
this->notifyFinalized(K, Obj, LoadedObjInfo);
},
[this](orc::VModuleKey K, const object::ObjectFile &Obj) {
this->notifyFreed(K, Obj);
}),
CompileLayer(ObjectLayer, orc::SimpleCompiler(TM)),
ObjectLayer(
AcknowledgeORCv1Deprecation, ES,
[this](orc::VModuleKey K) {
auto ResolverI = Resolvers.find(K);
assert(ResolverI != Resolvers.end() &&
"No resolver for module K");
auto Resolver = std::move(ResolverI->second);
Resolvers.erase(ResolverI);
return ObjLayerT::Resources{
std::make_shared<SectionMemoryManager>(), Resolver};
},
nullptr,
[this](orc::VModuleKey K, const object::ObjectFile &Obj,
const RuntimeDyld::LoadedObjectInfo &LoadedObjInfo) {
this->notifyFinalized(K, Obj, LoadedObjInfo);
},
[this](orc::VModuleKey K, const object::ObjectFile &Obj) {
this->notifyFreed(K, Obj);
}),
CompileLayer(AcknowledgeORCv1Deprecation, ObjectLayer,
orc::SimpleCompiler(TM)),
CODLayer(createCODLayer(ES, CompileLayer, CCMgr.get(),
std::move(IndirectStubsMgrBuilder), Resolvers)),
CXXRuntimeOverrides(
AcknowledgeORCv1Deprecation,
[this](const std::string &S) { return mangle(S); }) {}

Error shutdown() {
Expand Down Expand Up @@ -308,7 +311,8 @@ class OrcCBindingsStack {

// Run the static constructors, and save the static destructor runner for
// execution when the JIT is torn down.
orc::LegacyCtorDtorRunner<OrcCBindingsStack> CtorRunner(std::move(CtorNames), K);
orc::LegacyCtorDtorRunner<OrcCBindingsStack> CtorRunner(
AcknowledgeORCv1Deprecation, std::move(CtorNames), K);
if (auto Err = CtorRunner.runViaLayer(*this))
return std::move(Err);

Expand Down Expand Up @@ -465,7 +469,7 @@ class OrcCBindingsStack {
return nullptr;

return llvm::make_unique<CODLayerT>(
ES, CompileLayer,
AcknowledgeORCv1Deprecation, ES, CompileLayer,
[&Resolvers](orc::VModuleKey K) {
auto ResolverI = Resolvers.find(K);
assert(ResolverI != Resolvers.end() && "No resolver for module K");
Expand Down
3 changes: 2 additions & 1 deletion llvm/lib/ExecutionEngine/Orc/OrcMCJITReplacement.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -127,7 +127,8 @@ void OrcMCJITReplacement::runStaticConstructorsDestructors(bool isDtors) {
auto &CtorDtorsMap = isDtors ? UnexecutedDestructors : UnexecutedConstructors;

for (auto &KV : CtorDtorsMap)
cantFail(LegacyCtorDtorRunner<LazyEmitLayerT>(std::move(KV.second), KV.first)
cantFail(LegacyCtorDtorRunner<LazyEmitLayerT>(
AcknowledgeORCv1Deprecation, std::move(KV.second), KV.first)
.runViaLayer(LazyEmitLayer));

CtorDtorsMap.clear();
Expand Down
10 changes: 5 additions & 5 deletions llvm/lib/ExecutionEngine/Orc/OrcMCJITReplacement.h
Original file line number Diff line number Diff line change
Expand Up @@ -232,24 +232,24 @@ class OrcMCJITReplacement : public ExecutionEngine {
OrcMCJITReplacement(std::shared_ptr<MCJITMemoryManager> MemMgr,
std::shared_ptr<LegacyJITSymbolResolver> ClientResolver,
std::unique_ptr<TargetMachine> TM)
: ExecutionEngine(TM->createDataLayout()),
TM(std::move(TM)),
: ExecutionEngine(TM->createDataLayout()), TM(std::move(TM)),
MemMgr(
std::make_shared<MCJITReplacementMemMgr>(*this, std::move(MemMgr))),
Resolver(std::make_shared<LinkingORCResolver>(*this)),
ClientResolver(std::move(ClientResolver)), NotifyObjectLoaded(*this),
NotifyFinalized(*this),
ObjectLayer(
ES,
AcknowledgeORCv1Deprecation, ES,
[this](VModuleKey K) {
return ObjectLayerT::Resources{this->MemMgr, this->Resolver};
},
NotifyObjectLoaded, NotifyFinalized),
CompileLayer(ObjectLayer, SimpleCompiler(*this->TM),
CompileLayer(AcknowledgeORCv1Deprecation, ObjectLayer,
SimpleCompiler(*this->TM),
[this](VModuleKey K, std::unique_ptr<Module> M) {
Modules.push_back(std::move(M));
}),
LazyEmitLayer(CompileLayer) {}
LazyEmitLayer(AcknowledgeORCv1Deprecation, CompileLayer) {}

static void Register() {
OrcMCJITReplacementCtor = createOrcMCJITReplacement;
Expand Down
9 changes: 9 additions & 0 deletions llvm/lib/ExecutionEngine/Orc/RTDyldObjectLinkingLayer.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -207,5 +207,14 @@ void RTDyldObjectLinkingLayer::onObjEmit(
NotifyEmitted(K, std::move(ObjBuffer));
}

LegacyRTDyldObjectLinkingLayer::LegacyRTDyldObjectLinkingLayer(
ExecutionSession &ES, ResourcesGetter GetResources,
NotifyLoadedFtor NotifyLoaded, NotifyFinalizedFtor NotifyFinalized,
NotifyFreedFtor NotifyFreed)
: ES(ES), GetResources(std::move(GetResources)),
NotifyLoaded(std::move(NotifyLoaded)),
NotifyFinalized(std::move(NotifyFinalized)),
NotifyFreed(std::move(NotifyFreed)), ProcessAllSections(false) {}

} // End namespace orc.
} // End namespace llvm.
25 changes: 12 additions & 13 deletions llvm/tools/lli/lli.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -83,18 +83,15 @@ namespace {
cl::desc("Force interpretation: disable JIT"),
cl::init(false));

cl::opt<JITKind> UseJITKind("jit-kind",
cl::desc("Choose underlying JIT kind."),
cl::init(JITKind::MCJIT),
cl::values(
clEnumValN(JITKind::MCJIT, "mcjit",
"MCJIT"),
clEnumValN(JITKind::OrcMCJITReplacement,
"orc-mcjit",
"Orc-based MCJIT replacement"),
clEnumValN(JITKind::OrcLazy,
"orc-lazy",
"Orc-based lazy JIT.")));
cl::opt<JITKind> UseJITKind(
"jit-kind", cl::desc("Choose underlying JIT kind."),
cl::init(JITKind::MCJIT),
cl::values(clEnumValN(JITKind::MCJIT, "mcjit", "MCJIT"),
clEnumValN(JITKind::OrcMCJITReplacement, "orc-mcjit",
"Orc-based MCJIT replacement "
"(deprecated)"),
clEnumValN(JITKind::OrcLazy, "orc-lazy",
"Orc-based lazy JIT.")));

cl::opt<unsigned>
LazyJITCompileThreads("compile-threads",
Expand Down Expand Up @@ -419,7 +416,8 @@ int main(int argc, char **argv, char * const *envp) {
builder.setEngineKind(ForceInterpreter
? EngineKind::Interpreter
: EngineKind::JIT);
builder.setUseOrcMCJITReplacement(UseJITKind == JITKind::OrcMCJITReplacement);
builder.setUseOrcMCJITReplacement(AcknowledgeORCv1Deprecation,
UseJITKind == JITKind::OrcMCJITReplacement);

// If we are supposed to override the target triple, do so now.
if (!TargetTriple.empty())
Expand Down Expand Up @@ -665,6 +663,7 @@ int main(int argc, char **argv, char * const *envp) {
// Forward MCJIT's symbol resolution calls to the remote.
static_cast<ForwardingMemoryManager *>(RTDyldMM)->setResolver(
orc::createLambdaResolver(
AcknowledgeORCv1Deprecation,
[](const std::string &Name) { return nullptr; },
[&](const std::string &Name) {
if (auto Addr = ExitOnErr(R->getSymbolAddress(Name)))
Expand Down
3 changes: 2 additions & 1 deletion llvm/unittests/ExecutionEngine/Orc/LazyEmittingLayerTest.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,8 @@ struct MockBaseLayer {

TEST(LazyEmittingLayerTest, Empty) {
MockBaseLayer M;
llvm::orc::LazyEmittingLayer<MockBaseLayer> L(M);
llvm::orc::LazyEmittingLayer<MockBaseLayer> L(
llvm::AcknowledgeORCv1Deprecation, M);
cantFail(
L.addModule(llvm::orc::VModuleKey(), std::unique_ptr<llvm::Module>()));
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -76,7 +76,7 @@ TEST(LegacyCompileOnDemandLayerTest, FindSymbol) {
};

llvm::orc::LegacyCompileOnDemandLayer<decltype(TestBaseLayer)> COD(
ES, TestBaseLayer, GetResolver, SetResolver,
AcknowledgeORCv1Deprecation, ES, TestBaseLayer, GetResolver, SetResolver,
[](Function &F) { return std::set<Function *>{&F}; }, CallbackMgr,
[] { return llvm::make_unique<DummyStubsManager>(); }, true);

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -68,10 +68,11 @@ TEST(LegacyRTDyldObjectLinkingLayerTest, TestSetProcessAllSections) {

ExecutionSession ES;

LegacyRTDyldObjectLinkingLayer ObjLayer(ES, [&MM](VModuleKey) {
return LegacyRTDyldObjectLinkingLayer::Resources{
MM, std::make_shared<NullResolver>()};
});
LegacyRTDyldObjectLinkingLayer ObjLayer(
AcknowledgeORCv1Deprecation, ES, [&MM](VModuleKey) {
return LegacyRTDyldObjectLinkingLayer::Resources{
MM, std::make_shared<NullResolver>()};
});

LLVMContext Context;
auto M = llvm::make_unique<Module>("", Context);
Expand Down Expand Up @@ -130,13 +131,14 @@ TEST_F(LegacyRTDyldObjectLinkingLayerExecutionTest, NoDuplicateFinalization) {

std::map<orc::VModuleKey, std::shared_ptr<orc::SymbolResolver>> Resolvers;

LegacyRTDyldObjectLinkingLayer ObjLayer(ES, [&](VModuleKey K) {
auto I = Resolvers.find(K);
assert(I != Resolvers.end() && "Missing resolver");
auto R = std::move(I->second);
Resolvers.erase(I);
return LegacyRTDyldObjectLinkingLayer::Resources{MM, std::move(R)};
});
LegacyRTDyldObjectLinkingLayer ObjLayer(
AcknowledgeORCv1Deprecation, ES, [&](VModuleKey K) {
auto I = Resolvers.find(K);
assert(I != Resolvers.end() && "Missing resolver");
auto R = std::move(I->second);
Resolvers.erase(I);
return LegacyRTDyldObjectLinkingLayer::Resources{MM, std::move(R)};
});
SimpleCompiler Compile(*TM);

// Create a pair of modules that will trigger recursive finalization:
Expand Down Expand Up @@ -217,10 +219,11 @@ TEST_F(LegacyRTDyldObjectLinkingLayerExecutionTest, NoPrematureAllocation) {

auto MM = std::make_shared<SectionMemoryManagerWrapper>();

LegacyRTDyldObjectLinkingLayer ObjLayer(ES, [&MM](VModuleKey K) {
return LegacyRTDyldObjectLinkingLayer::Resources{
MM, std::make_shared<NullResolver>()};
});
LegacyRTDyldObjectLinkingLayer ObjLayer(
AcknowledgeORCv1Deprecation, ES, [&MM](VModuleKey K) {
return LegacyRTDyldObjectLinkingLayer::Resources{
MM, std::make_shared<NullResolver>()};
});
SimpleCompiler Compile(*TM);

// Create a pair of unrelated modules:
Expand Down Expand Up @@ -278,7 +281,7 @@ TEST_F(LegacyRTDyldObjectLinkingLayerExecutionTest, NoPrematureAllocation) {
TEST_F(LegacyRTDyldObjectLinkingLayerExecutionTest, TestNotifyLoadedSignature) {
ExecutionSession ES;
LegacyRTDyldObjectLinkingLayer ObjLayer(
ES,
AcknowledgeORCv1Deprecation, ES,
[](VModuleKey) {
return LegacyRTDyldObjectLinkingLayer::Resources{
nullptr, std::make_shared<NullResolver>()};
Expand Down
33 changes: 19 additions & 14 deletions llvm/unittests/ExecutionEngine/Orc/ObjectTransformLayerTest.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -182,17 +182,19 @@ TEST(LegacyObjectTransformLayerTest, Main) {

// Create one object transform layer using a transform (as a functor)
// that allocates new objects, and deals in unique pointers.
LegacyObjectTransformLayer<MockBaseLayer, AllocatingTransform> T1(M);
LegacyObjectTransformLayer<MockBaseLayer, AllocatingTransform> T1(
llvm::AcknowledgeORCv1Deprecation, M);

// Create a second object transform layer using a transform (as a lambda)
// that mutates objects in place, and deals in naked pointers
LegacyObjectTransformLayer<MockBaseLayer,
std::function<std::shared_ptr<MockObjectFile>(
std::shared_ptr<MockObjectFile>)>>
T2(M, [](std::shared_ptr<MockObjectFile> Obj) {
++(*Obj);
return Obj;
});
std::function<std::shared_ptr<MockObjectFile>(
std::shared_ptr<MockObjectFile>)>>
T2(llvm::AcknowledgeORCv1Deprecation, M,
[](std::shared_ptr<MockObjectFile> Obj) {
++(*Obj);
return Obj;
});

// Test addObject with T1 (allocating)
auto K1 = ES.allocateVModule();
Expand Down Expand Up @@ -281,22 +283,25 @@ TEST(LegacyObjectTransformLayerTest, Main) {
};

// Construct the jit layers.
LegacyRTDyldObjectLinkingLayer BaseLayer(ES, [](VModuleKey) {
return LegacyRTDyldObjectLinkingLayer::Resources{
std::make_shared<llvm::SectionMemoryManager>(),
std::make_shared<NullResolver>()};
});
LegacyRTDyldObjectLinkingLayer BaseLayer(
llvm::AcknowledgeORCv1Deprecation, ES, [](VModuleKey) {
return LegacyRTDyldObjectLinkingLayer::Resources{
std::make_shared<llvm::SectionMemoryManager>(),
std::make_shared<NullResolver>()};
});

auto IdentityTransform = [](std::unique_ptr<llvm::MemoryBuffer> Obj) {
return Obj;
};
LegacyObjectTransformLayer<decltype(BaseLayer), decltype(IdentityTransform)>
TransformLayer(BaseLayer, IdentityTransform);
TransformLayer(llvm::AcknowledgeORCv1Deprecation, BaseLayer,
IdentityTransform);
auto NullCompiler = [](llvm::Module &) {
return std::unique_ptr<llvm::MemoryBuffer>(nullptr);
};
LegacyIRCompileLayer<decltype(TransformLayer), decltype(NullCompiler)>
CompileLayer(TransformLayer, NullCompiler);
CompileLayer(llvm::AcknowledgeORCv1Deprecation, TransformLayer,
NullCompiler);

// Make sure that the calls from LegacyIRCompileLayer to LegacyObjectTransformLayer
// compile.
Expand Down
64 changes: 32 additions & 32 deletions llvm/unittests/ExecutionEngine/Orc/RemoteObjectLayerTest.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -127,7 +127,8 @@ TEST(RemoteObjectLayer, AddObject) {
std::copy(ObjBytes.begin(), ObjBytes.end(), ObjContents.begin());

RPCEndpoint ClientEP(*Channels.first, true);
RemoteObjectClientLayer<RPCEndpoint> Client(ClientEP, ReportError);
RemoteObjectClientLayer<RPCEndpoint> Client(AcknowledgeORCv1Deprecation,
ClientEP, ReportError);

RPCEndpoint ServerEP(*Channels.second, true);
MockObjectLayer BaseLayer(
Expand All @@ -144,9 +145,8 @@ TEST(RemoteObjectLayer, AddObject) {

return 1;
});
RemoteObjectServerLayer<MockObjectLayer, RPCEndpoint> Server(BaseLayer,
ServerEP,
ReportError);
RemoteObjectServerLayer<MockObjectLayer, RPCEndpoint> Server(
AcknowledgeORCv1Deprecation, BaseLayer, ServerEP, ReportError);

bool Finished = false;
ServerEP.addHandler<remote::utils::TerminateSession>(
Expand Down Expand Up @@ -181,7 +181,8 @@ TEST(RemoteObjectLayer, AddObjectFailure) {
};

RPCEndpoint ClientEP(*Channels.first, true);
RemoteObjectClientLayer<RPCEndpoint> Client(ClientEP, ReportError);
RemoteObjectClientLayer<RPCEndpoint> Client(AcknowledgeORCv1Deprecation,
ClientEP, ReportError);

RPCEndpoint ServerEP(*Channels.second, true);
MockObjectLayer BaseLayer(
Expand All @@ -191,9 +192,8 @@ TEST(RemoteObjectLayer, AddObjectFailure) {
return make_error<StringError>("AddObjectFailure - Test Message",
inconvertibleErrorCode());
});
RemoteObjectServerLayer<MockObjectLayer, RPCEndpoint> Server(BaseLayer,
ServerEP,
ReportError);
RemoteObjectServerLayer<MockObjectLayer, RPCEndpoint> Server(
AcknowledgeORCv1Deprecation, BaseLayer, ServerEP, ReportError);

bool Finished = false;
ServerEP.addHandler<remote::utils::TerminateSession>(
Expand Down Expand Up @@ -233,7 +233,8 @@ TEST(RemoteObjectLayer, RemoveObject) {
};

RPCEndpoint ClientEP(*Channels.first, true);
RemoteObjectClientLayer<RPCEndpoint> Client(ClientEP, ReportError);
RemoteObjectClientLayer<RPCEndpoint> Client(AcknowledgeORCv1Deprecation,
ClientEP, ReportError);

RPCEndpoint ServerEP(*Channels.second, true);

Expand All @@ -243,9 +244,8 @@ TEST(RemoteObjectLayer, RemoveObject) {
SymTab[1] = MockObjectLayer::LookupFn();
return 1;
});
RemoteObjectServerLayer<MockObjectLayer, RPCEndpoint> Server(BaseLayer,
ServerEP,
ReportError);
RemoteObjectServerLayer<MockObjectLayer, RPCEndpoint> Server(
AcknowledgeORCv1Deprecation, BaseLayer, ServerEP, ReportError);

bool Finished = false;
ServerEP.addHandler<remote::utils::TerminateSession>(
Expand Down Expand Up @@ -283,7 +283,8 @@ TEST(RemoteObjectLayer, RemoveObjectFailure) {
};

RPCEndpoint ClientEP(*Channels.first, true);
RemoteObjectClientLayer<RPCEndpoint> Client(ClientEP, ReportError);
RemoteObjectClientLayer<RPCEndpoint> Client(AcknowledgeORCv1Deprecation,
ClientEP, ReportError);

RPCEndpoint ServerEP(*Channels.second, true);

Expand All @@ -294,9 +295,8 @@ TEST(RemoteObjectLayer, RemoveObjectFailure) {
MockObjectLayer::SymbolLookupTable &SymTab) {
return 42;
});
RemoteObjectServerLayer<MockObjectLayer, RPCEndpoint> Server(BaseLayer,
ServerEP,
ReportError);
RemoteObjectServerLayer<MockObjectLayer, RPCEndpoint> Server(
AcknowledgeORCv1Deprecation, BaseLayer, ServerEP, ReportError);

bool Finished = false;
ServerEP.addHandler<remote::utils::TerminateSession>(
Expand Down Expand Up @@ -339,7 +339,8 @@ TEST(RemoteObjectLayer, FindSymbol) {
};

RPCEndpoint ClientEP(*Channels.first, true);
RemoteObjectClientLayer<RPCEndpoint> Client(ClientEP, ReportError);
RemoteObjectClientLayer<RPCEndpoint> Client(AcknowledgeORCv1Deprecation,
ClientEP, ReportError);

RPCEndpoint ServerEP(*Channels.second, true);

Expand All @@ -358,9 +359,8 @@ TEST(RemoteObjectLayer, FindSymbol) {
};
return 42;
});
RemoteObjectServerLayer<MockObjectLayer, RPCEndpoint> Server(BaseLayer,
ServerEP,
ReportError);
RemoteObjectServerLayer<MockObjectLayer, RPCEndpoint> Server(
AcknowledgeORCv1Deprecation, BaseLayer, ServerEP, ReportError);

bool Finished = false;
ServerEP.addHandler<remote::utils::TerminateSession>(
Expand Down Expand Up @@ -421,7 +421,8 @@ TEST(RemoteObjectLayer, FindSymbolIn) {
};

RPCEndpoint ClientEP(*Channels.first, true);
RemoteObjectClientLayer<RPCEndpoint> Client(ClientEP, ReportError);
RemoteObjectClientLayer<RPCEndpoint> Client(AcknowledgeORCv1Deprecation,
ClientEP, ReportError);

RPCEndpoint ServerEP(*Channels.second, true);

Expand All @@ -447,9 +448,8 @@ TEST(RemoteObjectLayer, FindSymbolIn) {

return 42;
});
RemoteObjectServerLayer<MockObjectLayer, RPCEndpoint> Server(BaseLayer,
ServerEP,
ReportError);
RemoteObjectServerLayer<MockObjectLayer, RPCEndpoint> Server(
AcknowledgeORCv1Deprecation, BaseLayer, ServerEP, ReportError);

bool Finished = false;
ServerEP.addHandler<remote::utils::TerminateSession>(
Expand Down Expand Up @@ -496,7 +496,8 @@ TEST(RemoteObjectLayer, EmitAndFinalize) {
};

RPCEndpoint ClientEP(*Channels.first, true);
RemoteObjectClientLayer<RPCEndpoint> Client(ClientEP, ReportError);
RemoteObjectClientLayer<RPCEndpoint> Client(AcknowledgeORCv1Deprecation,
ClientEP, ReportError);

RPCEndpoint ServerEP(*Channels.second, true);

Expand All @@ -506,9 +507,8 @@ TEST(RemoteObjectLayer, EmitAndFinalize) {
SymTab[1] = MockObjectLayer::LookupFn();
return 1;
});
RemoteObjectServerLayer<MockObjectLayer, RPCEndpoint> Server(BaseLayer,
ServerEP,
ReportError);
RemoteObjectServerLayer<MockObjectLayer, RPCEndpoint> Server(
AcknowledgeORCv1Deprecation, BaseLayer, ServerEP, ReportError);

bool Finished = false;
ServerEP.addHandler<remote::utils::TerminateSession>(
Expand Down Expand Up @@ -547,7 +547,8 @@ TEST(RemoteObjectLayer, EmitAndFinalizeFailure) {
};

RPCEndpoint ClientEP(*Channels.first, true);
RemoteObjectClientLayer<RPCEndpoint> Client(ClientEP, ReportError);
RemoteObjectClientLayer<RPCEndpoint> Client(AcknowledgeORCv1Deprecation,
ClientEP, ReportError);

RPCEndpoint ServerEP(*Channels.second, true);

Expand All @@ -556,9 +557,8 @@ TEST(RemoteObjectLayer, EmitAndFinalizeFailure) {
MockObjectLayer::SymbolLookupTable &SymTab) {
return 1;
});
RemoteObjectServerLayer<MockObjectLayer, RPCEndpoint> Server(BaseLayer,
ServerEP,
ReportError);
RemoteObjectServerLayer<MockObjectLayer, RPCEndpoint> Server(
AcknowledgeORCv1Deprecation, BaseLayer, ServerEP, ReportError);

bool Finished = false;
ServerEP.addHandler<remote::utils::TerminateSession>(
Expand Down