diff options
| author | 2020-08-03 15:06:44 +0000 | |
|---|---|---|
| committer | 2020-08-03 15:06:44 +0000 | |
| commit | b64793999546ed8adebaeebd9d8345d18db8927d (patch) | |
| tree | 4357c27b561d73b0e089727c6ed659f2ceff5f47 /gnu/llvm/tools/llvm-dis/llvm-dis.cpp | |
| parent | Add support for UTF-8 DISPLAY-HINTs with octet length. For now only (diff) | |
| download | wireguard-openbsd-b64793999546ed8adebaeebd9d8345d18db8927d.tar.xz wireguard-openbsd-b64793999546ed8adebaeebd9d8345d18db8927d.zip | |
Remove LLVM 8.0.1 files.
Diffstat (limited to 'gnu/llvm/tools/llvm-dis/llvm-dis.cpp')
| -rw-r--r-- | gnu/llvm/tools/llvm-dis/llvm-dis.cpp | 211 |
1 files changed, 0 insertions, 211 deletions
diff --git a/gnu/llvm/tools/llvm-dis/llvm-dis.cpp b/gnu/llvm/tools/llvm-dis/llvm-dis.cpp deleted file mode 100644 index 8143a2a5a93..00000000000 --- a/gnu/llvm/tools/llvm-dis/llvm-dis.cpp +++ /dev/null @@ -1,211 +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/Bitcode/BitcodeReader.h" -#include "llvm/IR/AssemblyAnnotationWriter.h" -#include "llvm/IR/DebugInfo.h" -#include "llvm/IR/DiagnosticInfo.h" -#include "llvm/IR/DiagnosticPrinter.h" -#include "llvm/IR/IntrinsicInst.h" -#include "llvm/IR/LLVMContext.h" -#include "llvm/IR/Module.h" -#include "llvm/IR/Type.h" -#include "llvm/Support/CommandLine.h" -#include "llvm/Support/Error.h" -#include "llvm/Support/FileSystem.h" -#include "llvm/Support/FormattedStream.h" -#include "llvm/Support/InitLLVM.h" -#include "llvm/Support/MemoryBuffer.h" -#include "llvm/Support/ToolOutputFile.h" -#include "llvm/Support/WithColor.h" -#include <system_error> -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> - SetImporting("set-importing", - cl::desc("Set lazy loading to pretend to import a module"), - cl::Hidden); - -static cl::opt<bool> - ShowAnnotations("show-annotations", - cl::desc("Add informational comments to the .ll file")); - -static cl::opt<bool> PreserveAssemblyUseListOrder( - "preserve-ll-uselistorder", - cl::desc("Preserve use-list order when writing LLVM assembly."), - cl::init(false), cl::Hidden); - -static cl::opt<bool> - MaterializeMetadata("materialize-metadata", - cl::desc("Load module without materializing metadata, " - "then materialize only the metadata")); - -namespace { - -static void printDebugLoc(const DebugLoc &DL, formatted_raw_ostream &OS) { - OS << DL.getLine() << ":" << DL.getCol(); - if (DILocation *IDL = DL.getInlinedAt()) { - OS << "@"; - printDebugLoc(IDL, OS); - } -} -class CommentWriter : public AssemblyAnnotationWriter { -public: - void emitFunctionAnnot(const Function *F, - formatted_raw_ostream &OS) override { - OS << "; [#uses=" << F->getNumUses() << ']'; // Output # uses - OS << '\n'; - } - void printInfoComment(const Value &V, formatted_raw_ostream &OS) override { - bool Padded = false; - if (!V.getType()->isVoidTy()) { - OS.PadToColumn(50); - Padded = true; - // Output # uses and type - OS << "; [#uses=" << V.getNumUses() << " type=" << *V.getType() << "]"; - } - if (const Instruction *I = dyn_cast<Instruction>(&V)) { - if (const DebugLoc &DL = I->getDebugLoc()) { - if (!Padded) { - OS.PadToColumn(50); - Padded = true; - OS << ";"; - } - OS << " [debug line = "; - printDebugLoc(DL,OS); - OS << "]"; - } - if (const DbgDeclareInst *DDI = dyn_cast<DbgDeclareInst>(I)) { - if (!Padded) { - OS.PadToColumn(50); - OS << ";"; - } - OS << " [debug variable = " << DDI->getVariable()->getName() << "]"; - } - else if (const DbgValueInst *DVI = dyn_cast<DbgValueInst>(I)) { - if (!Padded) { - OS.PadToColumn(50); - OS << ";"; - } - OS << " [debug variable = " << DVI->getVariable()->getName() << "]"; - } - } - } -}; - -struct LLVMDisDiagnosticHandler : public DiagnosticHandler { - char *Prefix; - LLVMDisDiagnosticHandler(char *PrefixPtr) : Prefix(PrefixPtr) {} - bool handleDiagnostics(const DiagnosticInfo &DI) override { - raw_ostream &OS = errs(); - OS << Prefix << ": "; - switch (DI.getSeverity()) { - case DS_Error: WithColor::error(OS); break; - case DS_Warning: WithColor::warning(OS); break; - case DS_Remark: OS << "remark: "; break; - case DS_Note: WithColor::note(OS); break; - } - - DiagnosticPrinterRawOStream DP(OS); - DI.print(DP); - OS << '\n'; - - if (DI.getSeverity() == DS_Error) - exit(1); - return true; - } -}; -} // end anon namespace - -static ExitOnError ExitOnErr; - -int main(int argc, char **argv) { - InitLLVM X(argc, argv); - - ExitOnErr.setBanner(std::string(argv[0]) + ": error: "); - - LLVMContext Context; - Context.setDiagnosticHandler( - llvm::make_unique<LLVMDisDiagnosticHandler>(argv[0])); - cl::ParseCommandLineOptions(argc, argv, "llvm .bc -> .ll disassembler\n"); - - std::unique_ptr<MemoryBuffer> MB = - ExitOnErr(errorOrToExpected(MemoryBuffer::getFileOrSTDIN(InputFilename))); - std::unique_ptr<Module> M = ExitOnErr(getLazyBitcodeModule( - *MB, Context, /*ShouldLazyLoadMetadata=*/true, SetImporting)); - if (MaterializeMetadata) - ExitOnErr(M->materializeMetadata()); - else - ExitOnErr(M->materializeAll()); - - BitcodeLTOInfo LTOInfo = ExitOnErr(getBitcodeLTOInfo(*MB)); - std::unique_ptr<ModuleSummaryIndex> Index; - if (LTOInfo.HasSummary) - Index = ExitOnErr(getModuleSummaryIndex(*MB)); - - // 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 { - StringRef IFN = InputFilename; - OutputFilename = (IFN.endswith(".bc") ? IFN.drop_back(3) : IFN).str(); - OutputFilename += ".ll"; - } - } - - std::error_code EC; - std::unique_ptr<ToolOutputFile> Out( - new ToolOutputFile(OutputFilename, EC, sys::fs::F_None)); - if (EC) { - errs() << EC.message() << '\n'; - return 1; - } - - std::unique_ptr<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(), PreserveAssemblyUseListOrder); - if (Index) - Index->print(Out->os()); - } - - // Declare success. - Out->keep(); - - return 0; -} |
