In the same vein as D139439, the patch is not NFC as there is no way to check all downstream implementations but the patch seems pretty safe.
Differential Revision: https://reviews.llvm.org/D139548
uint64_t Size = 0, Align ByteAlignment = Align(1),
SMLoc L = SMLoc()) override;
void emitTBSSSymbol(MCSection *Section, MCSymbol *Symbol, uint64_t Size,
- unsigned ByteAlignment = 0) override;
+ Align ByteAlignment = Align(1)) override;
void emitValueImpl(const MCExpr *Value, unsigned Size,
SMLoc Loc = SMLoc()) override;
/// \param ByteAlignment - The alignment of the thread local common symbol
/// if non-zero. This must be a power of 2 on some targets.
virtual void emitTBSSSymbol(MCSection *Section, MCSymbol *Symbol,
- uint64_t Size, unsigned ByteAlignment = 0);
+ uint64_t Size, Align ByteAlignment = Align(1));
/// @}
/// \name Generating Data
uint64_t Size = 0, Align ByteAlignment = Align(1),
SMLoc Loc = SMLoc()) override;
void emitTBSSSymbol(MCSection *Section, MCSymbol *Symbol, uint64_t Size,
- unsigned ByteAlignment = 0) override;
+ Align ByteAlignment = Align(1)) override;
void emitIdent(StringRef IdentString) override;
void emitZerofill(MCSection *Section, MCSymbol *Symbol, uint64_t Size,
Align ByteAlignment, SMLoc Loc = SMLoc()) override;
void emitTBSSSymbol(MCSection *Section, MCSymbol *Symbol, uint64_t Size,
- unsigned ByteAlignment) override;
+ Align ByteAlignment) override;
void emitIdent(StringRef IdentString) override;
void emitWinEHHandlerData(SMLoc Loc) override;
void emitCGProfileEntry(const MCSymbolRefExpr *From,
if (GVKind.isThreadBSS()) {
TheSection = getObjFileLowering().getTLSBSSSection();
- OutStreamer->emitTBSSSymbol(TheSection, MangSym, Size, Alignment.value());
+ OutStreamer->emitTBSSSymbol(TheSection, MangSym, Size, Alignment);
} else if (GVKind.isThreadData()) {
OutStreamer->switchSection(TheSection);
SMLoc Loc = SMLoc()) override;
void emitTBSSSymbol(MCSection *Section, MCSymbol *Symbol, uint64_t Size,
- unsigned ByteAlignment = 0) override;
+ Align ByteAlignment = Align(1)) override;
void emitBinaryData(StringRef Data) override;
// This depends that the symbol has already been mangled from the original,
// e.g. _a.
void MCAsmStreamer::emitTBSSSymbol(MCSection *Section, MCSymbol *Symbol,
- uint64_t Size, unsigned ByteAlignment) {
+ uint64_t Size, Align ByteAlignment) {
assignFragment(Symbol, &Section->getDummyFragment());
assert(Symbol && "Symbol shouldn't be NULL!");
// Output align if we have it. We default to 1 so don't bother printing
// that.
- if (ByteAlignment > 1) OS << ", " << Log2_32(ByteAlignment);
+ if (ByteAlignment > 1)
+ OS << ", " << Log2(ByteAlignment);
EmitEOL();
}
}
void MCELFStreamer::emitTBSSSymbol(MCSection *Section, MCSymbol *Symbol,
- uint64_t Size, unsigned ByteAlignment) {
+ uint64_t Size, Align ByteAlignment) {
llvm_unreachable("ELF doesn't support this directive");
}
uint64_t Size = 0, Align ByteAlignment = Align(1),
SMLoc Loc = SMLoc()) override;
void emitTBSSSymbol(MCSection *Section, MCSymbol *Symbol, uint64_t Size,
- unsigned ByteAlignment = 0) override;
+ Align ByteAlignment = Align(1)) override;
void emitIdent(StringRef IdentString) override {
llvm_unreachable("macho doesn't support this directive");
// This should always be called with the thread local bss section. Like the
// .zerofill directive this doesn't actually switch sections on us.
void MCMachOStreamer::emitTBSSSymbol(MCSection *Section, MCSymbol *Symbol,
- uint64_t Size, unsigned ByteAlignment) {
- emitZerofill(Section, Symbol, Size, Align(ByteAlignment));
+ uint64_t Size, Align ByteAlignment) {
+ emitZerofill(Section, Symbol, Size, ByteAlignment);
}
void MCMachOStreamer::emitInstToData(const MCInst &Inst,
getContext().getMachOSection("__DATA", "__thread_bss",
MachO::S_THREAD_LOCAL_ZEROFILL, 0,
SectionKind::getThreadBSS()),
- Sym, Size, 1 << Pow2Alignment);
+ Sym, Size, Align(1ULL << Pow2Alignment));
return false;
}
void MCStreamer::emitLocalCommonSymbol(MCSymbol *Symbol, uint64_t Size,
Align ByteAlignment) {}
void MCStreamer::emitTBSSSymbol(MCSection *Section, MCSymbol *Symbol,
- uint64_t Size, unsigned ByteAlignment) {}
+ uint64_t Size, Align ByteAlignment) {}
void MCStreamer::changeSection(MCSection *, const MCExpr *) {}
void MCStreamer::emitWeakReference(MCSymbol *Alias, const MCSymbol *Symbol) {}
void MCStreamer::emitBytes(StringRef Data) {}
}
void MCWasmStreamer::emitTBSSSymbol(MCSection *Section, MCSymbol *Symbol,
- uint64_t Size, unsigned ByteAlignment) {
+ uint64_t Size, Align ByteAlignment) {
llvm_unreachable("Wasm doesn't support this directive");
}
}
void MCWinCOFFStreamer::emitTBSSSymbol(MCSection *Section, MCSymbol *Symbol,
- uint64_t Size, unsigned ByteAlignment) {
+ uint64_t Size, Align ByteAlignment) {
llvm_unreachable("not implemented");
}