summaryrefslogtreecommitdiffstats
path: root/gnu/llvm/tools/llvm-dis/llvm-dis.cpp
diff options
context:
space:
mode:
authorpatrick <patrick@openbsd.org>2020-08-03 15:06:44 +0000
committerpatrick <patrick@openbsd.org>2020-08-03 15:06:44 +0000
commitb64793999546ed8adebaeebd9d8345d18db8927d (patch)
tree4357c27b561d73b0e089727c6ed659f2ceff5f47 /gnu/llvm/tools/llvm-dis/llvm-dis.cpp
parentAdd support for UTF-8 DISPLAY-HINTs with octet length. For now only (diff)
downloadwireguard-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.cpp211
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;
-}