diff options
author | Reid Spencer <rspencer@reidspencer.com> | 2004-07-02 03:22:53 +0000 |
---|---|---|
committer | Reid Spencer <rspencer@reidspencer.com> | 2004-07-02 03:22:53 +0000 |
commit | 8a542aeb8478d53df8dc985972bdc479560ff72f (patch) | |
tree | 0e949c6f933eb49aaf5a97043c8193b113be1980 /tools/llvm-abcd/llvm-abcd.cpp | |
parent | 452069abccca2a2ea2887220aceeedda8bb6b6d7 (diff) |
Name Change: llvm-abcd -> llvm-bcanalyzer
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14555 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'tools/llvm-abcd/llvm-abcd.cpp')
-rw-r--r-- | tools/llvm-abcd/llvm-abcd.cpp | 98 |
1 files changed, 0 insertions, 98 deletions
diff --git a/tools/llvm-abcd/llvm-abcd.cpp b/tools/llvm-abcd/llvm-abcd.cpp deleted file mode 100644 index 820de7fe80..0000000000 --- a/tools/llvm-abcd/llvm-abcd.cpp +++ /dev/null @@ -1,98 +0,0 @@ -//===-- llvm-abcd.cpp - Analysis of Byte Code Dumper ----------------------===// -// -// The LLVM Compiler Infrastructure -// -// This file was developed by Reid Spencer and is distributed under the -// University of Illinois Open Source License. See LICENSE.TXT for details. -// -//===----------------------------------------------------------------------===// -// -// 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 -// --nodetails - Don't print out detailed informaton about individual -// blocks and functions -// --dump - Dump low-level bytecode structure 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. By default this information is -// detailed and contains information about individual bytecode blocks and the -// functions in the module. To avoid this more detailed output, use the -// -nodetails option to limit the output to just module level information. -// 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/Analysis/Verifier.h" -#include "llvm/Bytecode/Analyzer.h" -#include "Support/CommandLine.h" -#include "llvm/System/Signals.h" -#include <fstream> -#include <iostream> - -using namespace llvm; - -static cl::opt<std::string> - InputFilename(cl::Positional, cl::desc("<input bytecode>"), cl::init("-")); - -static cl::opt<bool> NoDetails ("nodetails", cl::desc("Skip detailed output")); -static cl::opt<bool> Dump ("dump", cl::desc("Dump low level bytecode trace")); -static cl::opt<bool> Verify ("verify", cl::desc("Progressively verify module")); - -int -main(int argc, char **argv) -{ - cl::ParseCommandLineOptions(argc, argv, - " llvm-abcd Analysis of ByteCode Dumper\n"); - - PrintStackTraceOnErrorSignal(); - - std::ostream* Out = &std::cout; // Default to printing to stdout... - std::istream* In = &std::cin; // Default to reading stdin - std::string ErrorMessage; - BytecodeAnalysis bca; - - /// Determine what to generate - bca.dumpBytecode = Dump; - bca.detailedResults = !NoDetails; - bca.progressiveVerify = Verify; - - /// Analyze the bytecode file - Module* M = AnalyzeBytecodeFile(InputFilename, bca, &ErrorMessage); - - // All that abcd does is write the gathered statistics to the output - PrintBytecodeAnalysis(bca,*Out); - - if ( M && Verify ) { - std::string verificationMsg; - try { - verifyModule( *M, ThrowExceptionAction ); - } catch (std::string& errmsg ) { - verificationMsg = errmsg; - } - if ( verificationMsg.length() > 0 ) - std::cerr << "Final Verification Message: " << verificationMsg << "\n"; - } - - - // If there was an error, print it and stop. - if ( ErrorMessage.size() ) { - std::cerr << argv[0] << ": " << ErrorMessage << "\n"; - return 1; - } - - - if (Out != &std::cout) { - ((std::ofstream*)Out)->close(); - delete Out; - } - return 0; -} - -// vim: sw=2 |