[elf2] Convert if/else cascade into a covered switch. NFC.
llvm-svn: 248049
diff --git a/lld/ELF/Writer.cpp b/lld/ELF/Writer.cpp
index b784ec6..b2d7611 100644
--- a/lld/ELF/Writer.cpp
+++ b/lld/ELF/Writer.cpp
@@ -730,18 +730,26 @@
uint32_t Type = RI.getType(IsMips64EL);
uintX_t SymVA;
- if (auto *DR = dyn_cast<DefinedRegular<ELFT>>(Body)) {
- SymVA = getSymVA<ELFT>(DR);
- } else if (auto *DA = dyn_cast<DefinedAbsolute<ELFT>>(Body)) {
- SymVA = DA->Sym.st_value;
- } else if (auto *S = dyn_cast<SharedSymbol<ELFT>>(Body)) {
+
+ switch (Body->kind()) {
+ case SymbolBody::DefinedRegularKind:
+ SymVA = getSymVA<ELFT>(cast<DefinedRegular<ELFT>>(Body));
+ break;
+ case SymbolBody::DefinedAbsoluteKind:
+ SymVA = cast<DefinedAbsolute<ELFT>>(Body)->Sym.st_value;
+ break;
+ case SymbolBody::DefinedCommonKind:
+ continue;
+ case SymbolBody::SharedKind:
if (!relocNeedsGOT(Type))
continue;
- SymVA = GotSec.getEntryAddr(*S);
+ SymVA = GotSec.getEntryAddr(*Body);
Type = R_X86_64_PC32;
- } else {
- // Skip unsupported for now.
+ break;
+ case SymbolBody::UndefinedKind:
continue;
+ case SymbolBody::LazyKind:
+ llvm_unreachable("Lazy symbol reached writer");
}
relocateOne(Buf, RI, Type, BaseAddr, SymVA);