out of the llvm namespace. This makes the clang namespace be a sibling of llvm instead of being a child. The good thing about this is that it makes many things unambiguous. The bad things is that many things in the llvm namespace (notably data structures like smallvector) now require an llvm:: qualifier. IMO, libsystem and libsupport should be split out of llvm into their own namespace in the future, which will fix this issue. llvm-svn: 39659
46 lines
1.2 KiB
C++
46 lines
1.2 KiB
C++
//===--- CodeGenModule.h - Per-Module state for LLVM CodeGen --------------===//
|
|
//
|
|
// The LLVM Compiler Infrastructure
|
|
//
|
|
// This file was developed by Chris Lattner and is distributed under
|
|
// the University of Illinois Open Source License. See LICENSE.TXT for details.
|
|
//
|
|
//===----------------------------------------------------------------------===//
|
|
//
|
|
// This is the internal per-translation-unit state used for llvm translation.
|
|
//
|
|
//===----------------------------------------------------------------------===//
|
|
|
|
#ifndef CODEGEN_CODEGENMODULE_H
|
|
#define CODEGEN_CODEGENMODULE_H
|
|
|
|
namespace llvm {
|
|
class Module;
|
|
}
|
|
|
|
namespace clang {
|
|
class ASTContext;
|
|
class FunctionDecl;
|
|
|
|
namespace CodeGen {
|
|
|
|
/// CodeGenModule - This class organizes the cross-module state that is used
|
|
/// while generating LLVM code.
|
|
class CodeGenModule {
|
|
ASTContext &Context;
|
|
llvm::Module &TheModule;
|
|
public:
|
|
CodeGenModule(ASTContext &C, llvm::Module &M) : Context(C), TheModule(M) {}
|
|
|
|
ASTContext &getContext() const { return Context; }
|
|
llvm::Module &getModule() const { return TheModule; }
|
|
|
|
void EmitFunction(FunctionDecl *FD);
|
|
|
|
void PrintStats() {}
|
|
};
|
|
} // end namespace CodeGen
|
|
} // end namespace clang
|
|
|
|
#endif
|