]> granicus.if.org Git - llvm/commitdiff
Orc: PR33769: Don't rely on comparisons with default constructed iterators
authorDavid Blaikie <dblaikie@gmail.com>
Fri, 11 Aug 2017 16:38:28 +0000 (16:38 +0000)
committerDavid Blaikie <dblaikie@gmail.com>
Fri, 11 Aug 2017 16:38:28 +0000 (16:38 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@310729 91177308-0d34-0410-b5e6-96231b3b80d8

tools/lli/OrcLazyJIT.h

index 47a2acc4d7e60464e760f1fd0af73a8c64d118e6..6a1a7cc055c007906a0b7765f188cfe98c7ac03b 100644 (file)
 #ifndef LLVM_TOOLS_LLI_ORCLAZYJIT_H
 #define LLVM_TOOLS_LLI_ORCLAZYJIT_H
 
+#include "llvm/ADT/Optional.h"
 #include "llvm/ADT/STLExtras.h"
 #include "llvm/ADT/Twine.h"
 #include "llvm/ExecutionEngine/JITSymbol.h"
 #include "llvm/ExecutionEngine/Orc/CompileOnDemandLayer.h"
 #include "llvm/ExecutionEngine/Orc/CompileUtils.h"
 #include "llvm/ExecutionEngine/Orc/ExecutionUtils.h"
-#include "llvm/ExecutionEngine/Orc/IndirectionUtils.h"
 #include "llvm/ExecutionEngine/Orc/IRCompileLayer.h"
 #include "llvm/ExecutionEngine/Orc/IRTransformLayer.h"
+#include "llvm/ExecutionEngine/Orc/IndirectionUtils.h"
 #include "llvm/ExecutionEngine/Orc/LambdaResolver.h"
 #include "llvm/ExecutionEngine/Orc/RTDyldObjectLinkingLayer.h"
 #include "llvm/ExecutionEngine/RTDyldMemoryManager.h"
@@ -112,7 +113,7 @@ public:
     //   1) Search the JIT symbols.
     //   2) Check for C++ runtime overrides.
     //   3) Search the host process (LLI)'s symbol table.
-    if (ModulesHandle == CODLayerT::ModuleHandleT()) {
+    if (!ModulesHandle) {
       auto Resolver =
         orc::createLambdaResolver(
           [this](const std::string &Name) -> JITSymbol {
@@ -135,19 +136,18 @@ public:
       else
         return ModulesHandleOrErr.takeError();
 
-    } else
-      if (auto Err = CODLayer.addExtraModule(ModulesHandle, std::move(M)))
-        return Err;
+    } else if (auto Err = CODLayer.addExtraModule(*ModulesHandle, std::move(M)))
+      return Err;
 
     // Run the static constructors, and save the static destructor runner for
     // execution when the JIT is torn down.
     orc::CtorDtorRunner<CODLayerT> CtorRunner(std::move(CtorNames),
-                                              ModulesHandle);
+                                              *ModulesHandle);
     if (auto Err = CtorRunner.runViaLayer(CODLayer))
       return Err;
 
     IRStaticDestructorRunners.emplace_back(std::move(DtorNames),
-                                           ModulesHandle);
+                                           *ModulesHandle);
 
     return Error::success();
   }
@@ -190,7 +190,7 @@ private:
 
   orc::LocalCXXRuntimeOverrides CXXRuntimeOverrides;
   std::vector<orc::CtorDtorRunner<CODLayerT>> IRStaticDestructorRunners;
-  CODLayerT::ModuleHandleT ModulesHandle;
+  llvm::Optional<CODLayerT::ModuleHandleT> ModulesHandle;
 };
 
 int runOrcLazyJIT(std::vector<std::unique_ptr<Module>> Ms,