Skip to content

Commit

Permalink
[Alignment][NFC] Use Align in MCSymbol::setCommon
Browse files Browse the repository at this point in the history
This patch supersedes D138705.

Differential Revision: https://reviews.llvm.org/D139819
  • Loading branch information
gchatelet committed Dec 12, 2022
1 parent 40cb4fd commit 710a834
Show file tree
Hide file tree
Showing 4 changed files with 10 additions and 12 deletions.
16 changes: 7 additions & 9 deletions llvm/include/llvm/MC/MCSymbol.h
Expand Up @@ -340,16 +340,14 @@ class MCSymbol {
/// Mark this symbol as being 'common'.
///
/// \param Size - The size of the symbol.
/// \param Align - The alignment of the symbol.
/// \param Alignment - The alignment of the symbol.
/// \param Target - Is the symbol a target-specific common-like symbol.
void setCommon(uint64_t Size, unsigned Align, bool Target = false) {
void setCommon(uint64_t Size, Align Alignment, bool Target = false) {
assert(getOffset() == 0);
CommonSize = Size;
SymbolContents = Target ? SymContentsTargetCommon : SymContentsCommon;

assert((!Align || isPowerOf2_32(Align)) &&
"Alignment must be a power of 2");
unsigned Log2Align = Log2_32(Align) + 1;
unsigned Log2Align = encode(Alignment);
assert(Log2Align < (1U << NumCommonAlignmentBits) &&
"Out of range alignment");
CommonAlignLog2 = Log2Align;
Expand All @@ -364,17 +362,17 @@ class MCSymbol {
/// Declare this symbol as being 'common'.
///
/// \param Size - The size of the symbol.
/// \param Align - The alignment of the symbol.
/// \param Alignment - The alignment of the symbol.
/// \param Target - Is the symbol a target-specific common-like symbol.
/// \return True if symbol was already declared as a different type
bool declareCommon(uint64_t Size, unsigned Align, bool Target = false) {
bool declareCommon(uint64_t Size, unsigned Alignment, bool Target = false) {
assert(isCommon() || getOffset() == 0);
if(isCommon()) {
if (CommonSize != Size || getCommonAlignment() != Align ||
if (CommonSize != Size || getCommonAlignment() != Alignment ||
isTargetCommon() != Target)
return true;
} else
setCommon(Size, Align, Target);
setCommon(Size, Align(Alignment), Target);
return false;
}

Expand Down
2 changes: 1 addition & 1 deletion llvm/lib/MC/MCMachOStreamer.cpp
Expand Up @@ -437,7 +437,7 @@ void MCMachOStreamer::emitCommonSymbol(MCSymbol *Symbol, uint64_t Size,

getAssembler().registerSymbol(*Symbol);
Symbol->setExternal(true);
Symbol->setCommon(Size, ByteAlignment.value());
Symbol->setCommon(Size, ByteAlignment);
}

void MCMachOStreamer::emitLocalCommonSymbol(MCSymbol *Symbol, uint64_t Size,
Expand Down
2 changes: 1 addition & 1 deletion llvm/lib/MC/MCWinCOFFStreamer.cpp
Expand Up @@ -274,7 +274,7 @@ void MCWinCOFFStreamer::emitCommonSymbol(MCSymbol *S, uint64_t Size,

getAssembler().registerSymbol(*Symbol);
Symbol->setExternal(true);
Symbol->setCommon(Size, ByteAlignment.value());
Symbol->setCommon(Size, ByteAlignment);

if (!T.isWindowsMSVCEnvironment() && ByteAlignment > 1) {
SmallString<128> Directive;
Expand Down
2 changes: 1 addition & 1 deletion llvm/lib/MC/MCXCOFFStreamer.cpp
Expand Up @@ -95,7 +95,7 @@ void MCXCOFFStreamer::emitCommonSymbol(MCSymbol *Symbol, uint64_t Size,
getAssembler().registerSymbol(*Symbol);
Symbol->setExternal(cast<MCSymbolXCOFF>(Symbol)->getStorageClass() !=
XCOFF::C_HIDEXT);
Symbol->setCommon(Size, ByteAlignment.value());
Symbol->setCommon(Size, ByteAlignment);

// Default csect align is 4, but common symbols have explicit alignment values
// and we should honor it.
Expand Down

0 comments on commit 710a834

Please sign in to comment.