diff --git a/lib/CodeGen/AsmPrinter/AsmPrinter.cpp b/lib/CodeGen/AsmPrinter/AsmPrinter.cpp index 3e54f0992a5..bdebcd6eb86 100644 --- a/lib/CodeGen/AsmPrinter/AsmPrinter.cpp +++ b/lib/CodeGen/AsmPrinter/AsmPrinter.cpp @@ -169,26 +169,23 @@ void AsmPrinter::EmitGlobalVariable(const GlobalVariable *GV) { O.PadToColumn(MAI->getCommentColumn()); O << MAI->getCommentString() << ' '; WriteAsOperand(O, GV, /*PrintType=*/false, GV->getParent()); + O << '\n'; } if (GVKind.isCommon()) { // .comm _foo, 42, 4 - O << MAI->getCOMMDirective() << *GVSym << ',' << Size; - if (MAI->getCOMMDirectiveTakesAlignment()) - O << ',' << (MAI->getAlignmentIsInBytes() ? (1 << AlignLog) : AlignLog); + OutStreamer.EmitCommonSymbol(GVSym, Size, 1 << AlignLog); } else if (const char *LComm = MAI->getLCOMMDirective()) { // .lcomm _foo, 42, 4 O << LComm << *GVSym << ',' << Size; if (MAI->getLCOMMDirectiveTakesAlignment()) O << ',' << AlignLog; + O << '\n'; } else { // .local _foo O << "\t.local\t" << *GVSym << '\n'; // .comm _foo, 42, 4 - O << MAI->getCOMMDirective() << *GVSym << ',' << Size; - if (MAI->getCOMMDirectiveTakesAlignment()) - O << ',' << (MAI->getAlignmentIsInBytes() ? (1 << AlignLog) : AlignLog); + OutStreamer.EmitCommonSymbol(GVSym, Size, 1 << AlignLog); } - O << '\n'; return; } diff --git a/lib/MC/MCAsmStreamer.cpp b/lib/MC/MCAsmStreamer.cpp index 4768c623552..4e571ff98c5 100644 --- a/lib/MC/MCAsmStreamer.cpp +++ b/lib/MC/MCAsmStreamer.cpp @@ -151,9 +151,13 @@ void MCAsmStreamer::EmitSymbolDesc(MCSymbol *Symbol, unsigned DescValue) { void MCAsmStreamer::EmitCommonSymbol(MCSymbol *Symbol, unsigned Size, unsigned ByteAlignment) { - OS << ".comm " << *Symbol << ',' << Size; - if (ByteAlignment != 0) - OS << ',' << Log2_32(ByteAlignment); + OS << MAI.getCOMMDirective() << *Symbol << ',' << Size; + if (ByteAlignment != 0 && MAI.getCOMMDirectiveTakesAlignment()) { + if (MAI.getAlignmentIsInBytes()) + OS << ',' << ByteAlignment; + else + OS << ',' << Log2_32(ByteAlignment); + } OS << '\n'; }