[cfe-commits] r52756 - in /cfe/trunk/lib/CodeGen: CGObjCEtoile.cpp CGObjCGNU.cpp CGObjCRuntime.h CodeGenModule.cpp
Chris Lattner
sabre at nondot.org
Wed Jun 25 21:19:04 PDT 2008
Author: lattner
Date: Wed Jun 25 23:19:03 2008
New Revision: 52756
URL: http://llvm.org/viewvc/llvm-project?rev=52756&view=rev
Log:
give CreateObjCRuntime a full CGM so it can get whatever state it needs,
instead of passing in just a couple random things it currently
happens to use.
Modified:
cfe/trunk/lib/CodeGen/CGObjCEtoile.cpp
cfe/trunk/lib/CodeGen/CGObjCGNU.cpp
cfe/trunk/lib/CodeGen/CGObjCRuntime.h
cfe/trunk/lib/CodeGen/CodeGenModule.cpp
Modified: cfe/trunk/lib/CodeGen/CGObjCEtoile.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/CGObjCEtoile.cpp?rev=52756&r1=52755&r2=52756&view=diff
==============================================================================
--- cfe/trunk/lib/CodeGen/CGObjCEtoile.cpp (original)
+++ cfe/trunk/lib/CodeGen/CGObjCEtoile.cpp Wed Jun 25 23:19:03 2008
@@ -243,11 +243,3 @@
return Method;
}
-/*
-clang::CodeGen::CGObjCRuntime *clang::CodeGen::CreateObjCRuntime(
- llvm::Module &M,
- const llvm::Type *LLVMIntType,
- const llvm::Type *LLVMLongType) {
- return new CGObjCEtoile(M, LLVMIntType, LLVMLongType);
-}
-*/
Modified: cfe/trunk/lib/CodeGen/CGObjCGNU.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/CGObjCGNU.cpp?rev=52756&r1=52755&r2=52756&view=diff
==============================================================================
--- cfe/trunk/lib/CodeGen/CGObjCGNU.cpp (original)
+++ cfe/trunk/lib/CodeGen/CGObjCGNU.cpp Wed Jun 25 23:19:03 2008
@@ -15,12 +15,15 @@
//===----------------------------------------------------------------------===//
#include "CGObjCRuntime.h"
+#include "CodeGenModule.h"
+#include "clang/AST/ASTContext.h"
#include "llvm/Module.h"
#include "llvm/Support/Compiler.h"
#include "llvm/Support/IRBuilder.h"
#include "llvm/ADT/SmallVector.h"
#include "llvm/ADT/StringMap.h"
#include <map>
+using namespace clang;
// FIXME: Remove THIS!
#include "llvm/Analysis/ValueTracking.h"
@@ -39,8 +42,9 @@
static const int ProtocolVersion = 2;
namespace {
-class CGObjCGNU : public clang::CodeGen::CGObjCRuntime {
+class CGObjCGNU : public CodeGen::CGObjCRuntime {
private:
+ CodeGen::CodeGenModule &CGM;
llvm::Module &TheModule;
const llvm::StructType *SelStructTy;
const llvm::Type *SelectorTy;
@@ -94,9 +98,7 @@
llvm::Constant *MakeGlobal(const llvm::ArrayType *Ty,
std::vector<llvm::Constant*> &V, const std::string &Name="");
public:
- CGObjCGNU(llvm::Module &Mp,
- const llvm::Type *LLVMIntType,
- const llvm::Type *LLVMLongType);
+ CGObjCGNU(CodeGen::CodeGenModule &cgm);
virtual llvm::Constant *GenerateConstantString(const char *String,
const size_t length);
virtual llvm::Value *GenerateMessageSend(llvm::IRBuilder &Builder,
@@ -172,13 +174,11 @@
(isClassMethod ? "+" : "-") + MethodName;
}
-CGObjCGNU::CGObjCGNU(llvm::Module &M,
- const llvm::Type *LLVMIntType,
- const llvm::Type *LLVMLongType) :
- TheModule(M),
- IntTy(LLVMIntType),
- LongTy(LLVMLongType)
-{
+CGObjCGNU::CGObjCGNU(CodeGen::CodeGenModule &cgm)
+ : CGM(cgm), TheModule(CGM.getModule()) {
+ IntTy = CGM.getTypes().ConvertType(CGM.getContext().IntTy);
+ LongTy = CGM.getTypes().ConvertType(CGM.getContext().LongTy);
+
Zeros[0] = llvm::ConstantInt::get(llvm::Type::Int32Ty, 0);
Zeros[1] = Zeros[0];
NULLPtr = llvm::ConstantPointerNull::get(
@@ -928,9 +928,6 @@
return Method;
}
-clang::CodeGen::CGObjCRuntime *clang::CodeGen::CreateObjCRuntime(
- llvm::Module &M,
- const llvm::Type *LLVMIntType,
- const llvm::Type *LLVMLongType) {
- return new CGObjCGNU(M, LLVMIntType, LLVMLongType);
+CodeGen::CGObjCRuntime *CodeGen::CreateObjCRuntime(CodeGen::CodeGenModule &CGM){
+ return new CGObjCGNU(CGM);
}
Modified: cfe/trunk/lib/CodeGen/CGObjCRuntime.h
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/CGObjCRuntime.h?rev=52756&r1=52755&r2=52756&view=diff
==============================================================================
--- cfe/trunk/lib/CodeGen/CGObjCRuntime.h (original)
+++ cfe/trunk/lib/CodeGen/CGObjCRuntime.h Wed Jun 25 23:19:03 2008
@@ -29,6 +29,7 @@
namespace clang {
namespace CodeGen {
+ class CodeGenModule;
//FIXME Several methods should be pure virtual but aren't to avoid the
//partially-implemented subclass breaking.
@@ -119,9 +120,7 @@
/// Creates an instance of an Objective-C runtime class.
//TODO: This should include some way of selecting which runtime to target.
-CGObjCRuntime *CreateObjCRuntime(llvm::Module &M,
- const llvm::Type *LLVMIntType,
- const llvm::Type *LLVMLongType);
+CGObjCRuntime *CreateObjCRuntime(CodeGenModule &CGM);
}
}
#endif
Modified: cfe/trunk/lib/CodeGen/CodeGenModule.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/CodeGenModule.cpp?rev=52756&r1=52755&r2=52756&view=diff
==============================================================================
--- cfe/trunk/lib/CodeGen/CodeGenModule.cpp (original)
+++ cfe/trunk/lib/CodeGen/CodeGenModule.cpp Wed Jun 25 23:19:03 2008
@@ -39,9 +39,7 @@
Types(C, M, TD), MemCpyFn(0), MemMoveFn(0), MemSetFn(0),
CFConstantStringClassRef(0) {
//TODO: Make this selectable at runtime
- Runtime = CreateObjCRuntime(M,
- getTypes().ConvertType(getContext().IntTy),
- getTypes().ConvertType(getContext().LongTy));
+ Runtime = CreateObjCRuntime(*this);
// If debug info generation is enabled, create the CGDebugInfo object.
if (GenerateDebugInfo)
More information about the cfe-commits
mailing list