[lld] 9af90e2 - [ELF] De-template reportUndefinedSymbols. NFC
Fangrui Song via llvm-commits
llvm-commits at lists.llvm.org
Sat Feb 5 15:25:57 PST 2022
Author: Fangrui Song
Date: 2022-02-05T15:03:56-08:00
New Revision: 9af90e205aad3ce07df5e10ba8a03e8e1f9eed68
URL: https://github.com/llvm/llvm-project/commit/9af90e205aad3ce07df5e10ba8a03e8e1f9eed68
DIFF: https://github.com/llvm/llvm-project/commit/9af90e205aad3ce07df5e10ba8a03e8e1f9eed68.diff
LOG: [ELF] De-template reportUndefinedSymbols. NFC
My x86-64 lld executable is 16KiB smaller.
Added:
Modified:
lld/ELF/Relocations.cpp
lld/ELF/Relocations.h
lld/ELF/Writer.cpp
Removed:
################################################################################
diff --git a/lld/ELF/Relocations.cpp b/lld/ELF/Relocations.cpp
index 2b375c20a1d7..0ee00dbe1e91 100644
--- a/lld/ELF/Relocations.cpp
+++ b/lld/ELF/Relocations.cpp
@@ -719,7 +719,6 @@ static const Symbol *getAlternativeSpelling(const Undefined &sym,
return nullptr;
}
-template <class ELFT>
static void reportUndefinedSymbol(const UndefinedDiag &undef,
bool correctSpelling) {
Undefined &sym = *undef.sym;
@@ -737,7 +736,23 @@ static void reportUndefinedSymbol(const UndefinedDiag &undef,
}
};
- std::string msg = maybeReportDiscarded<ELFT>(sym);
+ std::string msg;
+ switch (config->ekind) {
+ case ELF32LEKind:
+ msg = maybeReportDiscarded<ELF32LE>(sym);
+ break;
+ case ELF32BEKind:
+ msg = maybeReportDiscarded<ELF32BE>(sym);
+ break;
+ case ELF64LEKind:
+ msg = maybeReportDiscarded<ELF64LE>(sym);
+ break;
+ case ELF64BEKind:
+ msg = maybeReportDiscarded<ELF64BE>(sym);
+ break;
+ default:
+ llvm_unreachable("");
+ }
if (msg.empty())
msg = "undefined " + visibility() + "symbol: " + toString(sym);
@@ -788,7 +803,7 @@ static void reportUndefinedSymbol(const UndefinedDiag &undef,
error(msg, ErrorTag::SymbolNotFound, {sym.getName()});
}
-template <class ELFT> void elf::reportUndefinedSymbols() {
+void elf::reportUndefinedSymbols() {
// Find the first "undefined symbol" diagnostic for each diagnostic, and
// collect all "referenced from" lines at the first diagnostic.
DenseMap<Symbol *, UndefinedDiag *> firstRef;
@@ -804,7 +819,7 @@ template <class ELFT> void elf::reportUndefinedSymbols() {
// Enable spell corrector for the first 2 diagnostics.
for (auto it : enumerate(undefs))
if (!it.value().locs.empty())
- reportUndefinedSymbol<ELFT>(it.value(), it.index() < 2);
+ reportUndefinedSymbol(it.value(), it.index() < 2);
undefs.clear();
}
@@ -2221,7 +2236,3 @@ template void elf::scanRelocations<ELF32LE>(InputSectionBase &);
template void elf::scanRelocations<ELF32BE>(InputSectionBase &);
template void elf::scanRelocations<ELF64LE>(InputSectionBase &);
template void elf::scanRelocations<ELF64BE>(InputSectionBase &);
-template void elf::reportUndefinedSymbols<ELF32LE>();
-template void elf::reportUndefinedSymbols<ELF32BE>();
-template void elf::reportUndefinedSymbols<ELF64LE>();
-template void elf::reportUndefinedSymbols<ELF64BE>();
diff --git a/lld/ELF/Relocations.h b/lld/ELF/Relocations.h
index 73f6970b80f1..3eecc02764a3 100644
--- a/lld/ELF/Relocations.h
+++ b/lld/ELF/Relocations.h
@@ -127,10 +127,9 @@ struct JumpInstrMod {
// Call reportUndefinedSymbols() after calling scanRelocations() to emit
// the diagnostics.
template <class ELFT> void scanRelocations(InputSectionBase &);
+void reportUndefinedSymbols();
void postScanRelocations();
-template <class ELFT> void reportUndefinedSymbols();
-
void hexagonTLSSymbolUpdate(ArrayRef<OutputSection *> outputSections);
bool hexagonNeedsTLSSymbol(ArrayRef<OutputSection *> outputSections);
diff --git a/lld/ELF/Writer.cpp b/lld/ELF/Writer.cpp
index 4042ca1a631c..23a310a60b48 100644
--- a/lld/ELF/Writer.cpp
+++ b/lld/ELF/Writer.cpp
@@ -1911,7 +1911,7 @@ template <class ELFT> void Writer<ELFT>::finalizeSections() {
scanRelocations<ELFT>(*sec);
}
- reportUndefinedSymbols<ELFT>();
+ reportUndefinedSymbols();
postScanRelocations();
}
}
More information about the llvm-commits
mailing list