mirror of
https://github.com/RPCSX/llvm.git
synced 2024-11-25 04:39:44 +00:00
Add an emitRawComment function and use it to simplify some uses of EmitRawText.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@199397 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
1a6226f236
commit
640f8f65a7
@ -217,6 +217,12 @@ public:
|
||||
/// use this method.
|
||||
virtual raw_ostream &GetCommentOS();
|
||||
|
||||
/// Print T and prefix it with the comment string (normally #) and optionally
|
||||
/// a tab. This prints the comment immediately, not at the end of the
|
||||
/// current line. It is basically a safe version of EmitRawText: since it
|
||||
/// only prints comments, the object streamer ignores it instead of asserting.
|
||||
virtual void emitRawComment(const Twine &T, bool TabPrefix = true);
|
||||
|
||||
/// AddBlankLine - Emit a blank line to a .s file to pretty it up.
|
||||
virtual void AddBlankLine() {}
|
||||
|
||||
|
@ -579,7 +579,7 @@ static bool emitDebugValueComment(const MachineInstr *MI, AsmPrinter &AP) {
|
||||
|
||||
SmallString<128> Str;
|
||||
raw_svector_ostream OS(Str);
|
||||
OS << '\t' << AP.MAI->getCommentString() << "DEBUG_VALUE: ";
|
||||
OS << "DEBUG_VALUE: ";
|
||||
|
||||
DIVariable V(MI->getOperand(2).getMetadata());
|
||||
if (V.getContext().isSubprogram()) {
|
||||
@ -627,7 +627,7 @@ static bool emitDebugValueComment(const MachineInstr *MI, AsmPrinter &AP) {
|
||||
// Suppress offset, it is not meaningful here.
|
||||
OS << "undef";
|
||||
// NOTE: Want this comment at start of line, don't emit with AddComment.
|
||||
AP.OutStreamer.EmitRawText(OS.str());
|
||||
AP.OutStreamer.emitRawComment(OS.str());
|
||||
return true;
|
||||
}
|
||||
if (Deref)
|
||||
@ -639,7 +639,7 @@ static bool emitDebugValueComment(const MachineInstr *MI, AsmPrinter &AP) {
|
||||
OS << '+' << Offset << ']';
|
||||
|
||||
// NOTE: Want this comment at start of line, don't emit with AddComment.
|
||||
AP.OutStreamer.EmitRawText(OS.str());
|
||||
AP.OutStreamer.emitRawComment(OS.str());
|
||||
return true;
|
||||
}
|
||||
|
||||
@ -2155,8 +2155,7 @@ void AsmPrinter::EmitBasicBlockStart(const MachineBasicBlock *MBB) const {
|
||||
if (MBB->pred_empty() || isBlockOnlyReachableByFallthrough(MBB)) {
|
||||
if (isVerbose() && OutStreamer.hasRawTextSupport()) {
|
||||
// NOTE: Want this comment at start of line, don't emit with AddComment.
|
||||
OutStreamer.EmitRawText(Twine(MAI->getCommentString()) + " BB#" +
|
||||
Twine(MBB->getNumber()) + ":");
|
||||
OutStreamer.emitRawComment(" BB#" + Twine(MBB->getNumber()) + ":", false);
|
||||
}
|
||||
} else {
|
||||
OutStreamer.EmitLabel(MBB->getSymbol());
|
||||
|
@ -428,21 +428,14 @@ void AsmPrinter::EmitInlineAsm(const MachineInstr *MI) const {
|
||||
// If this asmstr is empty, just print the #APP/#NOAPP markers.
|
||||
// These are useful to see where empty asm's wound up.
|
||||
if (AsmStr[0] == 0) {
|
||||
// Don't emit the comments if writing to a .o file.
|
||||
if (!OutStreamer.hasRawTextSupport()) return;
|
||||
|
||||
OutStreamer.EmitRawText(Twine("\t")+MAI->getCommentString()+
|
||||
MAI->getInlineAsmStart());
|
||||
OutStreamer.EmitRawText(Twine("\t")+MAI->getCommentString()+
|
||||
MAI->getInlineAsmEnd());
|
||||
OutStreamer.emitRawComment(MAI->getInlineAsmStart());
|
||||
OutStreamer.emitRawComment(MAI->getInlineAsmEnd());
|
||||
return;
|
||||
}
|
||||
|
||||
// Emit the #APP start marker. This has to happen even if verbose-asm isn't
|
||||
// enabled, so we use EmitRawText.
|
||||
if (OutStreamer.hasRawTextSupport())
|
||||
OutStreamer.EmitRawText(Twine("\t")+MAI->getCommentString()+
|
||||
MAI->getInlineAsmStart());
|
||||
// enabled, so we use emitRawComment.
|
||||
OutStreamer.emitRawComment(MAI->getInlineAsmStart());
|
||||
|
||||
// Get the !srcloc metadata node if we have it, and decode the loc cookie from
|
||||
// it.
|
||||
@ -477,10 +470,8 @@ void AsmPrinter::EmitInlineAsm(const MachineInstr *MI) const {
|
||||
EmitInlineAsm(OS.str(), LocMD, MI->getInlineAsmDialect());
|
||||
|
||||
// Emit the #NOAPP end marker. This has to happen even if verbose-asm isn't
|
||||
// enabled, so we use EmitRawText.
|
||||
if (OutStreamer.hasRawTextSupport())
|
||||
OutStreamer.EmitRawText(Twine("\t")+MAI->getCommentString()+
|
||||
MAI->getInlineAsmEnd());
|
||||
// enabled, so we use emitRawComment.
|
||||
OutStreamer.emitRawComment(MAI->getInlineAsmEnd());
|
||||
}
|
||||
|
||||
|
||||
|
@ -115,6 +115,8 @@ public:
|
||||
return CommentStream;
|
||||
}
|
||||
|
||||
void emitRawComment(const Twine &T, bool TabPrefix = true) LLVM_OVERRIDE;
|
||||
|
||||
/// AddBlankLine - Emit a blank line to a .s file to pretty it up.
|
||||
virtual void AddBlankLine() {
|
||||
EmitEOL();
|
||||
@ -311,6 +313,13 @@ static inline int64_t truncateToSize(int64_t Value, unsigned Bytes) {
|
||||
return Value & ((uint64_t) (int64_t) -1 >> (64 - Bytes * 8));
|
||||
}
|
||||
|
||||
void MCAsmStreamer::emitRawComment(const Twine &T, bool TabPrefix) {
|
||||
if (TabPrefix)
|
||||
OS << '\t';
|
||||
OS << MAI->getCommentString() << T;
|
||||
EmitEOL();
|
||||
}
|
||||
|
||||
void MCAsmStreamer::ChangeSection(const MCSection *Section,
|
||||
const MCExpr *Subsection) {
|
||||
assert(Section && "Cannot switch to a null section!");
|
||||
|
@ -81,6 +81,8 @@ raw_ostream &MCStreamer::GetCommentOS() {
|
||||
return nulls();
|
||||
}
|
||||
|
||||
void MCStreamer::emitRawComment(const Twine &T, bool TabPrefix) {}
|
||||
|
||||
void MCStreamer::generateCompactUnwindEncodings(MCAsmBackend *MAB) {
|
||||
for (std::vector<MCDwarfFrameInfo>::iterator I = FrameInfos.begin(),
|
||||
E = FrameInfos.end(); I != E; ++I)
|
||||
|
@ -783,8 +783,7 @@ void X86AsmPrinter::EmitInstruction(const MachineInstr *MI) {
|
||||
|
||||
// Emit nothing here but a comment if we can.
|
||||
case X86::Int_MemBarrier:
|
||||
if (OutStreamer.hasRawTextSupport())
|
||||
OutStreamer.EmitRawText(StringRef("\t#MEMBARRIER"));
|
||||
OutStreamer.emitRawComment("MEMBARRIER");
|
||||
return;
|
||||
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user