OSDN Git Service

[Kaleidoscope][BuildingAJIT] Fix a bug in the symbol resolver in Chapter2.
authorLang Hames <lhames@gmail.com>
Thu, 26 May 2016 19:44:33 +0000 (19:44 +0000)
committerLang Hames <lhames@gmail.com>
Thu, 26 May 2016 19:44:33 +0000 (19:44 +0000)
Symbol resolution should be done on the top layer of the stack unless there's a
good reason to do otherwise. In this case it would have worked because
OptimizeLayer::addModuleSet eagerly passes all modules down to the
CompileLayer, meaning that searches in CompileLayer will find the definitions.
In later chapters where the top layer's addModuleSet isn't a pass-through, this
would break.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@270899 91177308-0d34-0410-b5e6-96231b3b80d8

examples/Kaleidoscope/BuildingAJIT/Chapter2/KaleidoscopeJIT.h

index 6ea559b..754c382 100644 (file)
@@ -71,7 +71,7 @@ public:
     // Lambda 2: Search for external symbols in the host process.
     auto Resolver = createLambdaResolver(
         [&](const std::string &Name) {
-          if (auto Sym = CompileLayer.findSymbol(Name, false))
+          if (auto Sym = OptimizeLayer.findSymbol(Name, false))
             return RuntimeDyld::SymbolInfo(Sym.getAddress(), Sym.getFlags());
           return RuntimeDyld::SymbolInfo(nullptr);
         },