Avoid creating expensive comment string if it's not going to be printed.
authorEvan Cheng <evan.cheng@apple.com>
Tue, 1 Jul 2008 23:18:29 +0000 (23:18 +0000)
committerEvan Cheng <evan.cheng@apple.com>
Tue, 1 Jul 2008 23:18:29 +0000 (23:18 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52992 91177308-0d34-0410-b5e6-96231b3b80d8

include/llvm/Target/TargetOptions.h
lib/CodeGen/AsmPrinter.cpp
lib/CodeGen/DwarfWriter.cpp
lib/Target/TargetMachine.cpp

index ac3a6081edc38c32acba78363ea615b73bd291c1..a9964f766b135a32211ee2a97dcf55791bc939d2 100644 (file)
@@ -93,6 +93,10 @@ namespace llvm {
   /// RealignStack - This flag indicates, whether stack should be automatically
   /// realigned, if needed.
   extern bool RealignStack;
+
+  /// VerboseAsm - When this flag is set, the asm printer prints additional
+  /// comments to asm directives.
+  extern bool VerboseAsm;
 } // End llvm namespace
 
 #endif
index 13206633972303a752d2894a12e07bbc9268c7a2..35c36719807b720ea2ed5eb769bd37b10be38d1e 100644 (file)
@@ -21,7 +21,6 @@
 #include "llvm/CodeGen/MachineConstantPool.h"
 #include "llvm/CodeGen/MachineJumpTableInfo.h"
 #include "llvm/CodeGen/MachineModuleInfo.h"
-#include "llvm/Support/CommandLine.h"
 #include "llvm/Support/Mangler.h"
 #include "llvm/Support/MathExtras.h"
 #include "llvm/Support/Streams.h"
 #include "llvm/Target/TargetData.h"
 #include "llvm/Target/TargetLowering.h"
 #include "llvm/Target/TargetMachine.h"
+#include "llvm/Target/TargetOptions.h"
 #include "llvm/Target/TargetRegisterInfo.h"
 #include "llvm/ADT/SmallPtrSet.h"
 #include <cerrno>
 using namespace llvm;
 
-static cl::opt<bool>
-AsmVerbose("asm-verbose", cl::Hidden, cl::desc("Add comments to directives."));
-
 char AsmPrinter::ID = 0;
 AsmPrinter::AsmPrinter(std::ostream &o, TargetMachine &tm,
                        const TargetAsmInfo *T)
@@ -553,7 +550,7 @@ void AsmPrinter::EOL() const {
 }
 
 void AsmPrinter::EOL(const std::string &Comment) const {
-  if (AsmVerbose && !Comment.empty()) {
+  if (VerboseAsm && !Comment.empty()) {
     O << '\t'
       << TAI->getCommentString()
       << ' '
@@ -563,7 +560,7 @@ void AsmPrinter::EOL(const std::string &Comment) const {
 }
 
 void AsmPrinter::EOL(const char* Comment) const {
-  if (AsmVerbose && *Comment) {
+  if (VerboseAsm && *Comment) {
     O << '\t'
       << TAI->getCommentString()
       << ' '
index a33773904f5e1928760098c1ee3ada05b24da8d9..68ec6c49ac35efde57552af2310b51e7efb018b6 100644 (file)
@@ -2076,11 +2076,15 @@ private:
 
     // Emit the code (index) for the abbreviation.
     Asm->EmitULEB128Bytes(AbbrevNumber);
-    Asm->EOL(std::string("Abbrev [" +
-             utostr(AbbrevNumber) +
-             "] 0x" + utohexstr(Die->getOffset()) +
-             ":0x" + utohexstr(Die->getSize()) + " " +
-             TagString(Abbrev->getTag())));
+
+    if (VerboseAsm)
+      Asm->EOL(std::string("Abbrev [" +
+                           utostr(AbbrevNumber) +
+                           "] 0x" + utohexstr(Die->getOffset()) +
+                           ":0x" + utohexstr(Die->getSize()) + " " +
+                           TagString(Abbrev->getTag())));
+    else
+      Asm->EOL();
     
     SmallVector<DIEValue*, 32> &Values = Die->getValues();
     const SmallVector<DIEAbbrevData, 8> &AbbrevData = Abbrev->getData();
@@ -2297,8 +2301,7 @@ private:
     Asm->EmitInt8(1); Asm->EOL("DW_LNS_fixed_advance_pc arg count");
 
     const UniqueVector<std::string> &Directories = MMI->getDirectories();
-    const UniqueVector<SourceFileInfo>
-      &SourceFiles = MMI->getSourceFiles();
+    const UniqueVector<SourceFileInfo> &SourceFiles = MMI->getSourceFiles();
 
     // Emit directories.
     for (unsigned DirectoryID = 1, NDID = Directories.size();
@@ -2328,8 +2331,11 @@ private:
     for (unsigned j = 0, M = SectionSourceLines.size(); j < M; ++j) {
       // Isolate current sections line info.
       const std::vector<SourceLineInfo> &LineInfos = SectionSourceLines[j];
-      
-      Asm->EOL(std::string("Section ") + SectionMap[j + 1]);
+
+      if (VerboseAsm)
+        Asm->EOL(std::string("Section ") + SectionMap[j + 1]);
+      else
+        Asm->EOL();
 
       // Dwarf assumes we start with first line of first source file.
       unsigned Source = 1;
@@ -2344,10 +2350,13 @@ private:
         unsigned SourceID = LineInfo.getSourceID();
         const SourceFileInfo &SourceFile = SourceFiles[SourceID];
         unsigned DirectoryID = SourceFile.getDirectoryID();
-        Asm->EOL(Directories[DirectoryID]
-          + SourceFile.getName()
-          + ":"
-          + utostr_32(LineInfo.getLine()));
+        if (VerboseAsm)
+          Asm->EOL(Directories[DirectoryID]
+                   + SourceFile.getName()
+                   + ":"
+                   + utostr_32(LineInfo.getLine()));
+        else
+          Asm->EOL();
 
         // Define the line address.
         Asm->EmitInt8(0); Asm->EOL("Extended Op");
index 342aa0175dfea4dedda0362a702cd99ce4a6463e..0764968b23011f2d287c3cc17afd3d04d97ab409 100644 (file)
@@ -36,8 +36,9 @@ namespace llvm {
   CodeModel::Model CMModel;
   bool PerformTailCallOpt;
   bool OptimizeForSize;
-  bool RealignStack;
   unsigned StackAlignment;
+  bool RealignStack;
+  bool VerboseAsm;
 }
 
 static cl::opt<bool, true> PrintCode("print-machineinstrs",
@@ -138,17 +139,23 @@ EnableOptimizeForSize("optimize-size",
                       cl::location(OptimizeForSize),
                       cl::init(false));
 
+static cl::opt<unsigned, true>
+OverrideStackAlignment("stack-alignment",
+                       cl::desc("Override default stack alignment"),
+                       cl::location(StackAlignment),
+                       cl::init(0));
+
 static cl::opt<bool, true>
 EnableRealignStack("realign-stack",
                    cl::desc("Realign stack if needed"),
                    cl::location(RealignStack),
                    cl::init(true));
 
-static cl::opt<unsigned, true>
-OverrideStackAlignment("stack-alignment",
-                       cl::desc("Override default stack alignment"),
-                       cl::location(StackAlignment),
-                       cl::init(0));
+static cl::opt<bool, true>
+AsmVerbose("asm-verbose", cl::desc("Add comments to directives."),
+           cl::location(VerboseAsm),
+           cl::init(false));
+
 
 //---------------------------------------------------------------------------
 // TargetMachine Class