From d2d2a11a91d7ddf468bfb70f66362d24806ed601 Mon Sep 17 00:00:00 2001 From: Chris Lattner Date: Sat, 14 Jul 2007 01:29:45 +0000 Subject: A significant refactoring of the type size stuff to also compute type alignment. This info is needed for struct layout. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@39850 91177308-0d34-0410-b5e6-96231b3b80d8 --- CodeGen/CodeGenModule.cpp | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) (limited to 'CodeGen/CodeGenModule.cpp') diff --git a/CodeGen/CodeGenModule.cpp b/CodeGen/CodeGenModule.cpp index d091dd73eb..262469e34b 100644 --- a/CodeGen/CodeGenModule.cpp +++ b/CodeGen/CodeGenModule.cpp @@ -26,7 +26,7 @@ using namespace CodeGen; CodeGenModule::CodeGenModule(ASTContext &C, llvm::Module &M) - : Context(C), TheModule(M), Types(C.Target) {} + : Context(C), TheModule(M), Types(C) {} llvm::Constant *CodeGenModule::GetAddrOfGlobalDecl(const Decl *D) { // See if it is already in the map. @@ -68,7 +68,8 @@ void CodeGenModule::EmitGlobalVar(const FileVarDecl *D) { if (D->getInit() == 0) { Init = llvm::Constant::getNullValue(GV->getType()->getElementType()); } else if (D->getType()->isIntegerType()) { - llvm::APSInt Value(getContext().getTypeSize(D->getInit()->getType())); + llvm::APSInt Value(getContext().getTypeSize(D->getInit()->getType(), + SourceLocation())); if (D->getInit()->isIntegerConstantExpr(Value)) Init = llvm::ConstantInt::get(Value); } @@ -103,7 +104,9 @@ void CodeGenModule::EmitGlobalVarDeclarator(const FileVarDecl *D) { llvm::Function *CodeGenModule::getMemCpyFn() { if (MemCpyFn) return MemCpyFn; llvm::Intrinsic::ID IID; - switch (Context.Target.getPointerWidth(SourceLocation())) { + uint64_t Size; unsigned Align; + Context.Target.getPointerInfo(Size, Align, SourceLocation()); + switch (Size) { default: assert(0 && "Unknown ptr width"); case 32: IID = llvm::Intrinsic::memcpy_i32; break; case 64: IID = llvm::Intrinsic::memcpy_i64; break; -- cgit v1.2.3-18-g5258