summaryrefslogtreecommitdiffstats
path: root/llvm/lib/ExecutionEngine/Orc/OrcMCJITReplacement.h
diff options
context:
space:
mode:
authorLang Hames <lhames@gmail.com>2017-06-23 21:45:29 +0000
committerLang Hames <lhames@gmail.com>2017-06-23 21:45:29 +0000
commit2c19c1be56e7b365cb893003ca896755ac3ddfff (patch)
tree7355e91987c626b585d20b2b584ed12f9a59afa3 /llvm/lib/ExecutionEngine/Orc/OrcMCJITReplacement.h
parent36206206cdb20b17f8cf80b10b483af6efd4880e (diff)
downloadbcm5719-llvm-2c19c1be56e7b365cb893003ca896755ac3ddfff.tar.gz
bcm5719-llvm-2c19c1be56e7b365cb893003ca896755ac3ddfff.zip
[ORC] Move ORC IR layer interface from addModuleSet to addModule and fix the
module type as std::shared_ptr<Module>. llvm-svn: 306166
Diffstat (limited to 'llvm/lib/ExecutionEngine/Orc/OrcMCJITReplacement.h')
-rw-r--r--llvm/lib/ExecutionEngine/Orc/OrcMCJITReplacement.h15
1 files changed, 11 insertions, 4 deletions
diff --git a/llvm/lib/ExecutionEngine/Orc/OrcMCJITReplacement.h b/llvm/lib/ExecutionEngine/Orc/OrcMCJITReplacement.h
index 000ab0006ba..944eba7bc89 100644
--- a/llvm/lib/ExecutionEngine/Orc/OrcMCJITReplacement.h
+++ b/llvm/lib/ExecutionEngine/Orc/OrcMCJITReplacement.h
@@ -191,10 +191,15 @@ public:
} else {
assert(M->getDataLayout() == getDataLayout() && "DataLayout Mismatch");
}
- Modules.push_back(std::move(M));
- std::vector<Module *> Ms;
- Ms.push_back(&*Modules.back());
- LazyEmitLayer.addModuleSet(std::move(Ms), &MemMgr, &Resolver);
+ auto *MPtr = M.release();
+ Retain[MPtr] = false;
+ auto Deleter =
+ [this](Module *Mod) {
+ if (!Retain[Mod])
+ delete Mod;
+ };
+ LocalModules.push_back(std::shared_ptr<Module>(MPtr, std::move(Deleter)));
+ LazyEmitLayer.addModule(LocalModules.back(), &MemMgr, &Resolver);
}
void addObjectFile(std::unique_ptr<object::ObjectFile> O) override {
@@ -381,6 +386,8 @@ private:
std::map<ObjectLayerT::ObjHandleT, SectionAddrSet, ObjHandleCompare>
UnfinalizedSections;
+ std::map<Module*, bool> Retain;
+ std::vector<std::shared_ptr<Module>> LocalModules;
std::vector<object::OwningBinary<object::Archive>> Archives;
};
OpenPOWER on IntegriCloud