forked from OSchip/llvm-project
Delete DefinedBitcode.
Given that we almost always want to handle it as DefinedRegular, just use DefinedRegular. llvm-svn: 280226
This commit is contained in:
parent
29fa6ab7b1
commit
a6c9744a6c
|
@ -201,8 +201,10 @@ void BitcodeCompiler::add(BitcodeFile &F) {
|
|||
handleUndefinedAsmRefs(Sym, GV, AsmUndefinedRefs);
|
||||
continue;
|
||||
}
|
||||
auto *B = dyn_cast<DefinedBitcode>(S->body());
|
||||
if (!B || B->file() != &F)
|
||||
SymbolBody *B = S->body();
|
||||
if (B->kind() != SymbolBody::DefinedRegularKind)
|
||||
continue;
|
||||
if (B->File != &F)
|
||||
continue;
|
||||
|
||||
// We collect the set of symbols we want to internalize here
|
||||
|
|
|
@ -1474,8 +1474,6 @@ SymbolTableSection<ELFT>::getOutputSection(SymbolBody *Sym) {
|
|||
case SymbolBody::LazyArchiveKind:
|
||||
case SymbolBody::LazyObjectKind:
|
||||
break;
|
||||
case SymbolBody::DefinedBitcodeKind:
|
||||
llvm_unreachable("should have been replaced");
|
||||
}
|
||||
return nullptr;
|
||||
}
|
||||
|
|
|
@ -471,7 +471,7 @@ Symbol *SymbolTable<ELFT>::addBitcode(StringRef Name, uint8_t Binding,
|
|||
/*IsUsedInRegularObj*/ false, F);
|
||||
int Cmp = compareDefinedNonCommon<ELFT>(S, WasInserted, Binding);
|
||||
if (Cmp > 0)
|
||||
replaceBody<DefinedBitcode>(S, Name, StOther, Type, F);
|
||||
replaceBody<DefinedRegular<ELFT>>(S, Name, StOther, Type, F);
|
||||
else if (Cmp == 0)
|
||||
reportDuplicate(S->body(), F);
|
||||
return S;
|
||||
|
|
|
@ -81,8 +81,6 @@ static typename ELFT::uint getSymVA(const SymbolBody &Body,
|
|||
case SymbolBody::LazyObjectKind:
|
||||
assert(Body.symbol()->IsUsedInRegularObj && "lazy symbol reached writer");
|
||||
return 0;
|
||||
case SymbolBody::DefinedBitcodeKind:
|
||||
llvm_unreachable("should have been replaced");
|
||||
}
|
||||
llvm_unreachable("invalid symbol kind");
|
||||
}
|
||||
|
@ -192,16 +190,6 @@ Defined::Defined(Kind K, StringRef Name, uint8_t StOther, uint8_t Type)
|
|||
Defined::Defined(Kind K, uint32_t NameOffset, uint8_t StOther, uint8_t Type)
|
||||
: SymbolBody(K, NameOffset, StOther, Type) {}
|
||||
|
||||
DefinedBitcode::DefinedBitcode(StringRef Name, uint8_t StOther, uint8_t Type,
|
||||
BitcodeFile *F)
|
||||
: Defined(DefinedBitcodeKind, Name, StOther, Type) {
|
||||
this->File = F;
|
||||
}
|
||||
|
||||
bool DefinedBitcode::classof(const SymbolBody *S) {
|
||||
return S->kind() == DefinedBitcodeKind;
|
||||
}
|
||||
|
||||
Undefined::Undefined(StringRef Name, uint8_t StOther, uint8_t Type,
|
||||
InputFile *File)
|
||||
: SymbolBody(SymbolBody::UndefinedKind, Name, StOther, Type) {
|
||||
|
|
|
@ -45,7 +45,6 @@ public:
|
|||
DefinedRegularKind = DefinedFirst,
|
||||
SharedKind,
|
||||
DefinedCommonKind,
|
||||
DefinedBitcodeKind,
|
||||
DefinedSyntheticKind,
|
||||
DefinedLast = DefinedSyntheticKind,
|
||||
UndefinedKind,
|
||||
|
@ -159,14 +158,6 @@ public:
|
|||
static bool classof(const SymbolBody *S) { return S->isDefined(); }
|
||||
};
|
||||
|
||||
// The defined symbol in LLVM bitcode files.
|
||||
class DefinedBitcode : public Defined {
|
||||
public:
|
||||
DefinedBitcode(StringRef Name, uint8_t StOther, uint8_t Type, BitcodeFile *F);
|
||||
static bool classof(const SymbolBody *S);
|
||||
BitcodeFile *file() { return (BitcodeFile *)this->File; }
|
||||
};
|
||||
|
||||
template <class ELFT> class DefinedCommon : public Defined {
|
||||
public:
|
||||
DefinedCommon(StringRef N, uint64_t Size, uint64_t Alignment, uint8_t StOther,
|
||||
|
@ -217,6 +208,12 @@ public:
|
|||
llvm::ELF::STT_NOTYPE),
|
||||
Value(0), Size(0), Section(NullInputSection) {}
|
||||
|
||||
DefinedRegular(StringRef Name, uint8_t StOther, uint8_t Type, BitcodeFile *F)
|
||||
: Defined(SymbolBody::DefinedRegularKind, Name, StOther, Type), Value(0),
|
||||
Size(0), Section(NullInputSection) {
|
||||
this->File = F;
|
||||
}
|
||||
|
||||
static bool classof(const SymbolBody *S) {
|
||||
return S->kind() == SymbolBody::DefinedRegularKind;
|
||||
}
|
||||
|
@ -439,11 +436,11 @@ struct Symbol {
|
|||
// large and aligned enough to store any derived class of SymbolBody. We
|
||||
// assume that the size and alignment of ELF64LE symbols is sufficient for any
|
||||
// ELFT, and we verify this with the static_asserts in replaceBody.
|
||||
llvm::AlignedCharArrayUnion<
|
||||
DefinedBitcode, DefinedCommon<llvm::object::ELF64LE>,
|
||||
DefinedRegular<llvm::object::ELF64LE>,
|
||||
DefinedSynthetic<llvm::object::ELF64LE>, Undefined,
|
||||
SharedSymbol<llvm::object::ELF64LE>, LazyArchive, LazyObject>
|
||||
llvm::AlignedCharArrayUnion<DefinedCommon<llvm::object::ELF64LE>,
|
||||
DefinedRegular<llvm::object::ELF64LE>,
|
||||
DefinedSynthetic<llvm::object::ELF64LE>,
|
||||
Undefined, SharedSymbol<llvm::object::ELF64LE>,
|
||||
LazyArchive, LazyObject>
|
||||
Body;
|
||||
|
||||
SymbolBody *body() { return reinterpret_cast<SymbolBody *>(Body.buffer); }
|
||||
|
|
Loading…
Reference in New Issue