From afe62b76cbb01645ea605ebf130e444ad36ed40f Mon Sep 17 00:00:00 2001 From: Paul Russo Date: Wed, 14 Nov 2012 21:23:31 +0000 Subject: [PATCH] Use CodeGen to lower an AST type to a LLVM type. git-svn-id: http://root.cern.ch/svn/root/trunk@47285 27541ba8-7e3a-0410-8455-c3a389f83636 --- include/cling/Interpreter/Interpreter.h | 2 + lib/Interpreter/Interpreter.cpp | 4 + patches/type_lowering.diff | 667 ++++++++++++++++++++++++ 3 files changed, 673 insertions(+) create mode 100644 patches/type_lowering.diff diff --git a/include/cling/Interpreter/Interpreter.h b/include/cling/Interpreter/Interpreter.h index cd0d0ba8..63fe6c4e 100644 --- a/include/cling/Interpreter/Interpreter.h +++ b/include/cling/Interpreter/Interpreter.h @@ -24,6 +24,7 @@ namespace llvm { namespace clang { class ASTContext; + class CodeGenerator; class CompilerInstance; class Decl; class DeclContext; @@ -246,6 +247,7 @@ namespace cling { const LookupHelper& getLookupHelper() const { return *m_LookupHelper; } + clang::CodeGenerator* getCodeGenerator() const; ///\brief Shows the current version of the project. /// diff --git a/lib/Interpreter/Interpreter.cpp b/lib/Interpreter/Interpreter.cpp index 738799cb..3653cbf5 100644 --- a/lib/Interpreter/Interpreter.cpp +++ b/lib/Interpreter/Interpreter.cpp @@ -144,6 +144,10 @@ namespace cling { return llvm::sys::Path::GetMainExecutable(Argv0, MainAddr); } + CodeGenerator* Interpreter::getCodeGenerator() const { + return m_IncrParser->getCodeGenerator(); + } + void Interpreter::unload() { m_IncrParser->unloadTransaction(0); } diff --git a/patches/type_lowering.diff b/patches/type_lowering.diff new file mode 100644 index 00000000..c608507d --- /dev/null +++ b/patches/type_lowering.diff @@ -0,0 +1,667 @@ +Index: core/meta/src/TClingCallFunc.cxx +=================================================================== +--- core/meta/src/TClingCallFunc.cxx (revision 47280) ++++ core/meta/src/TClingCallFunc.cxx (working copy) +@@ -42,6 +42,8 @@ + #include "clang/AST/PrettyPrinter.h" + #include "clang/AST/RecordLayout.h" + #include "clang/AST/Type.h" ++#include "clang/CodeGen/ModuleBuilder.h" ++#include "clang/CodeGen/CodeGenModule.h" + #include "clang/Frontend/CompilerInstance.h" + #include "clang/Lex/Preprocessor.h" + +@@ -533,108 +535,18 @@ + } + } + +-static llvm::Type *getLLVMTypeFromBuiltin(llvm::LLVMContext &Context, +- clang::ASTContext &ASTCtx, +- const clang::BuiltinType* PBT) ++static llvm::Type *getLLVMType(cling::Interpreter *interp, clang::QualType QT) + { +- llvm::Type *TY = 0; +- if (PBT->isInteger()) { +- uint64_t BTBits = ASTCtx.getTypeInfo(PBT).first; +- TY = llvm::IntegerType::get(Context, BTBits); +- } else switch (PBT->getKind()) { +- case clang::BuiltinType::Half: +- case clang::BuiltinType::ObjCId: +- case clang::BuiltinType::ObjCClass: +- case clang::BuiltinType::ObjCSel: +- case clang::BuiltinType::Dependent: +- case clang::BuiltinType::Overload: +- case clang::BuiltinType::BoundMember: +- case clang::BuiltinType::PseudoObject: +- case clang::BuiltinType::UnknownAny: +- case clang::BuiltinType::BuiltinFn: +- case clang::BuiltinType::ARCUnbridgedCast: +- Error("TClingCallFunc::getLLVMTypeFromBuiltin()", +- "Not implemented (kind %d)!", (int) PBT->getKind()); +- break; +- case clang::BuiltinType::Void: +- TY = llvm::Type::getVoidTy(Context); +- break; +- case clang::BuiltinType::Float: +- TY = llvm::Type::getFloatTy(Context); +- break; +- case clang::BuiltinType::Double: +- TY = llvm::Type::getDoubleTy(Context); +- break; +- case clang::BuiltinType::LongDouble: +- TY = llvm::Type::getFP128Ty(Context); +- break; +- case clang::BuiltinType::NullPtr: +- TY = llvm::IntegerType::get(Context, CHAR_BIT); +- break; +- default: +- // everything else should be ints - what are we missing? +- Error("TClingCallFunc::getLLVMTypeFromBuiltin()", +- "Logic error (missing kind %d)!", (int)PBT->getKind()); +- break; +- } +- return TY; ++ clang::CodeGenerator* CG = interp->getCodeGenerator(); ++ clang::CodeGen::CodeGenModule* CGM = CG->GetBuilder(); ++ clang::CodeGen::CodeGenTypes& CGT = CGM->getTypes(); ++ // Note: The first thing this routine does is getCanonicalType(), so we ++ // do not need to do that first. ++ llvm::Type* Ty = CGT.ConvertType(QT); ++ //llvm::Type* Ty = CGT.ConvertTypeForMem(QT); ++ return Ty; + } + +-static llvm::Type *getLLVMType(llvm::LLVMContext &Context, +- clang::ASTContext &ASTCtx, +- clang::QualType QT) +-{ +- llvm::Type *TY = 0; +- QT = QT.getCanonicalType(); +- const clang::BuiltinType *BT = QT->getAs(); +- // Note: nullptr is a builtin type. +- if (QT->isPointerType() || QT->isReferenceType()) { +- clang::QualType PT = QT->getPointeeType(); +- PT = PT.getCanonicalType(); +- const clang::BuiltinType *PBT = llvm::dyn_cast (PT); +- if (PBT) { +- // Pointer to something simple, preserve that. +- if (PT->isVoidType()) { +- // We have pointer to void, llvm cannot handle that, +- // force it to pointer to char. +- TY = llvm::PointerType::getUnqual( +- llvm::IntegerType::get(Context, CHAR_BIT)); +- } +- else { +- // We have pointer to clang builtin type, preserve that. +- llvm::Type *llvm_pt = getLLVMTypeFromBuiltin(Context, ASTCtx, PBT); +- TY = llvm::PointerType::getUnqual(llvm_pt); +- } +- } +- else { +- // Force it to pointer to char. +- TY = llvm::PointerType::getUnqual( +- llvm::IntegerType::get(Context, CHAR_BIT)); +- } +- } +- else if (QT->isRealFloatingType()) { +- TY = getLLVMTypeFromBuiltin(Context, ASTCtx, BT); +- } +- else if (QT->isIntegralOrEnumerationType()) { +- if (BT) { +- TY = getLLVMTypeFromBuiltin(Context, ASTCtx, BT); +- } +- else { +- const clang::EnumType *ET = QT->getAs(); +- clang::QualType IT = ET->getDecl()->getIntegerType(); +- IT = IT.getCanonicalType(); +- const clang::BuiltinType *IBT = llvm::dyn_cast(IT); +- TY = getLLVMTypeFromBuiltin(Context, ASTCtx, IBT); +- } +- } +- else if (QT->isVoidType()) { +- TY = llvm::Type::getVoidTy(Context); +- } else { +- Error("getLLVMType()", "Cannot handle type ID %d", QT->getTypeClass()); +- } +- return TY; +-} +- + void TClingCallFunc::Init(const clang::FunctionDecl *FD) + { + fEEFunc = 0; +@@ -717,7 +629,7 @@ + for (unsigned I = 0U; I < NumParams; ++I) { + const clang::ParmVarDecl *PVD = FD->getParamDecl(I); + clang::QualType QT = PVD->getType(); +- llvm::Type *argtype = getLLVMType(Context, ASTCtx, QT); ++ llvm::Type *argtype = getLLVMType(fInterp, QT); + if (argtype == 0) { + // We are not in good shape, quit while we are still alive. + return; +@@ -731,7 +643,7 @@ + CHAR_BIT); + } + else { +- ReturnType = getLLVMType(Context, ASTCtx, FD->getResultType()); ++ ReturnType = getLLVMType(fInterp, FD->getResultType()); + } + if (ReturnType) { + +Index: interpreter/cling/include/cling/Interpreter/Interpreter.h +=================================================================== +--- interpreter/cling/include/cling/Interpreter/Interpreter.h (revision 47280) ++++ interpreter/cling/include/cling/Interpreter/Interpreter.h (working copy) +@@ -24,6 +24,7 @@ + + namespace clang { + class ASTContext; ++ class CodeGenerator; + class CompilerInstance; + class Decl; + class DeclContext; +@@ -246,6 +247,7 @@ + + const LookupHelper& getLookupHelper() const { return *m_LookupHelper; } + ++ clang::CodeGenerator* getCodeGenerator() const; + + ///\brief Shows the current version of the project. + /// +Index: interpreter/cling/lib/Interpreter/Interpreter.cpp +=================================================================== +--- interpreter/cling/lib/Interpreter/Interpreter.cpp (revision 47280) ++++ interpreter/cling/lib/Interpreter/Interpreter.cpp (working copy) +@@ -144,6 +144,10 @@ + return llvm::sys::Path::GetMainExecutable(Argv0, MainAddr); + } + ++ CodeGenerator* Interpreter::getCodeGenerator() const { ++ return m_IncrParser->getCodeGenerator(); ++ } ++ + void Interpreter::unload() { + m_IncrParser->unloadTransaction(0); + } +Index: interpreter/llvm/src/tools/clang/include/clang/CodeGen/ModuleBuilder.h +=================================================================== +--- interpreter/llvm/src/tools/clang/include/clang/CodeGen/ModuleBuilder.h (revision 47280) ++++ interpreter/llvm/src/tools/clang/include/clang/CodeGen/ModuleBuilder.h (working copy) +@@ -27,11 +27,16 @@ + class LangOptions; + class CodeGenOptions; + ++ namespace CodeGen { ++ class CodeGenModule; ++ } ++ + class CodeGenerator : public ASTConsumer { + virtual void anchor(); + public: + virtual llvm::Module* GetModule() = 0; + virtual llvm::Module* ReleaseModule() = 0; ++ virtual CodeGen::CodeGenModule* GetBuilder() = 0; + }; + + /// CreateLLVMCodeGen - Create a CodeGenerator instance. +Index: interpreter/llvm/src/tools/clang/lib/CodeGen/CGBlocks.cpp +=================================================================== +--- interpreter/llvm/src/tools/clang/lib/CodeGen/CGBlocks.cpp (revision 47280) ++++ interpreter/llvm/src/tools/clang/lib/CodeGen/CGBlocks.cpp (working copy) +@@ -14,7 +14,7 @@ + #include "CGDebugInfo.h" + #include "CodeGenFunction.h" + #include "CGObjCRuntime.h" +-#include "CodeGenModule.h" ++#include "clang/CodeGen/CodeGenModule.h" + #include "CGBlocks.h" + #include "clang/AST/DeclObjC.h" + #include "llvm/Module.h" +Index: interpreter/llvm/src/tools/clang/lib/CodeGen/CGBlocks.h +=================================================================== +--- interpreter/llvm/src/tools/clang/lib/CodeGen/CGBlocks.h (revision 47280) ++++ interpreter/llvm/src/tools/clang/lib/CodeGen/CGBlocks.h (working copy) +@@ -14,7 +14,7 @@ + #ifndef CLANG_CODEGEN_CGBLOCKS_H + #define CLANG_CODEGEN_CGBLOCKS_H + +-#include "CodeGenTypes.h" ++#include "clang/CodeGen/CodeGenTypes.h" + #include "clang/AST/Type.h" + #include "llvm/Module.h" + #include "clang/Basic/TargetInfo.h" +@@ -25,8 +25,8 @@ + + #include "CodeGenFunction.h" + #include "CGBuilder.h" +-#include "CGCall.h" +-#include "CGValue.h" ++#include "clang/CodeGen/CGCall.h" ++#include "clang/CodeGen/CGValue.h" + + namespace llvm { + class Module; +Index: interpreter/llvm/src/tools/clang/lib/CodeGen/CGBuiltin.cpp +=================================================================== +--- interpreter/llvm/src/tools/clang/lib/CodeGen/CGBuiltin.cpp (revision 47280) ++++ interpreter/llvm/src/tools/clang/lib/CodeGen/CGBuiltin.cpp (working copy) +@@ -13,7 +13,7 @@ + + #include "TargetInfo.h" + #include "CodeGenFunction.h" +-#include "CodeGenModule.h" ++#include "clang/CodeGen/CodeGenModule.h" + #include "CGObjCRuntime.h" + #include "clang/Basic/TargetInfo.h" + #include "clang/AST/ASTContext.h" +Index: interpreter/llvm/src/tools/clang/lib/CodeGen/CGCUDANV.cpp +=================================================================== +--- interpreter/llvm/src/tools/clang/lib/CodeGen/CGCUDANV.cpp (revision 47280) ++++ interpreter/llvm/src/tools/clang/lib/CodeGen/CGCUDANV.cpp (working copy) +@@ -14,7 +14,7 @@ + + #include "CGCUDARuntime.h" + #include "CodeGenFunction.h" +-#include "CodeGenModule.h" ++#include "clang/CodeGen/CodeGenModule.h" + #include "clang/AST/Decl.h" + #include "llvm/BasicBlock.h" + #include "llvm/Constants.h" +Index: interpreter/llvm/src/tools/clang/lib/CodeGen/CGCUDARuntime.cpp +=================================================================== +--- interpreter/llvm/src/tools/clang/lib/CodeGen/CGCUDARuntime.cpp (revision 47280) ++++ interpreter/llvm/src/tools/clang/lib/CodeGen/CGCUDARuntime.cpp (working copy) +@@ -16,7 +16,7 @@ + #include "CGCUDARuntime.h" + #include "clang/AST/Decl.h" + #include "clang/AST/ExprCXX.h" +-#include "CGCall.h" ++#include "clang/CodeGen/CGCall.h" + #include "CodeGenFunction.h" + + using namespace clang; +Index: interpreter/llvm/src/tools/clang/lib/CodeGen/CGCXX.cpp +=================================================================== +--- interpreter/llvm/src/tools/clang/lib/CodeGen/CGCXX.cpp (revision 47280) ++++ interpreter/llvm/src/tools/clang/lib/CodeGen/CGCXX.cpp (working copy) +@@ -15,7 +15,7 @@ + + #include "CGCXXABI.h" + #include "CodeGenFunction.h" +-#include "CodeGenModule.h" ++#include "clang/CodeGen/CodeGenModule.h" + #include "clang/AST/ASTContext.h" + #include "clang/AST/RecordLayout.h" + #include "clang/AST/Decl.h" +Index: interpreter/llvm/src/tools/clang/lib/CodeGen/CGCall.cpp +=================================================================== +--- interpreter/llvm/src/tools/clang/lib/CodeGen/CGCall.cpp (revision 47280) ++++ interpreter/llvm/src/tools/clang/lib/CodeGen/CGCall.cpp (working copy) +@@ -12,11 +12,11 @@ + // + //===----------------------------------------------------------------------===// + +-#include "CGCall.h" ++#include "clang/CodeGen/CGCall.h" + #include "CGCXXABI.h" +-#include "ABIInfo.h" ++#include "clang/CodeGen/ABIInfo.h" + #include "CodeGenFunction.h" +-#include "CodeGenModule.h" ++#include "clang/CodeGen/CodeGenModule.h" + #include "TargetInfo.h" + #include "clang/Basic/TargetInfo.h" + #include "clang/AST/Decl.h" +Index: interpreter/llvm/src/tools/clang/lib/CodeGen/CGDebugInfo.cpp +=================================================================== +--- interpreter/llvm/src/tools/clang/lib/CodeGen/CGDebugInfo.cpp (revision 47280) ++++ interpreter/llvm/src/tools/clang/lib/CodeGen/CGDebugInfo.cpp (working copy) +@@ -13,7 +13,7 @@ + + #include "CGDebugInfo.h" + #include "CodeGenFunction.h" +-#include "CodeGenModule.h" ++#include "clang/CodeGen/CodeGenModule.h" + #include "CGBlocks.h" + #include "clang/AST/ASTContext.h" + #include "clang/AST/DeclFriend.h" +Index: interpreter/llvm/src/tools/clang/lib/CodeGen/CGDecl.cpp +=================================================================== +--- interpreter/llvm/src/tools/clang/lib/CodeGen/CGDecl.cpp (revision 47280) ++++ interpreter/llvm/src/tools/clang/lib/CodeGen/CGDecl.cpp (working copy) +@@ -13,7 +13,7 @@ + + #include "CGDebugInfo.h" + #include "CodeGenFunction.h" +-#include "CodeGenModule.h" ++#include "clang/CodeGen/CodeGenModule.h" + #include "CGOpenCLRuntime.h" + #include "clang/AST/ASTContext.h" + #include "clang/AST/CharUnits.h" +Index: interpreter/llvm/src/tools/clang/lib/CodeGen/CGExpr.cpp +=================================================================== +--- interpreter/llvm/src/tools/clang/lib/CodeGen/CGExpr.cpp (revision 47280) ++++ interpreter/llvm/src/tools/clang/lib/CodeGen/CGExpr.cpp (working copy) +@@ -12,8 +12,8 @@ + //===----------------------------------------------------------------------===// + + #include "CodeGenFunction.h" +-#include "CodeGenModule.h" +-#include "CGCall.h" ++#include "clang/CodeGen/CodeGenModule.h" ++#include "clang/CodeGen/CGCall.h" + #include "CGCXXABI.h" + #include "CGDebugInfo.h" + #include "CGRecordLayout.h" +Index: interpreter/llvm/src/tools/clang/lib/CodeGen/CGExprAgg.cpp +=================================================================== +--- interpreter/llvm/src/tools/clang/lib/CodeGen/CGExprAgg.cpp (revision 47280) ++++ interpreter/llvm/src/tools/clang/lib/CodeGen/CGExprAgg.cpp (working copy) +@@ -12,7 +12,7 @@ + //===----------------------------------------------------------------------===// + + #include "CodeGenFunction.h" +-#include "CodeGenModule.h" ++#include "clang/CodeGen/CodeGenModule.h" + #include "CGObjCRuntime.h" + #include "clang/AST/ASTContext.h" + #include "clang/AST/DeclCXX.h" +Index: interpreter/llvm/src/tools/clang/lib/CodeGen/CGExprComplex.cpp +=================================================================== +--- interpreter/llvm/src/tools/clang/lib/CodeGen/CGExprComplex.cpp (revision 47280) ++++ interpreter/llvm/src/tools/clang/lib/CodeGen/CGExprComplex.cpp (working copy) +@@ -12,7 +12,7 @@ + //===----------------------------------------------------------------------===// + + #include "CodeGenFunction.h" +-#include "CodeGenModule.h" ++#include "clang/CodeGen/CodeGenModule.h" + #include "clang/AST/ASTContext.h" + #include "clang/AST/StmtVisitor.h" + #include "llvm/Constants.h" +Index: interpreter/llvm/src/tools/clang/lib/CodeGen/CGExprConstant.cpp +=================================================================== +--- interpreter/llvm/src/tools/clang/lib/CodeGen/CGExprConstant.cpp (revision 47280) ++++ interpreter/llvm/src/tools/clang/lib/CodeGen/CGExprConstant.cpp (working copy) +@@ -12,7 +12,7 @@ + //===----------------------------------------------------------------------===// + + #include "CodeGenFunction.h" +-#include "CodeGenModule.h" ++#include "clang/CodeGen/CodeGenModule.h" + #include "CGCXXABI.h" + #include "CGObjCRuntime.h" + #include "CGRecordLayout.h" +Index: interpreter/llvm/src/tools/clang/lib/CodeGen/CGExprScalar.cpp +=================================================================== +--- interpreter/llvm/src/tools/clang/lib/CodeGen/CGExprScalar.cpp (revision 47280) ++++ interpreter/llvm/src/tools/clang/lib/CodeGen/CGExprScalar.cpp (working copy) +@@ -15,7 +15,7 @@ + #include "CodeGenFunction.h" + #include "CGCXXABI.h" + #include "CGObjCRuntime.h" +-#include "CodeGenModule.h" ++#include "clang/CodeGen/CodeGenModule.h" + #include "CGDebugInfo.h" + #include "clang/AST/ASTContext.h" + #include "clang/AST/DeclObjC.h" +Index: interpreter/llvm/src/tools/clang/lib/CodeGen/CGObjC.cpp +=================================================================== +--- interpreter/llvm/src/tools/clang/lib/CodeGen/CGObjC.cpp (revision 47280) ++++ interpreter/llvm/src/tools/clang/lib/CodeGen/CGObjC.cpp (working copy) +@@ -14,7 +14,7 @@ + #include "CGDebugInfo.h" + #include "CGObjCRuntime.h" + #include "CodeGenFunction.h" +-#include "CodeGenModule.h" ++#include "clang/CodeGen/CodeGenModule.h" + #include "TargetInfo.h" + #include "clang/AST/ASTContext.h" + #include "clang/AST/DeclObjC.h" +Index: interpreter/llvm/src/tools/clang/lib/CodeGen/CGObjCGNU.cpp +=================================================================== +--- interpreter/llvm/src/tools/clang/lib/CodeGen/CGObjCGNU.cpp (revision 47280) ++++ interpreter/llvm/src/tools/clang/lib/CodeGen/CGObjCGNU.cpp (working copy) +@@ -15,7 +15,7 @@ + //===----------------------------------------------------------------------===// + + #include "CGObjCRuntime.h" +-#include "CodeGenModule.h" ++#include "clang/CodeGen/CodeGenModule.h" + #include "CodeGenFunction.h" + #include "CGCleanup.h" + #include "clang/AST/ASTContext.h" +Index: interpreter/llvm/src/tools/clang/lib/CodeGen/CGObjCMac.cpp +=================================================================== +--- interpreter/llvm/src/tools/clang/lib/CodeGen/CGObjCMac.cpp (revision 47280) ++++ interpreter/llvm/src/tools/clang/lib/CodeGen/CGObjCMac.cpp (working copy) +@@ -14,7 +14,7 @@ + #include "CGObjCRuntime.h" + + #include "CGRecordLayout.h" +-#include "CodeGenModule.h" ++#include "clang/CodeGen/CodeGenModule.h" + #include "CodeGenFunction.h" + #include "CGBlocks.h" + #include "CGCleanup.h" +Index: interpreter/llvm/src/tools/clang/lib/CodeGen/CGObjCRuntime.cpp +=================================================================== +--- interpreter/llvm/src/tools/clang/lib/CodeGen/CGObjCRuntime.cpp (revision 47280) ++++ interpreter/llvm/src/tools/clang/lib/CodeGen/CGObjCRuntime.cpp (working copy) +@@ -16,7 +16,7 @@ + #include "CGObjCRuntime.h" + + #include "CGRecordLayout.h" +-#include "CodeGenModule.h" ++#include "clang/CodeGen/CodeGenModule.h" + #include "CodeGenFunction.h" + #include "CGCleanup.h" + +Index: interpreter/llvm/src/tools/clang/lib/CodeGen/CGObjCRuntime.h +=================================================================== +--- interpreter/llvm/src/tools/clang/lib/CodeGen/CGObjCRuntime.h (revision 47280) ++++ interpreter/llvm/src/tools/clang/lib/CodeGen/CGObjCRuntime.h (working copy) +@@ -19,8 +19,8 @@ + #include "clang/AST/DeclObjC.h" + + #include "CGBuilder.h" +-#include "CGCall.h" +-#include "CGValue.h" ++#include "clang/CodeGen/CGCall.h" ++#include "clang/CodeGen/CGValue.h" + + namespace llvm { + class Constant; +Index: interpreter/llvm/src/tools/clang/lib/CodeGen/CGRTTI.cpp +=================================================================== +--- interpreter/llvm/src/tools/clang/lib/CodeGen/CGRTTI.cpp (revision 47280) ++++ interpreter/llvm/src/tools/clang/lib/CodeGen/CGRTTI.cpp (working copy) +@@ -11,7 +11,7 @@ + // + //===----------------------------------------------------------------------===// + +-#include "CodeGenModule.h" ++#include "clang/CodeGen/CodeGenModule.h" + #include "CGCXXABI.h" + #include "clang/AST/RecordLayout.h" + #include "clang/AST/Type.h" +Index: interpreter/llvm/src/tools/clang/lib/CodeGen/CGRecordLayoutBuilder.cpp +=================================================================== +--- interpreter/llvm/src/tools/clang/lib/CodeGen/CGRecordLayoutBuilder.cpp (revision 47280) ++++ interpreter/llvm/src/tools/clang/lib/CodeGen/CGRecordLayoutBuilder.cpp (working copy) +@@ -19,7 +19,7 @@ + #include "clang/AST/Expr.h" + #include "clang/AST/RecordLayout.h" + #include "clang/Frontend/CodeGenOptions.h" +-#include "CodeGenTypes.h" ++#include "clang/CodeGen/CodeGenTypes.h" + #include "CGCXXABI.h" + #include "llvm/DerivedTypes.h" + #include "llvm/Type.h" +Index: interpreter/llvm/src/tools/clang/lib/CodeGen/CGStmt.cpp +=================================================================== +--- interpreter/llvm/src/tools/clang/lib/CodeGen/CGStmt.cpp (revision 47280) ++++ interpreter/llvm/src/tools/clang/lib/CodeGen/CGStmt.cpp (working copy) +@@ -12,7 +12,7 @@ + //===----------------------------------------------------------------------===// + + #include "CGDebugInfo.h" +-#include "CodeGenModule.h" ++#include "clang/CodeGen/CodeGenModule.h" + #include "CodeGenFunction.h" + #include "TargetInfo.h" + #include "clang/AST/StmtVisitor.h" +Index: interpreter/llvm/src/tools/clang/lib/CodeGen/CGVTT.cpp +=================================================================== +--- interpreter/llvm/src/tools/clang/lib/CodeGen/CGVTT.cpp (revision 47280) ++++ interpreter/llvm/src/tools/clang/lib/CodeGen/CGVTT.cpp (working copy) +@@ -11,7 +11,7 @@ + // + //===----------------------------------------------------------------------===// + +-#include "CodeGenModule.h" ++#include "clang/CodeGen/CodeGenModule.h" + #include "CGCXXABI.h" + #include "clang/AST/RecordLayout.h" + #include "clang/AST/VTTBuilder.h" +Index: interpreter/llvm/src/tools/clang/lib/CodeGen/CGVTables.cpp +=================================================================== +--- interpreter/llvm/src/tools/clang/lib/CodeGen/CGVTables.cpp (revision 47280) ++++ interpreter/llvm/src/tools/clang/lib/CodeGen/CGVTables.cpp (working copy) +@@ -11,7 +11,7 @@ + // + //===----------------------------------------------------------------------===// + +-#include "CodeGenModule.h" ++#include "clang/CodeGen/CodeGenModule.h" + #include "CodeGenFunction.h" + #include "CGCXXABI.h" + #include "clang/AST/CXXInheritance.h" +Index: interpreter/llvm/src/tools/clang/lib/CodeGen/CodeGenFunction.cpp +=================================================================== +--- interpreter/llvm/src/tools/clang/lib/CodeGen/CodeGenFunction.cpp (revision 47280) ++++ interpreter/llvm/src/tools/clang/lib/CodeGen/CodeGenFunction.cpp (working copy) +@@ -12,7 +12,7 @@ + //===----------------------------------------------------------------------===// + + #include "CodeGenFunction.h" +-#include "CodeGenModule.h" ++#include "clang/CodeGen/CodeGenModule.h" + #include "CGCUDARuntime.h" + #include "CGCXXABI.h" + #include "CGDebugInfo.h" +Index: interpreter/llvm/src/tools/clang/lib/CodeGen/CodeGenFunction.h +=================================================================== +--- interpreter/llvm/src/tools/clang/lib/CodeGen/CodeGenFunction.h (revision 47280) ++++ interpreter/llvm/src/tools/clang/lib/CodeGen/CodeGenFunction.h (working copy) +@@ -26,10 +26,10 @@ + #include "llvm/ADT/SmallVector.h" + #include "llvm/Support/ValueHandle.h" + #include "llvm/Support/Debug.h" +-#include "CodeGenModule.h" ++#include "clang/CodeGen/CodeGenModule.h" + #include "CGBuilder.h" + #include "CGDebugInfo.h" +-#include "CGValue.h" ++#include "clang/CodeGen/CGValue.h" + + namespace llvm { + class BasicBlock; +Index: interpreter/llvm/src/tools/clang/lib/CodeGen/CodeGenModule.cpp +=================================================================== +--- interpreter/llvm/src/tools/clang/lib/CodeGen/CodeGenModule.cpp (revision 47280) ++++ interpreter/llvm/src/tools/clang/lib/CodeGen/CodeGenModule.cpp (working copy) +@@ -11,11 +11,11 @@ + // + //===----------------------------------------------------------------------===// + +-#include "CodeGenModule.h" ++#include "clang/CodeGen/CodeGenModule.h" + #include "CGDebugInfo.h" + #include "CodeGenFunction.h" + #include "CodeGenTBAA.h" +-#include "CGCall.h" ++#include "clang/CodeGen/CGCall.h" + #include "CGCUDARuntime.h" + #include "CGCXXABI.h" + #include "CGObjCRuntime.h" +Index: interpreter/llvm/src/tools/clang/lib/CodeGen/CodeGenTypes.cpp +=================================================================== +--- interpreter/llvm/src/tools/clang/lib/CodeGen/CodeGenTypes.cpp (revision 47280) ++++ interpreter/llvm/src/tools/clang/lib/CodeGen/CodeGenTypes.cpp (working copy) +@@ -11,8 +11,8 @@ + // + //===----------------------------------------------------------------------===// + +-#include "CodeGenTypes.h" +-#include "CGCall.h" ++#include "clang/CodeGen/CodeGenTypes.h" ++#include "clang/CodeGen/CGCall.h" + #include "CGCXXABI.h" + #include "CGRecordLayout.h" + #include "TargetInfo.h" +Index: interpreter/llvm/src/tools/clang/lib/CodeGen/ItaniumCXXABI.cpp +=================================================================== +--- interpreter/llvm/src/tools/clang/lib/CodeGen/ItaniumCXXABI.cpp (revision 47280) ++++ interpreter/llvm/src/tools/clang/lib/CodeGen/ItaniumCXXABI.cpp (working copy) +@@ -20,9 +20,9 @@ + + #include "CGCXXABI.h" + #include "CGRecordLayout.h" +-#include "CGVTables.h" ++#include "clang/CodeGen/CGVTables.h" + #include "CodeGenFunction.h" +-#include "CodeGenModule.h" ++#include "clang/CodeGen/CodeGenModule.h" + #include "clang/AST/Mangle.h" + #include "clang/AST/Type.h" + #include "llvm/Intrinsics.h" +Index: interpreter/llvm/src/tools/clang/lib/CodeGen/MicrosoftCXXABI.cpp +=================================================================== +--- interpreter/llvm/src/tools/clang/lib/CodeGen/MicrosoftCXXABI.cpp (revision 47280) ++++ interpreter/llvm/src/tools/clang/lib/CodeGen/MicrosoftCXXABI.cpp (working copy) +@@ -15,7 +15,7 @@ + //===----------------------------------------------------------------------===// + + #include "CGCXXABI.h" +-#include "CodeGenModule.h" ++#include "clang/CodeGen/CodeGenModule.h" + #include "clang/AST/Decl.h" + #include "clang/AST/DeclCXX.h" + +Index: interpreter/llvm/src/tools/clang/lib/CodeGen/ModuleBuilder.cpp +=================================================================== +--- interpreter/llvm/src/tools/clang/lib/CodeGen/ModuleBuilder.cpp (revision 47280) ++++ interpreter/llvm/src/tools/clang/lib/CodeGen/ModuleBuilder.cpp (working copy) +@@ -12,7 +12,7 @@ + //===----------------------------------------------------------------------===// + + #include "clang/CodeGen/ModuleBuilder.h" +-#include "CodeGenModule.h" ++#include "clang/CodeGen/CodeGenModule.h" + #include "clang/Frontend/CodeGenOptions.h" + #include "clang/AST/ASTContext.h" + #include "clang/AST/DeclObjC.h" +@@ -49,6 +49,10 @@ + return M.take(); + } + ++ virtual CodeGen::CodeGenModule* GetBuilder() { ++ return Builder.get(); ++ } ++ + virtual void Initialize(ASTContext &Context) { + Ctx = &Context; + +Index: interpreter/llvm/src/tools/clang/lib/CodeGen/TargetInfo.cpp +=================================================================== +--- interpreter/llvm/src/tools/clang/lib/CodeGen/TargetInfo.cpp (revision 47280) ++++ interpreter/llvm/src/tools/clang/lib/CodeGen/TargetInfo.cpp (working copy) +@@ -13,7 +13,7 @@ + //===----------------------------------------------------------------------===// + + #include "TargetInfo.h" +-#include "ABIInfo.h" ++#include "clang/CodeGen/ABIInfo.h" + #include "CodeGenFunction.h" + #include "clang/AST/RecordLayout.h" + #include "clang/Frontend/CodeGenOptions.h"