From 96684ef886011ee212b3a671df6b354ad08c1701 Mon Sep 17 00:00:00 2001 From: Reid Spencer Date: Tue, 8 Jun 2004 05:56:58 +0000 Subject: [PATCH] Clean up the documentation. Simplify the file handling. It now only writes to std::cout. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14059 91177308-0d34-0410-b5e6-96231b3b80d8 --- tools/llvm-abcd/llvm-abcd.cpp | 86 ++++++++++------------------------- 1 file changed, 25 insertions(+), 61 deletions(-) diff --git a/tools/llvm-abcd/llvm-abcd.cpp b/tools/llvm-abcd/llvm-abcd.cpp index 22ab0b049c1..837c6a6ddee 100644 --- a/tools/llvm-abcd/llvm-abcd.cpp +++ b/tools/llvm-abcd/llvm-abcd.cpp @@ -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. -// Options: -// --help - Output information about command line switches -// -c - Print C code instead of LLVM assembly +// 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 +// --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 @@ using namespace llvm; static cl::opt InputFilename(cl::Positional, cl::desc(""), cl::init("-")); -static cl::opt - OutputFilename("o", cl::desc("Override output filename"), - cl::value_desc("filename")); - -static cl::opt Force ("f", cl::desc("Overwrite output files")); -static cl::opt Detailed ("d", cl::desc("Detailed output")); +static cl::opt Detailed ("details", cl::desc("Detailed output")); +static cl::opt Dump ("dump", cl::desc("Detailed output")); int main(int argc, char **argv) @@ -48,6 +53,10 @@ main(int argc, char **argv) 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 @@ main(int argc, char **argv) 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) {