mc'ize some stuff, don't comment out .lcomm directive in -fverbose-asm mode.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@93860 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Chris Lattner 2010-01-19 06:01:04 +00:00
parent 9744d611d7
commit 4ed5438f48
2 changed files with 11 additions and 10 deletions

View File

@ -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;
}

View File

@ -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';
}