diff options
Diffstat (limited to 'llvm/lib/ExecutionEngine/Orc/ObjectLinkingLayer.cpp')
-rw-r--r-- | llvm/lib/ExecutionEngine/Orc/ObjectLinkingLayer.cpp | 12 |
1 files changed, 6 insertions, 6 deletions
diff --git a/llvm/lib/ExecutionEngine/Orc/ObjectLinkingLayer.cpp b/llvm/lib/ExecutionEngine/Orc/ObjectLinkingLayer.cpp index c1c5540..c5342c4 100644 --- a/llvm/lib/ExecutionEngine/Orc/ObjectLinkingLayer.cpp +++ b/llvm/lib/ExecutionEngine/Orc/ObjectLinkingLayer.cpp @@ -65,6 +65,8 @@ JITSymbolFlags getJITSymbolFlagsForSymbol(Symbol &Sym) { if (Sym.getScope() == Scope::Default) Flags |= JITSymbolFlags::Exported; + else if (Sym.getScope() == Scope::SideEffectsOnly) + Flags |= JITSymbolFlags::MaterializationSideEffectsOnly; if (Sym.isCallable()) Flags |= JITSymbolFlags::Callable; @@ -236,7 +238,7 @@ public: SymbolMap InternedResult; for (auto *Sym : G.defined_symbols()) - if (Sym->getScope() != Scope::Local) { + if (Sym->getScope() < Scope::SideEffectsOnly) { auto InternedName = ES.intern(Sym->getName()); auto Ptr = getJITSymbolPtrForSymbol(*Sym, G.getTargetTriple()); auto Flags = getJITSymbolFlagsForSymbol(*Sym); @@ -249,7 +251,7 @@ public: } for (auto *Sym : G.absolute_symbols()) - if (Sym->getScope() != Scope::Local) { + if (Sym->getScope() < Scope::SideEffectsOnly) { auto InternedName = ES.intern(Sym->getName()); auto Ptr = getJITSymbolPtrForSymbol(*Sym, G.getTargetTriple()); auto Flags = getJITSymbolFlagsForSymbol(*Sym); @@ -281,11 +283,9 @@ public: // If this is a materialization-side-effects only symbol then bump // the counter and remove in from the result, otherwise make sure that // it's defined. - if (Flags.hasMaterializationSideEffectsOnly()) { + if (Flags.hasMaterializationSideEffectsOnly()) ++NumMaterializationSideEffectsOnlySymbols; - InternedResult.erase(Sym); - continue; - } else if (I == InternedResult.end()) + else if (I == InternedResult.end()) MissingSymbols.push_back(Sym); else if (Layer.OverrideObjectFlags) I->second.setFlags(Flags); |