Skip to content

Commit 0d56b95

Browse files
committed
LTO: Replace InputFile::Symbol::getFlags() with predicate accessors. NFC.
This makes the predicates independent of the flag representation and makes the code a little easier to read. llvm-svn: 298951
1 parent 9747d80 commit 0d56b95

File tree

7 files changed

+24
-25
lines changed

7 files changed

+24
-25
lines changed

lld/COFF/InputFiles.cpp

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -343,14 +343,12 @@ void BitcodeFile::parse() {
343343
MB.getBuffer(), Saver.save(ParentName + MB.getBufferIdentifier()))));
344344
for (const lto::InputFile::Symbol &ObjSym : Obj->symbols()) {
345345
StringRef SymName = Saver.save(ObjSym.getName());
346-
auto Flags = ObjSym.getFlags();
347346
Symbol *Sym;
348-
if (Flags & object::BasicSymbolRef::SF_Undefined) {
347+
if (ObjSym.isUndefined()) {
349348
Sym = Symtab->addUndefined(SymName, this, false);
350-
} else if (Flags & object::BasicSymbolRef::SF_Common) {
349+
} else if (ObjSym.isCommon()) {
351350
Sym = Symtab->addCommon(this, SymName, ObjSym.getCommonSize());
352-
} else if ((Flags & object::BasicSymbolRef::SF_Weak) &&
353-
(Flags & object::BasicSymbolRef::SF_Indirect)) {
351+
} else if (ObjSym.isWeak() && ObjSym.isIndirect()) {
354352
// Weak external.
355353
Sym = Symtab->addUndefined(SymName, this, true);
356354
std::string Fallback = ObjSym.getCOFFWeakExternalFallback();

lld/COFF/LTO.cpp

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -105,9 +105,7 @@ void BitcodeCompiler::add(BitcodeFile &F) {
105105
// flags an undefined in IR with a definition in ASM as prevailing.
106106
// Once IRObjectFile is fixed to report only one symbol this hack can
107107
// be removed.
108-
R.Prevailing =
109-
!(ObjSym.getFlags() & object::BasicSymbolRef::SF_Undefined) &&
110-
B->getFile() == &F;
108+
R.Prevailing = !ObjSym.isUndefined() && B->getFile() == &F;
111109
R.VisibleToRegularObj = Sym->IsUsedInRegularObj;
112110
if (R.Prevailing)
113111
undefine(Sym);

lld/ELF/InputFiles.cpp

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -792,8 +792,7 @@ static Symbol *createBitcodeSymbol(const std::vector<bool> &KeptComdats,
792792
const lto::InputFile::Symbol &ObjSym,
793793
BitcodeFile *F) {
794794
StringRef NameRef = Saver.save(ObjSym.getName());
795-
uint32_t Flags = ObjSym.getFlags();
796-
uint32_t Binding = (Flags & BasicSymbolRef::SF_Weak) ? STB_WEAK : STB_GLOBAL;
795+
uint32_t Binding = ObjSym.isWeak() ? STB_WEAK : STB_GLOBAL;
797796

798797
uint8_t Type = ObjSym.isTLS() ? STT_TLS : STT_NOTYPE;
799798
uint8_t Visibility = mapVisibility(ObjSym.getVisibility());
@@ -805,12 +804,12 @@ static Symbol *createBitcodeSymbol(const std::vector<bool> &KeptComdats,
805804
Visibility, Type, CanOmitFromDynSym,
806805
F);
807806

808-
if (Flags & BasicSymbolRef::SF_Undefined)
807+
if (ObjSym.isUndefined())
809808
return Symtab<ELFT>::X->addUndefined(NameRef, /*IsLocal=*/false, Binding,
810809
Visibility, Type, CanOmitFromDynSym,
811810
F);
812811

813-
if (Flags & BasicSymbolRef::SF_Common)
812+
if (ObjSym.isCommon())
814813
return Symtab<ELFT>::X->addCommon(NameRef, ObjSym.getCommonSize(),
815814
ObjSym.getCommonAlignment(), Binding,
816815
Visibility, STT_OBJECT, F);
@@ -956,7 +955,7 @@ std::vector<StringRef> LazyObjectFile::getBitcodeSymbols() {
956955
std::unique_ptr<lto::InputFile> Obj = check(lto::InputFile::create(this->MB));
957956
std::vector<StringRef> V;
958957
for (const lto::InputFile::Symbol &Sym : Obj->symbols())
959-
if (!(Sym.getFlags() & BasicSymbolRef::SF_Undefined))
958+
if (!Sym.isUndefined())
960959
V.push_back(Saver.save(Sym.getName()));
961960
return V;
962961
}

lld/ELF/LTO.cpp

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -125,9 +125,7 @@ void BitcodeCompiler::add(BitcodeFile &F) {
125125
// flags an undefined in IR with a definition in ASM as prevailing.
126126
// Once IRObjectFile is fixed to report only one symbol this hack can
127127
// be removed.
128-
R.Prevailing =
129-
!(ObjSym.getFlags() & object::BasicSymbolRef::SF_Undefined) &&
130-
B->File == &F;
128+
R.Prevailing = !ObjSym.isUndefined() && B->File == &F;
131129

132130
R.VisibleToRegularObj =
133131
Sym->IsUsedInRegularObj || (R.Prevailing && Sym->includeInDynsym());

llvm/include/llvm/LTO/LTO.h

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -152,6 +152,15 @@ class InputFile {
152152
skip();
153153
}
154154

155+
bool isUndefined() const {
156+
return Flags & object::BasicSymbolRef::SF_Undefined;
157+
}
158+
bool isCommon() const { return Flags & object::BasicSymbolRef::SF_Common; }
159+
bool isWeak() const { return Flags & object::BasicSymbolRef::SF_Weak; }
160+
bool isIndirect() const {
161+
return Flags & object::BasicSymbolRef::SF_Indirect;
162+
}
163+
155164
/// For COFF weak externals, returns the name of the symbol that is used
156165
/// as a fallback if the weak external remains undefined.
157166
std::string getCOFFWeakExternalFallback() const {
@@ -171,7 +180,6 @@ class InputFile {
171180
/// Returns the mangled name of the global.
172181
StringRef getName() const { return Name; }
173182

174-
uint32_t getFlags() const { return Flags; }
175183
GlobalValue::VisibilityTypes getVisibility() const {
176184
if (isGV())
177185
return getGV()->getVisibility();

llvm/lib/LTO/LTO.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -575,7 +575,7 @@ Error LTO::addRegularLTO(BitcodeModule BM, const SymbolResolution *&ResI,
575575
if (Sym.isGV()) {
576576
GlobalValue *GV = Sym.getGV();
577577
if (Res.Prevailing) {
578-
if (Sym.getFlags() & object::BasicSymbolRef::SF_Undefined)
578+
if (Sym.isUndefined())
579579
continue;
580580
Keep.push_back(GV);
581581
switch (GV->getLinkage()) {
@@ -608,7 +608,7 @@ Error LTO::addRegularLTO(BitcodeModule BM, const SymbolResolution *&ResI,
608608
// Common resolution: collect the maximum size/alignment over all commons.
609609
// We also record if we see an instance of a common as prevailing, so that
610610
// if none is prevailing we can ignore it later.
611-
if (Sym.getFlags() & object::BasicSymbolRef::SF_Common) {
611+
if (Sym.isCommon()) {
612612
// FIXME: We should figure out what to do about commons defined by asm.
613613
// For now they aren't reported correctly by ModuleSymbolTable.
614614
auto &CommonRes = RegularLTO.Commons[Sym.getGV()->getName()];

llvm/tools/gold/gold-plugin.cpp

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -496,8 +496,6 @@ static ld_plugin_status claim_file_hook(const ld_plugin_input_file *file,
496496
sys::path::filename(Obj->getSourceFileName()).str();
497497

498498
for (auto &Sym : Obj->symbols()) {
499-
uint32_t Symflags = Sym.getFlags();
500-
501499
cf.syms.push_back(ld_plugin_symbol());
502500
ld_plugin_symbol &sym = cf.syms.back();
503501
sym.version = nullptr;
@@ -523,13 +521,13 @@ static ld_plugin_status claim_file_hook(const ld_plugin_input_file *file,
523521
break;
524522
}
525523

526-
if (Symflags & object::BasicSymbolRef::SF_Undefined) {
524+
if (Sym.isUndefined()) {
527525
sym.def = LDPK_UNDEF;
528-
if (Symflags & object::BasicSymbolRef::SF_Weak)
526+
if (Sym.isWeak())
529527
sym.def = LDPK_WEAKUNDEF;
530-
} else if (Symflags & object::BasicSymbolRef::SF_Common)
528+
} else if (Sym.isCommon())
531529
sym.def = LDPK_COMMON;
532-
else if (Symflags & object::BasicSymbolRef::SF_Weak)
530+
else if (Sym.isWeak())
533531
sym.def = LDPK_WEAKDEF;
534532
else
535533
sym.def = LDPK_DEF;

0 commit comments

Comments
 (0)