Index: llvm/lib/ExecutionEngine/Orc/ObjectLinkingLayer.cpp =================================================================== --- llvm/lib/ExecutionEngine/Orc/ObjectLinkingLayer.cpp +++ llvm/lib/ExecutionEngine/Orc/ObjectLinkingLayer.cpp @@ -329,7 +329,7 @@ Error modifyPassConfig(LinkGraph &LG, PassConfiguration &Config) override { // Add passes to mark duplicate defs as should-discard, and to walk the // link graph to build the symbol dependence graph. - Config.PrePrunePasses.push_back([this](LinkGraph &G) { + Config.PostPrunePasses.push_back([this](LinkGraph &G) { return claimOrExternalizeWeakAndCommonSymbols(G); }); @@ -426,7 +426,8 @@ std::vector> NameToSym; auto ProcessSymbol = [&](Symbol *Sym) { - if (Sym->hasName() && Sym->getLinkage() == Linkage::Weak && + if (Sym->isLive() && Sym->hasName() && + Sym->getLinkage() == Linkage::Weak && Sym->getScope() != Scope::Local) { auto Name = ES.intern(Sym->getName()); if (!MR->getSymbols().count(ES.intern(Sym->getName()))) {