summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSaleem Abdulrasool <compnerd@compnerd.org>2014-01-07 02:28:50 +0000
committerSaleem Abdulrasool <compnerd@compnerd.org>2014-01-07 02:28:50 +0000
commit9d76f405758717e2f8c81c2f5a779ad0ffe2051e (patch)
tree75cbc13052f0fa8a82970515b50e6c0c641dc40f
parent8e129852fb27505fcc606601b256d1eb39676437 (diff)
downloadllvm-9d76f405758717e2f8c81c2f5a779ad0ffe2051e.tar.gz
llvm-9d76f405758717e2f8c81c2f5a779ad0ffe2051e.tar.bz2
llvm-9d76f405758717e2f8c81c2f5a779ad0ffe2051e.tar.xz
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
-rw-r--r--lib/Target/ARM/MCTargetDesc/ARMELFStreamer.cpp27
1 files changed, 22 insertions, 5 deletions
diff --git a/lib/Target/ARM/MCTargetDesc/ARMELFStreamer.cpp b/lib/Target/ARM/MCTargetDesc/ARMELFStreamer.cpp
index 1fb3beabd9..fd9151f2d2 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<unsigned> &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,