diff options
author | Reid Spencer <rspencer@reidspencer.com> | 2004-06-08 05:56:58 +0000 |
---|---|---|
committer | Reid Spencer <rspencer@reidspencer.com> | 2004-06-08 05:56:58 +0000 |
commit | 96684ef886011ee212b3a671df6b354ad08c1701 (patch) | |
tree | 87b7fa9a9ba66962c864e9d16b90f84b53da7618 /tools/llvm-abcd/llvm-abcd.cpp | |
parent | 381022b61f66f5d75b9d9632a6938f4d71c93b35 (diff) |
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
Diffstat (limited to 'tools/llvm-abcd/llvm-abcd.cpp')
-rw-r--r-- | tools/llvm-abcd/llvm-abcd.cpp | 84 |
1 files changed, 24 insertions, 60 deletions
diff --git a/tools/llvm-abcd/llvm-abcd.cpp b/tools/llvm-abcd/llvm-abcd.cpp index 22ab0b049c..837c6a6dde 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. +// 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 @@ using namespace llvm; 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 @@ 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) { |