From 90a904309c79977fcba2ff0542e2e4cd8e3c3faf Mon Sep 17 00:00:00 2001 From: Mike Stump Date: Wed, 4 Mar 2009 18:47:42 +0000 Subject: [PATCH] Move more of the blocks code up and out. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@66046 91177308-0d34-0410-b5e6-96231b3b80d8 --- lib/CodeGen/CGBlocks.cpp | 8 ++++---- lib/CodeGen/CGBlocks.h | 14 +++++++++++--- lib/CodeGen/CodeGenModule.cpp | 2 +- lib/CodeGen/CodeGenModule.h | 2 -- 4 files changed, 16 insertions(+), 10 deletions(-) diff --git a/lib/CodeGen/CGBlocks.cpp b/lib/CodeGen/CGBlocks.cpp index 8aabada259..d877b171b9 100644 --- a/lib/CodeGen/CGBlocks.cpp +++ b/lib/CodeGen/CGBlocks.cpp @@ -501,7 +501,7 @@ llvm::Value *CodeGenFunction::GetAddrOfBlockDecl(const BlockDeclRefExpr *E) { } llvm::Constant * -CodeGenModule::GetAddrOfGlobalBlock(const BlockExpr *BE, const char * n) { +BlockModule::GetAddrOfGlobalBlock(const BlockExpr *BE, const char * n) { // Generate the block descriptor. const llvm::Type *UnsignedLongTy = Types.ConvertType(Context.UnsignedLongTy); const llvm::IntegerType *IntTy = cast( @@ -534,9 +534,9 @@ CodeGenModule::GetAddrOfGlobalBlock(const BlockExpr *BE, const char * n) { uint64_t subBlockSize, subBlockAlign; llvm::SmallVector subBlockDeclRefDecls; llvm::Function *Fn - = CodeGenFunction(*this).GenerateBlockFunction(BE, Info, subBlockSize, - subBlockAlign, - subBlockDeclRefDecls); + = CodeGenFunction(CGM).GenerateBlockFunction(BE, Info, subBlockSize, + subBlockAlign, + subBlockDeclRefDecls); assert(subBlockSize == BlockLiteralSize && "no imports allowed for global block"); diff --git a/lib/CodeGen/CGBlocks.h b/lib/CodeGen/CGBlocks.h index a55c578c0e..f58831423e 100644 --- a/lib/CodeGen/CGBlocks.h +++ b/lib/CodeGen/CGBlocks.h @@ -43,6 +43,7 @@ namespace llvm { namespace clang { namespace CodeGen { +class CodeGenModule; class BlockBase { public: @@ -59,11 +60,14 @@ public: class BlockModule : public BlockBase { ASTContext &Context; llvm::Module &TheModule; + const llvm::TargetData &TheTargetData; CodeGenTypes &Types; + CodeGenModule &CGM; ASTContext &getContext() const { return Context; } llvm::Module &getModule() const { return TheModule; } CodeGenTypes &getTypes() { return Types; } + const llvm::TargetData &getTargetData() const { return TheTargetData; } public: llvm::Constant *getNSConcreteGlobalBlock(); llvm::Constant *getNSConcreteStackBlock(); @@ -73,6 +77,8 @@ public: const llvm::Type *getGenericBlockLiteralType(); const llvm::Type *getGenericExtendedBlockLiteralType(); + llvm::Constant *GetAddrOfGlobalBlock(const BlockExpr *BE, const char *); + /// NSConcreteGlobalBlock - Cached reference to the class pointer for global /// blocks. llvm::Constant *NSConcreteGlobalBlock; @@ -88,9 +94,11 @@ public: int GlobalUniqueCount; } Block; - BlockModule(ASTContext &C, llvm::Module &M, CodeGenTypes &T) - : Context(C), TheModule(M), Types(T), NSConcreteGlobalBlock(0), - NSConcreteStackBlock(0), BlockDescriptorType(0), + BlockModule(ASTContext &C, llvm::Module &M, const llvm::TargetData &TD, + CodeGenTypes &T, CodeGenModule &CodeGen) + : Context(C), TheModule(M), TheTargetData(TD), Types(T), + CGM(CodeGen), + NSConcreteGlobalBlock(0), NSConcreteStackBlock(0), BlockDescriptorType(0), GenericBlockLiteralType(0) { Block.GlobalUniqueCount = 0; } diff --git a/lib/CodeGen/CodeGenModule.cpp b/lib/CodeGen/CodeGenModule.cpp index c0dba74ad0..422415c2e2 100644 --- a/lib/CodeGen/CodeGenModule.cpp +++ b/lib/CodeGen/CodeGenModule.cpp @@ -34,7 +34,7 @@ using namespace CodeGen; CodeGenModule::CodeGenModule(ASTContext &C, const LangOptions &LO, llvm::Module &M, const llvm::TargetData &TD, Diagnostic &diags, bool GenerateDebugInfo) - : BlockModule(C, M, Types), Context(C), Features(LO), TheModule(M), + : BlockModule(C, M, TD, Types, *this), Context(C), Features(LO), TheModule(M), TheTargetData(TD), Diags(diags), Types(C, M, TD), Runtime(0), MemCpyFn(0), MemMoveFn(0), MemSetFn(0), CFConstantStringClassRef(0) { diff --git a/lib/CodeGen/CodeGenModule.h b/lib/CodeGen/CodeGenModule.h index d20d22bc09..a2b45a0b74 100644 --- a/lib/CodeGen/CodeGenModule.h +++ b/lib/CodeGen/CodeGenModule.h @@ -217,8 +217,6 @@ public: llvm::Constant *GetAddrOfConstantCString(const std::string &str, const char *GlobalName=0); - llvm::Constant *GetAddrOfGlobalBlock(const BlockExpr *BE, const char *); - /// getBuiltinLibFunction - Given a builtin id for a function like /// "__builtin_fabsf", return a Function* for "fabsf". llvm::Value *getBuiltinLibFunction(unsigned BuiltinID); -- 2.40.0