aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorChris Lattner <sabre@nondot.org>2010-01-22 19:52:01 +0000
committerChris Lattner <sabre@nondot.org>2010-01-22 19:52:01 +0000
commitc006e1cc781b854bf6a8ebda79c222dc745753bb (patch)
treec212e8022207d8b572289cc773e76d74d04713f0
parent32db11a5f1039df46ea5298a1722a076ff50142f (diff)
downloadexternal_llvm-c006e1cc781b854bf6a8ebda79c222dc745753bb.zip
external_llvm-c006e1cc781b854bf6a8ebda79c222dc745753bb.tar.gz
external_llvm-c006e1cc781b854bf6a8ebda79c222dc745753bb.tar.bz2
Convert some more random-comment-printing stuff to use
AddComment and GetCommentOS. Add a blank line between globals (even in non-verbose mode) to make the assembly more readable. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@94202 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r--include/llvm/MC/MCStreamer.h8
-rw-r--r--lib/CodeGen/AsmPrinter/AsmPrinter.cpp63
-rw-r--r--lib/MC/MCAsmStreamer.cpp5
3 files changed, 43 insertions, 33 deletions
diff --git a/include/llvm/MC/MCStreamer.h b/include/llvm/MC/MCStreamer.h
index 0842a24..bd21ec5 100644
--- a/include/llvm/MC/MCStreamer.h
+++ b/include/llvm/MC/MCStreamer.h
@@ -81,6 +81,9 @@ namespace llvm {
MCContext &getContext() const { return Context; }
+ /// @name Assembly File Formatting.
+ /// @{
+
/// 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
/// more readable. This only affects the MCAsmStreamer, and only when
@@ -95,6 +98,11 @@ namespace llvm {
/// use this method.
virtual raw_ostream &GetCommentOS();
+ /// AddBlankLine - Emit a blank line to a .s file to pretty it up.
+ virtual void AddBlankLine() {}
+
+ /// @}
+
/// @name Symbol & Section Management
/// @{
diff --git a/lib/CodeGen/AsmPrinter/AsmPrinter.cpp b/lib/CodeGen/AsmPrinter/AsmPrinter.cpp
index 3f0a9de..276b334 100644
--- a/lib/CodeGen/AsmPrinter/AsmPrinter.cpp
+++ b/lib/CodeGen/AsmPrinter/AsmPrinter.cpp
@@ -32,6 +32,7 @@
#include "llvm/MC/MCSymbol.h"
#include "llvm/Support/CommandLine.h"
#include "llvm/Support/ErrorHandling.h"
+#include "llvm/Support/Format.h"
#include "llvm/Support/FormattedStream.h"
#include "llvm/MC/MCAsmInfo.h"
#include "llvm/Target/Mangler.h"
@@ -173,10 +174,9 @@ void AsmPrinter::EmitGlobalVariable(const GlobalVariable *GV) {
if (Size == 0) Size = 1; // .comm Foo, 0 is undefined, avoid it.
if (VerboseAsm) {
- O.PadToColumn(MAI->getCommentColumn());
- O << MAI->getCommentString() << ' ';
- WriteAsOperand(O, GV, /*PrintType=*/false, GV->getParent());
- O << '\n';
+ WriteAsOperand(OutStreamer.GetCommentOS(), GV,
+ /*PrintType=*/false, GV->getParent());
+ OutStreamer.GetCommentOS() << '\n';
}
// Handle common symbols.
@@ -266,10 +266,9 @@ void AsmPrinter::EmitGlobalVariable(const GlobalVariable *GV) {
EmitAlignment(AlignLog, GV);
if (VerboseAsm) {
- O.PadToColumn(MAI->getCommentColumn());
- O << MAI->getCommentString() << ' ';
- WriteAsOperand(O, GV, /*PrintType=*/false, GV->getParent());
- O << '\n';
+ WriteAsOperand(OutStreamer.GetCommentOS(), GV,
+ /*PrintType=*/false, GV->getParent());
+ OutStreamer.GetCommentOS() << '\n';
}
OutStreamer.EmitLabel(GVSym);
@@ -277,6 +276,8 @@ void AsmPrinter::EmitGlobalVariable(const GlobalVariable *GV) {
if (MAI->hasDotTypeDotSizeDirective())
O << "\t.size\t" << *GVSym << ", " << Size << '\n';
+
+ OutStreamer.AddBlankLine();
}
@@ -1141,9 +1142,8 @@ static void EmitGlobalConstantFP(const ConstantFP *CFP, unsigned AddrSpace,
if (CFP->getType()->isFloatTy()) {
if (AP.VerboseAsm) {
- float Val = CFP->getValueAPF().convertToFloat(); // for comment only
- AP.O.PadToColumn(AP.MAI->getCommentColumn());
- AP.O << AP.MAI->getCommentString() << " float " << Val << '\n';
+ float Val = CFP->getValueAPF().convertToFloat();
+ AP.OutStreamer.GetCommentOS() << "float " << Val << '\n';
}
uint64_t Val = CFP->getValueAPF().bitcastToAPInt().getZExtValue();
AP.OutStreamer.EmitIntValue(Val, 4, AddrSpace);
@@ -1161,9 +1161,8 @@ static void EmitGlobalConstantFP(const ConstantFP *CFP, unsigned AddrSpace,
bool ignored;
DoubleVal.convert(APFloat::IEEEdouble, APFloat::rmNearestTiesToEven,
&ignored);
- AP.O.PadToColumn(AP.MAI->getCommentColumn());
- AP.O << AP.MAI->getCommentString() << " x86_fp80 ~= "
- << DoubleVal.convertToDouble() << '\n';
+ AP.OutStreamer.GetCommentOS() << "x86_fp80 ~= "
+ << DoubleVal.convertToDouble() << '\n';
}
if (AP.TM.getTargetData()->isBigEndian()) {
@@ -1226,12 +1225,8 @@ void AsmPrinter::EmitGlobalConstant(const Constant *CV, unsigned AddrSpace) {
case 2:
case 4:
case 8:
- if (VerboseAsm) {
- O.PadToColumn(MAI->getCommentColumn());
- O << MAI->getCommentString() << " 0x";
- O.write_hex(CI->getZExtValue());
- O << '\n';
- }
+ if (VerboseAsm)
+ OutStreamer.GetCommentOS() << format("0x%llx\n", CI->getZExtValue());
OutStreamer.EmitIntValue(CI->getZExtValue(), Size, AddrSpace);
return;
default:
@@ -1670,30 +1665,32 @@ void AsmPrinter::EmitBasicBlockStart(const MachineBasicBlock *MBB) const {
// will be.
if (MBB->hasAddressTaken()) {
const BasicBlock *BB = MBB->getBasicBlock();
+ if (VerboseAsm)
+ OutStreamer.AddComment("Address Taken");
OutStreamer.EmitLabel(GetBlockAddressSymbol(BB->getParent(), BB));
- if (VerboseAsm) {
- O.PadToColumn(MAI->getCommentColumn());
- O << MAI->getCommentString() << " Address Taken" << '\n';
- }
}
// Print the main label for the block.
if (MBB->pred_empty() || MBB->isOnlyReachableByFallthrough()) {
- if (VerboseAsm)
+ if (VerboseAsm) {
O << MAI->getCommentString() << " BB#" << MBB->getNumber() << ':';
+ if (const BasicBlock *BB = MBB->getBasicBlock())
+ if (BB->hasName())
+ OutStreamer.AddComment("%" + BB->getName());
+ OutStreamer.AddBlankLine();
+ }
} else {
+ if (VerboseAsm) {
+ if (const BasicBlock *BB = MBB->getBasicBlock())
+ if (BB->hasName())
+ OutStreamer.AddComment("%" + BB->getName());
+ }
OutStreamer.EmitLabel(GetMBBSymbol(MBB->getNumber()));
}
// Print some comments to accompany the label.
- if (VerboseAsm) {
- if (const BasicBlock *BB = MBB->getBasicBlock())
- if (BB->hasName()) {
- O.PadToColumn(MAI->getCommentColumn());
- O << MAI->getCommentString() << ' ';
- WriteAsOperand(O, BB, /*PrintType=*/false);
- }
-
+ // FIXME: REENABLE.
+ if (0 && VerboseAsm) {
EmitComments(*MBB);
O << '\n';
}
diff --git a/lib/MC/MCAsmStreamer.cpp b/lib/MC/MCAsmStreamer.cpp
index 4eb1bcd..e284e15 100644
--- a/lib/MC/MCAsmStreamer.cpp
+++ b/lib/MC/MCAsmStreamer.cpp
@@ -73,6 +73,11 @@ public:
return CommentStream;
}
+ /// AddBlankLine - Emit a blank line to a .s file to pretty it up.
+ virtual void AddBlankLine() {
+ EmitEOL();
+ }
+
/// @name MCStreamer Interface
/// @{