[llvm-commits] CVS: llvm/tools/llvm-abcd/llvm-abcd.cpp

LLVM llvm at cs.uiuc.edu
Tue Jun 8 01:02:01 PDT 2004


Changes in directory llvm/tools/llvm-abcd:

llvm-abcd.cpp updated: 1.1 -> 1.2

---
Log message:

Clean up the documentation.
Simplify the file handling. It now only writes to std::cout.


---
Diffs of the changes:  (+24 -60)

Index: llvm/tools/llvm-abcd/llvm-abcd.cpp
diff -u llvm/tools/llvm-abcd/llvm-abcd.cpp:1.1 llvm/tools/llvm-abcd/llvm-abcd.cpp:1.2
--- llvm/tools/llvm-abcd/llvm-abcd.cpp:1.1	Mon Jun  7 12:53:43 2004
+++ llvm/tools/llvm-abcd/llvm-abcd.cpp	Tue Jun  8 00:56:58 2004
@@ -1,20 +1,29 @@
-//===-- llvm-dis.cpp - The low-level LLVM disassembler --------------------===//
+//===-- llvm-abcd.cpp - Analysis of Byte Code Dumper ----------------------===//
 // 
 //                     The LLVM Compiler Infrastructure
 //
-// This file was developed by the LLVM research group and is distributed under
-// the University of Illinois Open Source License. See LICENSE.TXT for details.
+// This file was developed by Reid Spencerearch and is distributed under the 
+// University of Illinois Open Source License. See LICENSE.TXT for details.
 // 
 //===----------------------------------------------------------------------===//
 //
-// This utility may be invoked in the following manner:
-//  llvm-dis [options]      - Read LLVM bytecode from stdin, write asm to stdout
-//  llvm-dis [options] x.bc - Read LLVM bytecode from the x.bc file, write asm
-//                            to the x.ll file.
+// This tool may be invoked in the following manner:
+//  llvm-abcd [options]      - Read LLVM bytecode from stdin
+//  llvm-abcd [options] x.bc - Read LLVM bytecode from the x.bc file
+//
 //  Options:
-//      --help   - Output information about command line switches
-//       -c      - Print C code instead of LLVM assembly
+//      --help    - Output information about command line switches
+//      --details - Provide detailed analysis of individual functions
+//      --dump    - Dump bytecode in readable format
 //
+// This tool provides analytical information about a bytecode file. It is
+// intended as an aid to developers of bytecode reading and writing software. It
+// produces on std::out a summary of the bytecode file that shows various 
+// statistics about the contents of the file. If the -details option is given
+// then the output includes detailed information about each function in the 
+// bytecode file.  The tool is also able to print a bytecode file in a straight 
+// forward text format // that shows the containment and relationships of the 
+// information in the bytecode file (-dump option). 
 //===----------------------------------------------------------------------===//
 
 #include "llvm/Bytecode/Analyzer.h"
@@ -28,12 +37,8 @@
 static cl::opt<std::string>
   InputFilename(cl::Positional, cl::desc("<input bytecode>"), cl::init("-"));
 
-static cl::opt<std::string> 
-  OutputFilename("o", cl::desc("Override output filename"), 
-    cl::value_desc("filename"));
-
-static cl::opt<bool> Force      ("f", cl::desc("Overwrite output files"));
-static cl::opt<bool> Detailed   ("d", cl::desc("Detailed output"));
+static cl::opt<bool> Detailed ("details", cl::desc("Detailed output"));
+static cl::opt<bool> Dump     ("dump", cl::desc("Detailed output"));
 
 int 
 main(int argc, char **argv) 
@@ -48,6 +53,10 @@
   std::string ErrorMessage;
   BytecodeAnalysis bca;
 
+  /// Determine what to generate
+  bca.dumpBytecode = Dump;
+  bca.detailedResults = Detailed;
+
   /// Analyze the bytecode file
   AnalyzeBytecodeFile(InputFilename, bca, &ErrorMessage);
 
@@ -57,52 +66,7 @@
     return 1;
   }
   
-  // Figure out where the output is going
-  if (OutputFilename != "") {   // Specified an output filename?
-    if (OutputFilename != "-") { // Not stdout?
-      if (!Force && std::ifstream(OutputFilename.c_str())) {
-        // If force is not specified, make sure not to overwrite a file!
-        std::cerr << argv[0] << ": error opening '" << OutputFilename
-                  << "': file exists! Sending to standard output.\n";
-      } else {
-        Out = new std::ofstream(OutputFilename.c_str());
-      }
-    }
-  } else {
-    if (InputFilename == "-") {
-      OutputFilename = "-";
-    } else {
-      std::string IFN = InputFilename;
-      int Len = IFN.length();
-      if (IFN[Len-3] == '.' && IFN[Len-2] == 'b' && IFN[Len-1] == 'c') {
-	// Source ends in .bc
-	OutputFilename = std::string(IFN.begin(), IFN.end()-3)+".abc";
-      } else {
-	OutputFilename = IFN+".abc";
-      }
-
-      if (!Force && std::ifstream(OutputFilename.c_str())) {
-        // If force is not specified, make sure not to overwrite a file!
-        std::cerr << argv[0] << ": error opening '" << OutputFilename
-                  << "': file exists! Sending to standard output.\n";
-      } else {
-        Out = new std::ofstream(OutputFilename.c_str());
-
-        // Make sure that the Out file gets unlinked from the disk if we get a
-        // SIGINT
-        RemoveFileOnSignal(OutputFilename);
-      }
-    }
-  }
-
-  if (!Out->good()) {
-    std::cerr << argv[0] << ": error opening " << OutputFilename
-              << ": sending to stdout instead!\n";
-    Out = &std::cout;
-  }
-
   // All that abcd does is write the gathered statistics to the output
-  bca.dumpBytecode = true;
   PrintBytecodeAnalysis(bca,*Out);
 
   if (Out != &std::cout) {





More information about the llvm-commits mailing list