Skip to content

Commit 759f9a7

Browse files
committed
Revert "[llvm-jitlink] Don't demote unreferenced definitions in -harness mode."
This reverts commit e137b55. This commit broke a test case. Reverting while I investigate.
1 parent 0462aef commit 759f9a7

File tree

1 file changed

+9
-4
lines changed

1 file changed

+9
-4
lines changed

llvm/tools/llvm-jitlink/llvm-jitlink.cpp

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -187,7 +187,7 @@ static Error applyHarnessPromotions(Session &S, LinkGraph &G) {
187187

188188
// If this graph is part of the test then promote any symbols referenced by
189189
// the harness to default scope, remove all symbols that clash with harness
190-
// definitions.
190+
// definitions, demote all other definitions.
191191
std::vector<Symbol *> DefinitionsToRemove;
192192
for (auto *Sym : G.defined_symbols()) {
193193

@@ -219,6 +219,10 @@ static Error applyHarnessPromotions(Session &S, LinkGraph &G) {
219219
} else if (S.HarnessDefinitions.count(Sym->getName())) {
220220
LLVM_DEBUG(dbgs() << " Externalizing " << Sym->getName() << "\n");
221221
DefinitionsToRemove.push_back(Sym);
222+
} else {
223+
LLVM_DEBUG(dbgs() << " Demoting " << Sym->getName() << "\n");
224+
Sym->setScope(Scope::Local);
225+
Sym->setLive(false);
222226
}
223227
}
224228

@@ -517,8 +521,7 @@ Error LLVMJITLinkObjectLinkingLayer::add(JITDylib &JD,
517521
return SymFlagsOrErr.takeError();
518522

519523
// Skip symbols not defined in this object file.
520-
if ((*SymFlagsOrErr & object::BasicSymbolRef::SF_Undefined) ||
521-
!(*SymFlagsOrErr & object::BasicSymbolRef::SF_Global))
524+
if (*SymFlagsOrErr & object::BasicSymbolRef::SF_Undefined)
522525
continue;
523526

524527
auto Name = Sym.getName();
@@ -548,8 +551,10 @@ Error LLVMJITLinkObjectLinkingLayer::add(JITDylib &JD,
548551
*SymFlags &= ~JITSymbolFlags::Exported;
549552
} else if (S.HarnessExternals.count(*Name)) {
550553
*SymFlags |= JITSymbolFlags::Exported;
551-
} else if (S.HarnessDefinitions.count(*Name))
554+
} else {
555+
// Skip symbols that aren't in the HarnessExternals set.
552556
continue;
557+
}
553558

554559
auto InternedName = S.ES.intern(*Name);
555560
SymbolFlags[InternedName] = std::move(*SymFlags);

0 commit comments

Comments
 (0)