diff options
Diffstat (limited to 'lib/MC/MCAsmStreamer.cpp')
| -rw-r--r-- | lib/MC/MCAsmStreamer.cpp | 21 | 
1 files changed, 19 insertions, 2 deletions
diff --git a/lib/MC/MCAsmStreamer.cpp b/lib/MC/MCAsmStreamer.cpp index 7a23aecf2970..2c7e1c4c90d1 100644 --- a/lib/MC/MCAsmStreamer.cpp +++ b/lib/MC/MCAsmStreamer.cpp @@ -68,6 +68,9 @@ public:    /// isVerboseAsm - Return true if this streamer supports verbose assembly at    /// all.    virtual bool isVerboseAsm() const { return IsVerboseAsm; } +   +  /// hasRawTextSupport - We support EmitRawText. +  virtual bool hasRawTextSupport() const { return true; }    /// AddComment - Add a comment that can be emitted to the generated .s    /// file if applicable as a QoI issue to make the output of the compiler @@ -145,6 +148,11 @@ public:    virtual void EmitInstruction(const MCInst &Inst); +  /// EmitRawText - If this file is backed by a assembly streamer, this dumps +  /// the specified string in the output .s file.  This capability is +  /// indicated by the hasRawTextSupport() predicate. +  virtual void EmitRawText(StringRef String); +      virtual void Finish();    /// @} @@ -195,7 +203,6 @@ void MCAsmStreamer::EmitCommentsAndEOL() {    CommentStream.resync();  } -  static inline int64_t truncateToSize(int64_t Value, unsigned Bytes) {    assert(Bytes && "Invalid size!");    return Value & ((uint64_t) (int64_t) -1 >> (64 - Bytes * 8)); @@ -628,12 +635,22 @@ void MCAsmStreamer::EmitInstruction(const MCInst &Inst) {    // If we have an AsmPrinter, use that to print, otherwise print the MCInst.    if (InstPrinter) -    InstPrinter->printInst(&Inst); +    InstPrinter->printInst(&Inst, OS);    else      Inst.print(OS, &MAI);    EmitEOL();  } +/// EmitRawText - If this file is backed by a assembly streamer, this dumps +/// the specified string in the output .s file.  This capability is +/// indicated by the hasRawTextSupport() predicate. +void MCAsmStreamer::EmitRawText(StringRef String) { +  if (!String.empty() && String.back() == '\n') +    String = String.substr(0, String.size()-1); +  OS << String; +  EmitEOL(); +} +  void MCAsmStreamer::Finish() {    OS.flush();  }  | 
