1 //===--- CodeGen/ModuleBuilder.h - Build LLVM from ASTs ---------*- C++ -*-===//
3 // The LLVM Compiler Infrastructure
5 // This file is distributed under the University of Illinois Open Source
6 // License. See LICENSE.TXT for details.
8 //===----------------------------------------------------------------------===//
10 // This file defines the ModuleBuilder interface.
12 //===----------------------------------------------------------------------===//
14 #ifndef LLVM_CLANG_CODEGEN_MODULEBUILDER_H
15 #define LLVM_CLANG_CODEGEN_MODULEBUILDER_H
17 #include "clang/AST/ASTConsumer.h"
26 class DiagnosticsEngine;
27 class CoverageSourceInfo;
33 class CodeGenerator : public ASTConsumer {
34 virtual void anchor();
36 virtual llvm::Module* GetModule() = 0;
37 virtual llvm::Module* ReleaseModule() = 0;
38 virtual const Decl *GetDeclForMangledName(llvm::StringRef MangledName) = 0;
41 /// CreateLLVMCodeGen - Create a CodeGenerator instance.
42 /// It is the responsibility of the caller to call delete on
43 /// the allocated CodeGenerator instance.
44 CodeGenerator *CreateLLVMCodeGen(DiagnosticsEngine &Diags,
45 const std::string &ModuleName,
46 const CodeGenOptions &CGO,
47 const TargetOptions &TO,
49 CoverageSourceInfo *CoverageInfo = nullptr);