diff options
Diffstat (limited to 'contrib/llvm/tools/llvm-dis/llvm-dis.cpp')
-rw-r--r-- | contrib/llvm/tools/llvm-dis/llvm-dis.cpp | 138 |
1 files changed, 0 insertions, 138 deletions
diff --git a/contrib/llvm/tools/llvm-dis/llvm-dis.cpp b/contrib/llvm/tools/llvm-dis/llvm-dis.cpp deleted file mode 100644 index 9d2d31d..0000000 --- a/contrib/llvm/tools/llvm-dis/llvm-dis.cpp +++ /dev/null @@ -1,138 +0,0 @@ -//===-- llvm-dis.cpp - The low-level LLVM disassembler --------------------===// -// -// The LLVM Compiler Infrastructure -// -// This file 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 bitcode from stdin, write asm to stdout -// llvm-dis [options] x.bc - Read LLVM bitcode from the x.bc file, write asm -// to the x.ll file. -// Options: -// --help - Output information about command line switches -// -//===----------------------------------------------------------------------===// - -#include "llvm/LLVMContext.h" -#include "llvm/Module.h" -#include "llvm/Type.h" -#include "llvm/Bitcode/ReaderWriter.h" -#include "llvm/Assembly/AssemblyAnnotationWriter.h" -#include "llvm/Support/CommandLine.h" -#include "llvm/Support/FormattedStream.h" -#include "llvm/Support/ManagedStatic.h" -#include "llvm/Support/MemoryBuffer.h" -#include "llvm/Support/PrettyStackTrace.h" -#include "llvm/Support/raw_ostream.h" -#include "llvm/System/Signals.h" -using namespace llvm; - -static cl::opt<std::string> -InputFilename(cl::Positional, cl::desc("<input bitcode>"), 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("Enable binary output on terminals")); - -static cl::opt<bool> -DontPrint("disable-output", cl::desc("Don't output the .ll file"), cl::Hidden); - -static cl::opt<bool> -ShowAnnotations("show-annotations", - cl::desc("Add informational comments to the .ll file")); - -namespace { - -class CommentWriter : public AssemblyAnnotationWriter { -public: - void emitFunctionAnnot(const Function *F, - formatted_raw_ostream &OS) { - OS << "; [#uses=" << F->getNumUses() << ']'; // Output # uses - OS << '\n'; - } - void printInfoComment(const Value &V, formatted_raw_ostream &OS) { - if (V.getType()->isVoidTy()) return; - - OS.PadToColumn(50); - OS << "; [#uses=" << V.getNumUses() << ']'; // Output # uses - } -}; - -} // end anon namespace - -int main(int argc, char **argv) { - // Print a stack trace if we signal out. - sys::PrintStackTraceOnErrorSignal(); - PrettyStackTraceProgram X(argc, argv); - - LLVMContext &Context = getGlobalContext(); - llvm_shutdown_obj Y; // Call llvm_shutdown() on exit. - - - cl::ParseCommandLineOptions(argc, argv, "llvm .bc -> .ll disassembler\n"); - - std::string ErrorMessage; - std::auto_ptr<Module> M; - - if (MemoryBuffer *Buffer - = MemoryBuffer::getFileOrSTDIN(InputFilename, &ErrorMessage)) { - M.reset(ParseBitcodeFile(Buffer, Context, &ErrorMessage)); - delete Buffer; - } - - if (M.get() == 0) { - errs() << argv[0] << ": "; - if (ErrorMessage.size()) - errs() << ErrorMessage << "\n"; - else - errs() << "bitcode didn't read correctly.\n"; - return 1; - } - - // Just use stdout. We won't actually print anything on it. - if (DontPrint) - OutputFilename = "-"; - - if (OutputFilename.empty()) { // Unspecified output, infer it. - if (InputFilename == "-") { - OutputFilename = "-"; - } else { - const std::string &IFN = InputFilename; - int Len = IFN.length(); - // If the source ends in .bc, strip it off. - if (IFN[Len-3] == '.' && IFN[Len-2] == 'b' && IFN[Len-1] == 'c') - OutputFilename = std::string(IFN.begin(), IFN.end()-3)+".ll"; - else - OutputFilename = IFN+".ll"; - } - } - - std::string ErrorInfo; - OwningPtr<tool_output_file> - Out(new tool_output_file(OutputFilename.c_str(), ErrorInfo, - raw_fd_ostream::F_Binary)); - if (!ErrorInfo.empty()) { - errs() << ErrorInfo << '\n'; - return 1; - } - - OwningPtr<AssemblyAnnotationWriter> Annotator; - if (ShowAnnotations) - Annotator.reset(new CommentWriter()); - - // All that llvm-dis does is write the assembly to a file. - if (!DontPrint) - M->print(Out->os(), Annotator.get()); - - // Declare success. - Out->keep(); - - return 0; -} - |