From: Saleem Abdulrasool Date: Tue, 7 Jan 2014 02:28:50 +0000 (+0000) Subject: ARM Streamer: print out tag names X-Git-Url: http://plrg.eecs.uci.edu/git/?a=commitdiff_plain;h=9d76f405758717e2f8c81c2f5a779ad0ffe2051e;p=oota-llvm.git ARM Streamer: print out tag names If using verbose asm, print out the friendly name of the tag if possible. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@198663 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/lib/Target/ARM/MCTargetDesc/ARMELFStreamer.cpp b/lib/Target/ARM/MCTargetDesc/ARMELFStreamer.cpp index 1fb3beabd9a..fd9151f2d20 100644 --- a/lib/Target/ARM/MCTargetDesc/ARMELFStreamer.cpp +++ b/lib/Target/ARM/MCTargetDesc/ARMELFStreamer.cpp @@ -111,6 +111,7 @@ class ARMELFStreamer; class ARMTargetAsmStreamer : public ARMTargetStreamer { formatted_raw_ostream &OS; MCInstPrinter &InstPrinter; + bool IsVerboseAsm; virtual void emitFnStart(); virtual void emitFnEnd(); @@ -133,12 +134,14 @@ class ARMTargetAsmStreamer : public ARMTargetStreamer { virtual void finishAttributeSection(); public: - ARMTargetAsmStreamer(formatted_raw_ostream &OS, MCInstPrinter &InstPrinter); + ARMTargetAsmStreamer(formatted_raw_ostream &OS, MCInstPrinter &InstPrinter, + bool VerboseAsm); }; ARMTargetAsmStreamer::ARMTargetAsmStreamer(formatted_raw_ostream &OS, - MCInstPrinter &InstPrinter) - : OS(OS), InstPrinter(InstPrinter) {} + MCInstPrinter &InstPrinter, + bool VerboseAsm) + : OS(OS), InstPrinter(InstPrinter), IsVerboseAsm(VerboseAsm) {} void ARMTargetAsmStreamer::emitFnStart() { OS << "\t.fnstart\n"; } void ARMTargetAsmStreamer::emitFnEnd() { OS << "\t.fnend\n"; } void ARMTargetAsmStreamer::emitCantUnwind() { OS << "\t.cantunwind\n"; } @@ -179,7 +182,13 @@ void ARMTargetAsmStreamer::emitRegSave(const SmallVectorImpl &RegList, void ARMTargetAsmStreamer::switchVendor(StringRef Vendor) { } void ARMTargetAsmStreamer::emitAttribute(unsigned Attribute, unsigned Value) { - OS << "\t.eabi_attribute\t" << Attribute << ", " << Twine(Value) << "\n"; + OS << "\t.eabi_attribute\t" << Attribute << ", " << Twine(Value); + if (IsVerboseAsm) { + StringRef Name = ARMBuildAttrs::AttrTypeAsString(Attribute); + if (!Name.empty()) + OS << "\t@ " << Name; + } + OS << "\n"; } void ARMTargetAsmStreamer::emitTextAttribute(unsigned Attribute, StringRef String) { @@ -189,6 +198,11 @@ void ARMTargetAsmStreamer::emitTextAttribute(unsigned Attribute, break; default: OS << "\t.eabi_attribute\t" << Attribute << ", \"" << String << "\""; + if (IsVerboseAsm) { + StringRef Name = ARMBuildAttrs::AttrTypeAsString(Attribute); + if (!Name.empty()) + OS << "\t@ " << Name; + } break; } OS << "\n"; @@ -202,6 +216,8 @@ void ARMTargetAsmStreamer::emitIntTextAttribute(unsigned Attribute, OS << "\t.eabi_attribute\t" << Attribute << ", " << IntValue; if (!StringValue.empty()) OS << ", \"" << StringValue << "\""; + if (IsVerboseAsm) + OS << "\t@ " << ARMBuildAttrs::AttrTypeAsString(Attribute); break; } OS << "\n"; @@ -1177,7 +1193,8 @@ MCStreamer *createMCAsmStreamer(MCContext &Ctx, formatted_raw_ostream &OS, bool useDwarfDirectory, MCInstPrinter *InstPrint, MCCodeEmitter *CE, MCAsmBackend *TAB, bool ShowInst) { - ARMTargetAsmStreamer *S = new ARMTargetAsmStreamer(OS, *InstPrint); + ARMTargetAsmStreamer *S = new ARMTargetAsmStreamer(OS, *InstPrint, + isVerboseAsm); return llvm::createAsmStreamer(Ctx, S, OS, isVerboseAsm, useLoc, useCFI, useDwarfDirectory, InstPrint, CE, TAB,