diff options
author | Chris Lattner <sabre@nondot.org> | 2010-01-25 18:33:40 +0000 |
---|---|---|
committer | Chris Lattner <sabre@nondot.org> | 2010-01-25 18:33:40 +0000 |
commit | bc696445e17308d64e579589642cac29dcbac87f (patch) | |
tree | 4b47e6171922bea8f77b047ce40752813871507c /llvm/lib | |
parent | bc8f63853105b3712c665a80b17b77f1d27fa141 (diff) | |
download | bcm5719-llvm-bc696445e17308d64e579589642cac29dcbac87f.tar.gz bcm5719-llvm-bc696445e17308d64e579589642cac29dcbac87f.zip |
emit ELF .type directives through MCStreamer instead of doing it textually.
llvm-svn: 94436
Diffstat (limited to 'llvm/lib')
-rw-r--r-- | llvm/lib/CodeGen/AsmPrinter/AsmPrinter.cpp | 9 | ||||
-rw-r--r-- | llvm/lib/MC/MCAsmStreamer.cpp | 2 | ||||
-rw-r--r-- | llvm/lib/Target/X86/AsmPrinter/X86AsmPrinter.cpp | 2 |
3 files changed, 4 insertions, 9 deletions
diff --git a/llvm/lib/CodeGen/AsmPrinter/AsmPrinter.cpp b/llvm/lib/CodeGen/AsmPrinter/AsmPrinter.cpp index ecf18dad6b3..8935445ade5 100644 --- a/llvm/lib/CodeGen/AsmPrinter/AsmPrinter.cpp +++ b/llvm/lib/CodeGen/AsmPrinter/AsmPrinter.cpp @@ -156,13 +156,8 @@ void AsmPrinter::EmitGlobalVariable(const GlobalVariable *GV) { MCSymbol *GVSym = GetGlobalValueSymbol(GV); printVisibility(GVSym, GV->getVisibility()); - if (MAI->hasDotTypeDotSizeDirective()) { - O << "\t.type\t" << *GVSym; - if (MAI->getCommentString()[0] != '@') - O << ",@object\n"; - else - O << ",%object\n"; - } + if (MAI->hasDotTypeDotSizeDirective()) + OutStreamer.EmitSymbolAttribute(GVSym, MCSA_ELF_TypeObject); SectionKind GVKind = TargetLoweringObjectFile::getKindForGlobal(GV, TM); diff --git a/llvm/lib/MC/MCAsmStreamer.cpp b/llvm/lib/MC/MCAsmStreamer.cpp index f577ad4b4b6..9d9f46a3786 100644 --- a/llvm/lib/MC/MCAsmStreamer.cpp +++ b/llvm/lib/MC/MCAsmStreamer.cpp @@ -234,7 +234,7 @@ void MCAsmStreamer::EmitSymbolAttribute(MCSymbol *Symbol, case MCSA_ELF_TypeCommon: /// .type _foo, STT_COMMON # aka @common case MCSA_ELF_TypeNoType: /// .type _foo, STT_NOTYPE # aka @notype assert(MAI.hasDotTypeDotSizeDirective() && "Symbol Attr not supported"); - OS << ".type " << *Symbol << ',' + OS << "\t.type " << *Symbol << ',' << ((MAI.getCommentString()[0] != '@') ? '@' : '%'); switch (Attribute) { default: assert(0 && "Unknown ELF .type"); diff --git a/llvm/lib/Target/X86/AsmPrinter/X86AsmPrinter.cpp b/llvm/lib/Target/X86/AsmPrinter/X86AsmPrinter.cpp index 2ffa18ff5ac..85ff09a3be5 100644 --- a/llvm/lib/Target/X86/AsmPrinter/X86AsmPrinter.cpp +++ b/llvm/lib/Target/X86/AsmPrinter/X86AsmPrinter.cpp @@ -106,7 +106,7 @@ void X86AsmPrinter::emitFunctionHeader(const MachineFunction &MF) { printVisibility(CurrentFnSym, F->getVisibility()); if (Subtarget->isTargetELF()) { - O << "\t.type\t" << *CurrentFnSym << ",@function\n"; + OutStreamer.EmitSymbolAttribute(CurrentFnSym, MCSA_ELF_TypeFunction); } else if (Subtarget->isTargetCygMing()) { O << "\t.def\t " << *CurrentFnSym; O << ";\t.scl\t" << |