| //===--- BackendUtil.h - LLVM Backend Utilities -----------------*- C++ -*-===// |
| // |
| // The LLVM Compiler Infrastructure |
| // |
| // This file is distributed under the University of Illinois Open Source |
| // License. See LICENSE.TXT for details. |
| // |
| //===----------------------------------------------------------------------===// |
| |
| #ifndef LLVM_CLANG_CODEGEN_BACKENDUTIL_H |
| #define LLVM_CLANG_CODEGEN_BACKENDUTIL_H |
| |
| #include "clang/Basic/LLVM.h" |
| #include "llvm/IR/ModuleSummaryIndex.h" |
| #include <memory> |
| |
| namespace llvm { |
| class BitcodeModule; |
| template <typename T> class Expected; |
| class Module; |
| class MemoryBufferRef; |
| } |
| |
| namespace clang { |
| class DiagnosticsEngine; |
| class HeaderSearchOptions; |
| class CodeGenOptions; |
| class TargetOptions; |
| class LangOptions; |
| |
| enum BackendAction { |
| Backend_EmitAssembly, ///< Emit native assembly files |
| Backend_EmitBC, ///< Emit LLVM bitcode files |
| Backend_EmitLL, ///< Emit human-readable LLVM assembly |
| Backend_EmitNothing, ///< Don't emit anything (benchmarking mode) |
| Backend_EmitMCNull, ///< Run CodeGen, but don't emit anything |
| Backend_EmitObj ///< Emit native object files |
| }; |
| |
| void EmitBackendOutput(DiagnosticsEngine &Diags, const HeaderSearchOptions &, |
| const CodeGenOptions &CGOpts, |
| const TargetOptions &TOpts, const LangOptions &LOpts, |
| const llvm::DataLayout &TDesc, llvm::Module *M, |
| BackendAction Action, |
| std::unique_ptr<raw_pwrite_stream> OS); |
| |
| void EmbedBitcode(llvm::Module *M, const CodeGenOptions &CGOpts, |
| llvm::MemoryBufferRef Buf); |
| |
| llvm::Expected<llvm::BitcodeModule> |
| FindThinLTOModule(llvm::MemoryBufferRef MBRef); |
| llvm::BitcodeModule * |
| FindThinLTOModule(llvm::MutableArrayRef<llvm::BitcodeModule> BMs); |
| } |
| |
| #endif |