OSDN Git Service

[Orc] Fix a use-after-move bug in the Orc C-bindings stack.
authorLang Hames <lhames@gmail.com>
Wed, 20 Jan 2016 17:39:52 +0000 (17:39 +0000)
committerLang Hames <lhames@gmail.com>
Wed, 20 Jan 2016 17:39:52 +0000 (17:39 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@258324 91177308-0d34-0410-b5e6-96231b3b80d8

lib/ExecutionEngine/Orc/OrcCBindingsStack.h

index aae6a99..3b2f9ab 100644 (file)
@@ -90,12 +90,12 @@ public:
                    std::unique_ptr<CompileCallbackMgr> CCMgr, 
                     IndirectStubsManagerBuilder IndirectStubsMgrBuilder)
     : DL(TM.createDataLayout()), CCMgr(std::move(CCMgr)),
+      IndirectStubsMgr(IndirectStubsMgrBuilder()),
       ObjectLayer(),
       CompileLayer(ObjectLayer, orc::SimpleCompiler(TM)),
       CODLayer(CompileLayer,
                [](Function &F) { std::set<Function*> S; S.insert(&F); return S; },
                *this->CCMgr, std::move(IndirectStubsMgrBuilder), false),
-      IndirectStubsMgr(IndirectStubsMgrBuilder()),
       CXXRuntimeOverrides([this](const std::string &S) { return mangle(S); }) {}
 
   ~OrcCBindingsStack() {
@@ -264,13 +264,13 @@ private:
   DataLayout DL;
   SectionMemoryManager CCMgrMemMgr;
 
+  std::unique_ptr<orc::IndirectStubsManager> IndirectStubsMgr;
+
   std::unique_ptr<CompileCallbackMgr> CCMgr;
   ObjLayerT ObjectLayer;
   CompileLayerT CompileLayer;
   CODLayerT CODLayer;
 
-  std::unique_ptr<orc::IndirectStubsManager> IndirectStubsMgr;
-
   std::vector<std::unique_ptr<GenericHandle>> GenericHandles;
   std::vector<unsigned> FreeHandleIndexes;