diff options
Diffstat (limited to 'include/clang/CodeGen/CodeGenAction.h')
-rw-r--r-- | include/clang/CodeGen/CodeGenAction.h | 107 |
1 files changed, 0 insertions, 107 deletions
diff --git a/include/clang/CodeGen/CodeGenAction.h b/include/clang/CodeGen/CodeGenAction.h deleted file mode 100644 index cc38e24..0000000 --- a/include/clang/CodeGen/CodeGenAction.h +++ /dev/null @@ -1,107 +0,0 @@ -//===--- CodeGenAction.h - LLVM Code Generation Frontend Action -*- 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_CODEGENACTION_H -#define LLVM_CLANG_CODEGEN_CODEGENACTION_H - -#include "clang/Frontend/FrontendAction.h" -#include <memory> - -namespace llvm { - class LLVMContext; - class Module; -} - -namespace clang { -class BackendConsumer; - -class CodeGenAction : public ASTFrontendAction { -private: - unsigned Act; - std::unique_ptr<llvm::Module> TheModule; - // Vector of {Linker::Flags, Module*} pairs to specify bitcode - // modules to link in using corresponding linker flags. - SmallVector<std::pair<unsigned, llvm::Module *>, 4> LinkModules; - llvm::LLVMContext *VMContext; - bool OwnsVMContext; - -protected: - /// Create a new code generation action. If the optional \p _VMContext - /// parameter is supplied, the action uses it without taking ownership, - /// otherwise it creates a fresh LLVM context and takes ownership. - CodeGenAction(unsigned _Act, llvm::LLVMContext *_VMContext = nullptr); - - bool hasIRSupport() const override; - - std::unique_ptr<ASTConsumer> CreateASTConsumer(CompilerInstance &CI, - StringRef InFile) override; - - void ExecuteAction() override; - - void EndSourceFileAction() override; - -public: - ~CodeGenAction() override; - - /// setLinkModule - Set the link module to be used by this action. If a link - /// module is not provided, and CodeGenOptions::LinkBitcodeFile is non-empty, - /// the action will load it from the specified file. - void addLinkModule(llvm::Module *Mod, unsigned LinkFlags) { - LinkModules.push_back(std::make_pair(LinkFlags, Mod)); - } - - /// Take the generated LLVM module, for use after the action has been run. - /// The result may be null on failure. - std::unique_ptr<llvm::Module> takeModule(); - - /// Take the LLVM context used by this action. - llvm::LLVMContext *takeLLVMContext(); - - BackendConsumer *BEConsumer; -}; - -class EmitAssemblyAction : public CodeGenAction { - virtual void anchor(); -public: - EmitAssemblyAction(llvm::LLVMContext *_VMContext = nullptr); -}; - -class EmitBCAction : public CodeGenAction { - virtual void anchor(); -public: - EmitBCAction(llvm::LLVMContext *_VMContext = nullptr); -}; - -class EmitLLVMAction : public CodeGenAction { - virtual void anchor(); -public: - EmitLLVMAction(llvm::LLVMContext *_VMContext = nullptr); -}; - -class EmitLLVMOnlyAction : public CodeGenAction { - virtual void anchor(); -public: - EmitLLVMOnlyAction(llvm::LLVMContext *_VMContext = nullptr); -}; - -class EmitCodeGenOnlyAction : public CodeGenAction { - virtual void anchor(); -public: - EmitCodeGenOnlyAction(llvm::LLVMContext *_VMContext = nullptr); -}; - -class EmitObjAction : public CodeGenAction { - virtual void anchor(); -public: - EmitObjAction(llvm::LLVMContext *_VMContext = nullptr); -}; - -} - -#endif |