forked from OSchip/llvm-project
parent
26cf9c4379
commit
dd31ca10ef
|
@ -16,7 +16,7 @@
|
|||
namespace llvm {
|
||||
class Value;
|
||||
class LLVMContext;
|
||||
class TargetData;
|
||||
class DataLayout;
|
||||
}
|
||||
|
||||
namespace clang {
|
||||
|
@ -178,7 +178,7 @@ namespace clang {
|
|||
|
||||
ASTContext &getContext() const;
|
||||
llvm::LLVMContext &getVMContext() const;
|
||||
const llvm::TargetData &getTargetData() const;
|
||||
const llvm::DataLayout &getDataLayout() const;
|
||||
|
||||
virtual void computeInfo(CodeGen::CGFunctionInfo &FI) const = 0;
|
||||
|
||||
|
|
|
@ -27,7 +27,7 @@
|
|||
#include "llvm/Support/TargetRegistry.h"
|
||||
#include "llvm/Support/Timer.h"
|
||||
#include "llvm/Support/raw_ostream.h"
|
||||
#include "llvm/Target/TargetData.h"
|
||||
#include "llvm/DataLayout.h"
|
||||
#include "llvm/Target/TargetLibraryInfo.h"
|
||||
#include "llvm/Target/TargetMachine.h"
|
||||
#include "llvm/Target/TargetOptions.h"
|
||||
|
@ -57,7 +57,7 @@ private:
|
|||
PassManager *getCodeGenPasses() const {
|
||||
if (!CodeGenPasses) {
|
||||
CodeGenPasses = new PassManager();
|
||||
CodeGenPasses->add(new TargetData(TheModule));
|
||||
CodeGenPasses->add(new DataLayout(TheModule));
|
||||
}
|
||||
return CodeGenPasses;
|
||||
}
|
||||
|
@ -65,7 +65,7 @@ private:
|
|||
PassManager *getPerModulePasses() const {
|
||||
if (!PerModulePasses) {
|
||||
PerModulePasses = new PassManager();
|
||||
PerModulePasses->add(new TargetData(TheModule));
|
||||
PerModulePasses->add(new DataLayout(TheModule));
|
||||
}
|
||||
return PerModulePasses;
|
||||
}
|
||||
|
@ -73,7 +73,7 @@ private:
|
|||
FunctionPassManager *getPerFunctionPasses() const {
|
||||
if (!PerFunctionPasses) {
|
||||
PerFunctionPasses = new FunctionPassManager(TheModule);
|
||||
PerFunctionPasses->add(new TargetData(TheModule));
|
||||
PerFunctionPasses->add(new DataLayout(TheModule));
|
||||
}
|
||||
return PerFunctionPasses;
|
||||
}
|
||||
|
|
|
@ -19,7 +19,7 @@
|
|||
#include "clang/AST/DeclObjC.h"
|
||||
#include "llvm/Module.h"
|
||||
#include "llvm/ADT/SmallSet.h"
|
||||
#include "llvm/Target/TargetData.h"
|
||||
#include "llvm/DataLayout.h"
|
||||
#include <algorithm>
|
||||
|
||||
using namespace clang;
|
||||
|
@ -1879,7 +1879,7 @@ llvm::Type *CodeGenFunction::BuildByRefType(const VarDecl *D) {
|
|||
|
||||
// And either 2 or 4 pointers.
|
||||
CurrentOffsetInBytes += (HasCopyAndDispose ? 4 : 2) *
|
||||
CGM.getTargetData().getTypeAllocSize(Int8PtrTy);
|
||||
CGM.getDataLayout().getTypeAllocSize(Int8PtrTy);
|
||||
|
||||
// Align the offset.
|
||||
unsigned AlignedOffsetInBytes =
|
||||
|
|
|
@ -33,7 +33,7 @@ namespace llvm {
|
|||
class Constant;
|
||||
class Function;
|
||||
class GlobalValue;
|
||||
class TargetData;
|
||||
class DataLayout;
|
||||
class FunctionType;
|
||||
class PointerType;
|
||||
class Value;
|
||||
|
|
|
@ -20,7 +20,7 @@
|
|||
#include "clang/AST/Decl.h"
|
||||
#include "clang/Basic/TargetBuiltins.h"
|
||||
#include "llvm/Intrinsics.h"
|
||||
#include "llvm/Target/TargetData.h"
|
||||
#include "llvm/DataLayout.h"
|
||||
|
||||
using namespace clang;
|
||||
using namespace CodeGen;
|
||||
|
|
|
@ -25,7 +25,7 @@
|
|||
#include "clang/Frontend/CodeGenOptions.h"
|
||||
#include "llvm/Attributes.h"
|
||||
#include "llvm/Support/CallSite.h"
|
||||
#include "llvm/Target/TargetData.h"
|
||||
#include "llvm/DataLayout.h"
|
||||
#include "llvm/InlineAsm.h"
|
||||
#include "llvm/Transforms/Utils/Local.h"
|
||||
using namespace clang;
|
||||
|
@ -588,9 +588,9 @@ EnterStructPointerForCoercedAccess(llvm::Value *SrcPtr,
|
|||
// If the first elt is at least as large as what we're looking for, or if the
|
||||
// first element is the same size as the whole struct, we can enter it.
|
||||
uint64_t FirstEltSize =
|
||||
CGF.CGM.getTargetData().getTypeAllocSize(FirstElt);
|
||||
CGF.CGM.getDataLayout().getTypeAllocSize(FirstElt);
|
||||
if (FirstEltSize < DstSize &&
|
||||
FirstEltSize < CGF.CGM.getTargetData().getTypeAllocSize(SrcSTy))
|
||||
FirstEltSize < CGF.CGM.getDataLayout().getTypeAllocSize(SrcSTy))
|
||||
return SrcPtr;
|
||||
|
||||
// GEP into the first element.
|
||||
|
@ -653,14 +653,14 @@ static llvm::Value *CreateCoercedLoad(llvm::Value *SrcPtr,
|
|||
if (SrcTy == Ty)
|
||||
return CGF.Builder.CreateLoad(SrcPtr);
|
||||
|
||||
uint64_t DstSize = CGF.CGM.getTargetData().getTypeAllocSize(Ty);
|
||||
uint64_t DstSize = CGF.CGM.getDataLayout().getTypeAllocSize(Ty);
|
||||
|
||||
if (llvm::StructType *SrcSTy = dyn_cast<llvm::StructType>(SrcTy)) {
|
||||
SrcPtr = EnterStructPointerForCoercedAccess(SrcPtr, SrcSTy, DstSize, CGF);
|
||||
SrcTy = cast<llvm::PointerType>(SrcPtr->getType())->getElementType();
|
||||
}
|
||||
|
||||
uint64_t SrcSize = CGF.CGM.getTargetData().getTypeAllocSize(SrcTy);
|
||||
uint64_t SrcSize = CGF.CGM.getDataLayout().getTypeAllocSize(SrcTy);
|
||||
|
||||
// If the source and destination are integer or pointer types, just do an
|
||||
// extension or truncation to the desired type.
|
||||
|
@ -740,7 +740,7 @@ static void CreateCoercedStore(llvm::Value *Src,
|
|||
return;
|
||||
}
|
||||
|
||||
uint64_t SrcSize = CGF.CGM.getTargetData().getTypeAllocSize(SrcTy);
|
||||
uint64_t SrcSize = CGF.CGM.getDataLayout().getTypeAllocSize(SrcTy);
|
||||
|
||||
if (llvm::StructType *DstSTy = dyn_cast<llvm::StructType>(DstTy)) {
|
||||
DstPtr = EnterStructPointerForCoercedAccess(DstPtr, DstSTy, SrcSize, CGF);
|
||||
|
@ -756,7 +756,7 @@ static void CreateCoercedStore(llvm::Value *Src,
|
|||
return;
|
||||
}
|
||||
|
||||
uint64_t DstSize = CGF.CGM.getTargetData().getTypeAllocSize(DstTy);
|
||||
uint64_t DstSize = CGF.CGM.getDataLayout().getTypeAllocSize(DstTy);
|
||||
|
||||
// If store is legal, just bitcast the src pointer.
|
||||
if (SrcSize <= DstSize) {
|
||||
|
@ -1205,7 +1205,7 @@ void CodeGenFunction::EmitFunctionProlog(const CGFunctionInfo &FI,
|
|||
// The alignment we need to use is the max of the requested alignment for
|
||||
// the argument plus the alignment required by our access code below.
|
||||
unsigned AlignmentToUse =
|
||||
CGM.getTargetData().getABITypeAlignment(ArgI.getCoerceToType());
|
||||
CGM.getDataLayout().getABITypeAlignment(ArgI.getCoerceToType());
|
||||
AlignmentToUse = std::max(AlignmentToUse,
|
||||
(unsigned)getContext().getDeclAlign(Arg).getQuantity());
|
||||
|
||||
|
@ -1226,10 +1226,10 @@ void CodeGenFunction::EmitFunctionProlog(const CGFunctionInfo &FI,
|
|||
// and the optimizer generally likes scalar values better than FCAs.
|
||||
llvm::StructType *STy = dyn_cast<llvm::StructType>(ArgI.getCoerceToType());
|
||||
if (STy && STy->getNumElements() > 1) {
|
||||
uint64_t SrcSize = CGM.getTargetData().getTypeAllocSize(STy);
|
||||
uint64_t SrcSize = CGM.getDataLayout().getTypeAllocSize(STy);
|
||||
llvm::Type *DstTy =
|
||||
cast<llvm::PointerType>(Ptr->getType())->getElementType();
|
||||
uint64_t DstSize = CGM.getTargetData().getTypeAllocSize(DstTy);
|
||||
uint64_t DstSize = CGM.getDataLayout().getTypeAllocSize(DstTy);
|
||||
|
||||
if (SrcSize <= DstSize) {
|
||||
Ptr = Builder.CreateBitCast(Ptr, llvm::PointerType::getUnqual(STy));
|
||||
|
@ -1980,7 +1980,7 @@ RValue CodeGenFunction::EmitCall(const CGFunctionInfo &CallInfo,
|
|||
// we cannot force it to be sufficiently aligned.
|
||||
llvm::Value *Addr = RV.getAggregateAddr();
|
||||
unsigned Align = ArgInfo.getIndirectAlign();
|
||||
const llvm::TargetData *TD = &CGM.getTargetData();
|
||||
const llvm::DataLayout *TD = &CGM.getDataLayout();
|
||||
if ((!ArgInfo.getIndirectByVal() && I->NeedsCopy) ||
|
||||
(ArgInfo.getIndirectByVal() && TypeAlign < Align &&
|
||||
llvm::getOrEnforceKnownAlignment(Addr, Align, TD) < Align)) {
|
||||
|
|
|
@ -34,7 +34,7 @@
|
|||
#include "llvm/ADT/SmallVector.h"
|
||||
#include "llvm/Support/Dwarf.h"
|
||||
#include "llvm/Support/FileSystem.h"
|
||||
#include "llvm/Target/TargetData.h"
|
||||
#include "llvm/DataLayout.h"
|
||||
using namespace clang;
|
||||
using namespace clang::CodeGen;
|
||||
|
||||
|
@ -2460,7 +2460,7 @@ void CGDebugInfo::EmitDeclareOfBlockDeclRefVariable(const VarDecl *VD,
|
|||
unsigned Line = getLineNumber(VD->getLocation());
|
||||
unsigned Column = getColumnNumber(VD->getLocation());
|
||||
|
||||
const llvm::TargetData &target = CGM.getTargetData();
|
||||
const llvm::DataLayout &target = CGM.getDataLayout();
|
||||
|
||||
CharUnits offset = CharUnits::fromQuantity(
|
||||
target.getStructLayout(blockInfo.StructureType)
|
||||
|
@ -2532,7 +2532,7 @@ void CGDebugInfo::EmitDeclareOfBlockLiteralArgVariable(const CGBlockInfo &block,
|
|||
getContextDescriptor(cast<Decl>(blockDecl->getDeclContext()));
|
||||
|
||||
const llvm::StructLayout *blockLayout =
|
||||
CGM.getTargetData().getStructLayout(block.StructureType);
|
||||
CGM.getDataLayout().getStructLayout(block.StructureType);
|
||||
|
||||
SmallVector<llvm::Value*, 16> fields;
|
||||
fields.push_back(createFieldType("__isa", C.VoidPtrTy, 0, loc, AS_public,
|
||||
|
|
|
@ -24,7 +24,7 @@
|
|||
#include "clang/Frontend/CodeGenOptions.h"
|
||||
#include "llvm/GlobalVariable.h"
|
||||
#include "llvm/Intrinsics.h"
|
||||
#include "llvm/Target/TargetData.h"
|
||||
#include "llvm/DataLayout.h"
|
||||
#include "llvm/Type.h"
|
||||
using namespace clang;
|
||||
using namespace CodeGen;
|
||||
|
@ -1060,7 +1060,7 @@ void CodeGenFunction::EmitAutoVarInit(const AutoVarEmission &emission) {
|
|||
// If the initializer is all or mostly zeros, codegen with memset then do
|
||||
// a few stores afterward.
|
||||
if (shouldUseMemSetPlusStoresToInitialize(constant,
|
||||
CGM.getTargetData().getTypeAllocSize(constant->getType()))) {
|
||||
CGM.getDataLayout().getTypeAllocSize(constant->getType()))) {
|
||||
Builder.CreateMemSet(Loc, llvm::ConstantInt::get(Int8Ty, 0), SizeVal,
|
||||
alignment.getQuantity(), isVolatile);
|
||||
// Zero and undef don't require a stores.
|
||||
|
|
|
@ -26,7 +26,7 @@
|
|||
#include "llvm/Intrinsics.h"
|
||||
#include "llvm/LLVMContext.h"
|
||||
#include "llvm/MDBuilder.h"
|
||||
#include "llvm/Target/TargetData.h"
|
||||
#include "llvm/DataLayout.h"
|
||||
using namespace clang;
|
||||
using namespace CodeGen;
|
||||
|
||||
|
@ -1160,7 +1160,7 @@ RValue CodeGenFunction::EmitLoadOfBitfieldLValue(LValue LV) {
|
|||
|
||||
// Get the output type.
|
||||
llvm::Type *ResLTy = ConvertType(LV.getType());
|
||||
unsigned ResSizeInBits = CGM.getTargetData().getTypeSizeInBits(ResLTy);
|
||||
unsigned ResSizeInBits = CGM.getDataLayout().getTypeSizeInBits(ResLTy);
|
||||
|
||||
// Compute the result as an OR of all of the individual component accesses.
|
||||
llvm::Value *Res = 0;
|
||||
|
@ -1358,7 +1358,7 @@ void CodeGenFunction::EmitStoreThroughBitfieldLValue(RValue Src, LValue Dst,
|
|||
|
||||
// Get the output type.
|
||||
llvm::Type *ResLTy = ConvertTypeForMem(Dst.getType());
|
||||
unsigned ResSizeInBits = CGM.getTargetData().getTypeSizeInBits(ResLTy);
|
||||
unsigned ResSizeInBits = CGM.getDataLayout().getTypeSizeInBits(ResLTy);
|
||||
|
||||
// Get the source value, truncated to the width of the bit-field.
|
||||
llvm::Value *SrcVal = Src.getScalarVal();
|
||||
|
|
|
@ -24,7 +24,7 @@
|
|||
#include "llvm/Constants.h"
|
||||
#include "llvm/Function.h"
|
||||
#include "llvm/GlobalVariable.h"
|
||||
#include "llvm/Target/TargetData.h"
|
||||
#include "llvm/DataLayout.h"
|
||||
using namespace clang;
|
||||
using namespace CodeGen;
|
||||
|
||||
|
@ -79,12 +79,12 @@ private:
|
|||
CharUnits getAlignment(const llvm::Constant *C) const {
|
||||
if (Packed) return CharUnits::One();
|
||||
return CharUnits::fromQuantity(
|
||||
CGM.getTargetData().getABITypeAlignment(C->getType()));
|
||||
CGM.getDataLayout().getABITypeAlignment(C->getType()));
|
||||
}
|
||||
|
||||
CharUnits getSizeInChars(const llvm::Constant *C) const {
|
||||
return CharUnits::fromQuantity(
|
||||
CGM.getTargetData().getTypeAllocSize(C->getType()));
|
||||
CGM.getDataLayout().getTypeAllocSize(C->getType()));
|
||||
}
|
||||
};
|
||||
|
||||
|
@ -204,7 +204,7 @@ void ConstStructBuilder::AppendBitField(const FieldDecl *Field,
|
|||
if (!FitsCompletelyInPreviousByte) {
|
||||
unsigned NewFieldWidth = FieldSize - BitsInPreviousByte;
|
||||
|
||||
if (CGM.getTargetData().isBigEndian()) {
|
||||
if (CGM.getDataLayout().isBigEndian()) {
|
||||
Tmp = Tmp.lshr(NewFieldWidth);
|
||||
Tmp = Tmp.trunc(BitsInPreviousByte);
|
||||
|
||||
|
@ -220,7 +220,7 @@ void ConstStructBuilder::AppendBitField(const FieldDecl *Field,
|
|||
}
|
||||
|
||||
Tmp = Tmp.zext(CharWidth);
|
||||
if (CGM.getTargetData().isBigEndian()) {
|
||||
if (CGM.getDataLayout().isBigEndian()) {
|
||||
if (FitsCompletelyInPreviousByte)
|
||||
Tmp = Tmp.shl(BitsInPreviousByte - FieldValue.getBitWidth());
|
||||
} else {
|
||||
|
@ -269,7 +269,7 @@ void ConstStructBuilder::AppendBitField(const FieldDecl *Field,
|
|||
while (FieldValue.getBitWidth() > CharWidth) {
|
||||
llvm::APInt Tmp;
|
||||
|
||||
if (CGM.getTargetData().isBigEndian()) {
|
||||
if (CGM.getDataLayout().isBigEndian()) {
|
||||
// We want the high bits.
|
||||
Tmp =
|
||||
FieldValue.lshr(FieldValue.getBitWidth() - CharWidth).trunc(CharWidth);
|
||||
|
@ -292,7 +292,7 @@ void ConstStructBuilder::AppendBitField(const FieldDecl *Field,
|
|||
"Should not have more than a byte left!");
|
||||
|
||||
if (FieldValue.getBitWidth() < CharWidth) {
|
||||
if (CGM.getTargetData().isBigEndian()) {
|
||||
if (CGM.getDataLayout().isBigEndian()) {
|
||||
unsigned BitWidth = FieldValue.getBitWidth();
|
||||
|
||||
FieldValue = FieldValue.zext(CharWidth) << (CharWidth - BitWidth);
|
||||
|
@ -337,7 +337,7 @@ void ConstStructBuilder::ConvertStructToPacked() {
|
|||
llvm::Constant *C = Elements[i];
|
||||
|
||||
CharUnits ElementAlign = CharUnits::fromQuantity(
|
||||
CGM.getTargetData().getABITypeAlignment(C->getType()));
|
||||
CGM.getDataLayout().getABITypeAlignment(C->getType()));
|
||||
CharUnits AlignedElementOffsetInChars =
|
||||
ElementOffsetInChars.RoundUpToAlignment(ElementAlign);
|
||||
|
||||
|
@ -665,8 +665,8 @@ public:
|
|||
SmallVector<llvm::Type*, 2> Types;
|
||||
Elts.push_back(C);
|
||||
Types.push_back(C->getType());
|
||||
unsigned CurSize = CGM.getTargetData().getTypeAllocSize(C->getType());
|
||||
unsigned TotalSize = CGM.getTargetData().getTypeAllocSize(destType);
|
||||
unsigned CurSize = CGM.getDataLayout().getTypeAllocSize(C->getType());
|
||||
unsigned TotalSize = CGM.getDataLayout().getTypeAllocSize(destType);
|
||||
|
||||
assert(CurSize <= TotalSize && "Union size mismatch!");
|
||||
if (unsigned NumPadBytes = TotalSize - CurSize) {
|
||||
|
|
|
@ -28,7 +28,7 @@
|
|||
#include "llvm/Intrinsics.h"
|
||||
#include "llvm/Module.h"
|
||||
#include "llvm/Support/CFG.h"
|
||||
#include "llvm/Target/TargetData.h"
|
||||
#include "llvm/DataLayout.h"
|
||||
#include <cstdarg>
|
||||
|
||||
using namespace clang;
|
||||
|
|
|
@ -21,7 +21,7 @@
|
|||
#include "clang/AST/StmtObjC.h"
|
||||
#include "clang/Basic/Diagnostic.h"
|
||||
#include "llvm/ADT/STLExtras.h"
|
||||
#include "llvm/Target/TargetData.h"
|
||||
#include "llvm/DataLayout.h"
|
||||
#include "llvm/InlineAsm.h"
|
||||
using namespace clang;
|
||||
using namespace CodeGen;
|
||||
|
|
|
@ -33,7 +33,7 @@
|
|||
#include "llvm/ADT/StringMap.h"
|
||||
#include "llvm/Support/CallSite.h"
|
||||
#include "llvm/Support/Compiler.h"
|
||||
#include "llvm/Target/TargetData.h"
|
||||
#include "llvm/DataLayout.h"
|
||||
|
||||
#include <cstdarg>
|
||||
|
||||
|
@ -1471,7 +1471,7 @@ llvm::Constant *CGObjCGNU::GenerateClassStructure(
|
|||
Elements.push_back(Zero);
|
||||
Elements.push_back(llvm::ConstantInt::get(LongTy, info));
|
||||
if (isMeta) {
|
||||
llvm::TargetData td(&TheModule);
|
||||
llvm::DataLayout td(&TheModule);
|
||||
Elements.push_back(
|
||||
llvm::ConstantInt::get(LongTy,
|
||||
td.getTypeSizeInBits(ClassTy) /
|
||||
|
@ -2369,7 +2369,7 @@ llvm::Function *CGObjCGNU::ModuleInitFunction() {
|
|||
// Runtime version, used for ABI compatibility checking.
|
||||
Elements.push_back(llvm::ConstantInt::get(LongTy, RuntimeVersion));
|
||||
// sizeof(ModuleTy)
|
||||
llvm::TargetData td(&TheModule);
|
||||
llvm::DataLayout td(&TheModule);
|
||||
Elements.push_back(
|
||||
llvm::ConstantInt::get(LongTy,
|
||||
td.getTypeSizeInBits(ModuleTy) /
|
||||
|
|
|
@ -36,7 +36,7 @@
|
|||
#include "llvm/ADT/SmallPtrSet.h"
|
||||
#include "llvm/Support/CallSite.h"
|
||||
#include "llvm/Support/raw_ostream.h"
|
||||
#include "llvm/Target/TargetData.h"
|
||||
#include "llvm/DataLayout.h"
|
||||
#include <cstdio>
|
||||
|
||||
using namespace clang;
|
||||
|
@ -1807,7 +1807,7 @@ llvm::Constant *CGObjCCommonMac::BuildGCBlockLayout(CodeGenModule &CGM,
|
|||
|
||||
// Calculate the basic layout of the block structure.
|
||||
const llvm::StructLayout *layout =
|
||||
CGM.getTargetData().getStructLayout(blockInfo.StructureType);
|
||||
CGM.getDataLayout().getStructLayout(blockInfo.StructureType);
|
||||
|
||||
// Ignore the optional 'this' capture: C++ objects are not assumed
|
||||
// to be GC'ed.
|
||||
|
@ -2040,7 +2040,7 @@ CGObjCMac::EmitProtocolExtension(const ObjCProtocolDecl *PD,
|
|||
ArrayRef<llvm::Constant*> OptClassMethods,
|
||||
ArrayRef<llvm::Constant*> MethodTypesExt) {
|
||||
uint64_t Size =
|
||||
CGM.getTargetData().getTypeAllocSize(ObjCTypes.ProtocolExtensionTy);
|
||||
CGM.getDataLayout().getTypeAllocSize(ObjCTypes.ProtocolExtensionTy);
|
||||
llvm::Constant *Values[] = {
|
||||
llvm::ConstantInt::get(ObjCTypes.IntTy, Size),
|
||||
EmitMethodDescList("\01L_OBJC_PROTOCOL_INSTANCE_METHODS_OPT_"
|
||||
|
@ -2180,7 +2180,7 @@ llvm::Constant *CGObjCCommonMac::EmitPropertyList(Twine Name,
|
|||
return llvm::Constant::getNullValue(ObjCTypes.PropertyListPtrTy);
|
||||
|
||||
unsigned PropertySize =
|
||||
CGM.getTargetData().getTypeAllocSize(ObjCTypes.PropertyTy);
|
||||
CGM.getDataLayout().getTypeAllocSize(ObjCTypes.PropertyTy);
|
||||
llvm::Constant *Values[3];
|
||||
Values[0] = llvm::ConstantInt::get(ObjCTypes.IntTy, PropertySize);
|
||||
Values[1] = llvm::ConstantInt::get(ObjCTypes.IntTy, Properties.size());
|
||||
|
@ -2269,7 +2269,7 @@ CGObjCMac::EmitMethodDescList(Twine Name, const char *Section,
|
|||
};
|
||||
*/
|
||||
void CGObjCMac::GenerateCategory(const ObjCCategoryImplDecl *OCD) {
|
||||
unsigned Size = CGM.getTargetData().getTypeAllocSize(ObjCTypes.CategoryTy);
|
||||
unsigned Size = CGM.getDataLayout().getTypeAllocSize(ObjCTypes.CategoryTy);
|
||||
|
||||
// FIXME: This is poor design, the OCD should have a pointer to the category
|
||||
// decl. Additionally, note that Category can be null for the @implementation
|
||||
|
@ -2471,7 +2471,7 @@ llvm::Constant *CGObjCMac::EmitMetaClass(const ObjCImplementationDecl *ID,
|
|||
llvm::Constant *Protocols,
|
||||
ArrayRef<llvm::Constant*> Methods) {
|
||||
unsigned Flags = eClassFlags_Meta;
|
||||
unsigned Size = CGM.getTargetData().getTypeAllocSize(ObjCTypes.ClassTy);
|
||||
unsigned Size = CGM.getDataLayout().getTypeAllocSize(ObjCTypes.ClassTy);
|
||||
|
||||
if (ID->getClassInterface()->getVisibility() == HiddenVisibility)
|
||||
Flags |= eClassFlags_Hidden;
|
||||
|
@ -2588,7 +2588,7 @@ llvm::Value *CGObjCMac::EmitSuperClassRef(const ObjCInterfaceDecl *ID) {
|
|||
llvm::Constant *
|
||||
CGObjCMac::EmitClassExtension(const ObjCImplementationDecl *ID) {
|
||||
uint64_t Size =
|
||||
CGM.getTargetData().getTypeAllocSize(ObjCTypes.ClassExtensionTy);
|
||||
CGM.getDataLayout().getTypeAllocSize(ObjCTypes.ClassExtensionTy);
|
||||
|
||||
llvm::Constant *Values[3];
|
||||
Values[0] = llvm::ConstantInt::get(ObjCTypes.IntTy, Size);
|
||||
|
@ -3481,7 +3481,7 @@ void CGObjCMac::EmitObjCWeakAssign(CodeGen::CodeGenFunction &CGF,
|
|||
llvm::Value *src, llvm::Value *dst) {
|
||||
llvm::Type * SrcTy = src->getType();
|
||||
if (!isa<llvm::PointerType>(SrcTy)) {
|
||||
unsigned Size = CGM.getTargetData().getTypeAllocSize(SrcTy);
|
||||
unsigned Size = CGM.getDataLayout().getTypeAllocSize(SrcTy);
|
||||
assert(Size <= 8 && "does not support size > 8");
|
||||
src = (Size == 4) ? CGF.Builder.CreateBitCast(src, ObjCTypes.IntTy)
|
||||
: CGF.Builder.CreateBitCast(src, ObjCTypes.LongLongTy);
|
||||
|
@ -3502,7 +3502,7 @@ void CGObjCMac::EmitObjCGlobalAssign(CodeGen::CodeGenFunction &CGF,
|
|||
bool threadlocal) {
|
||||
llvm::Type * SrcTy = src->getType();
|
||||
if (!isa<llvm::PointerType>(SrcTy)) {
|
||||
unsigned Size = CGM.getTargetData().getTypeAllocSize(SrcTy);
|
||||
unsigned Size = CGM.getDataLayout().getTypeAllocSize(SrcTy);
|
||||
assert(Size <= 8 && "does not support size > 8");
|
||||
src = (Size == 4) ? CGF.Builder.CreateBitCast(src, ObjCTypes.IntTy)
|
||||
: CGF.Builder.CreateBitCast(src, ObjCTypes.LongLongTy);
|
||||
|
@ -3528,7 +3528,7 @@ void CGObjCMac::EmitObjCIvarAssign(CodeGen::CodeGenFunction &CGF,
|
|||
assert(ivarOffset && "EmitObjCIvarAssign - ivarOffset is NULL");
|
||||
llvm::Type * SrcTy = src->getType();
|
||||
if (!isa<llvm::PointerType>(SrcTy)) {
|
||||
unsigned Size = CGM.getTargetData().getTypeAllocSize(SrcTy);
|
||||
unsigned Size = CGM.getDataLayout().getTypeAllocSize(SrcTy);
|
||||
assert(Size <= 8 && "does not support size > 8");
|
||||
src = (Size == 4) ? CGF.Builder.CreateBitCast(src, ObjCTypes.IntTy)
|
||||
: CGF.Builder.CreateBitCast(src, ObjCTypes.LongLongTy);
|
||||
|
@ -3548,7 +3548,7 @@ void CGObjCMac::EmitObjCStrongCastAssign(CodeGen::CodeGenFunction &CGF,
|
|||
llvm::Value *src, llvm::Value *dst) {
|
||||
llvm::Type * SrcTy = src->getType();
|
||||
if (!isa<llvm::PointerType>(SrcTy)) {
|
||||
unsigned Size = CGM.getTargetData().getTypeAllocSize(SrcTy);
|
||||
unsigned Size = CGM.getDataLayout().getTypeAllocSize(SrcTy);
|
||||
assert(Size <= 8 && "does not support size > 8");
|
||||
src = (Size == 4) ? CGF.Builder.CreateBitCast(src, ObjCTypes.IntTy)
|
||||
: CGF.Builder.CreateBitCast(src, ObjCTypes.LongLongTy);
|
||||
|
@ -3679,7 +3679,7 @@ void CGObjCCommonMac::EmitImageInfo() {
|
|||
static const int ModuleVersion = 7;
|
||||
|
||||
void CGObjCMac::EmitModuleInfo() {
|
||||
uint64_t Size = CGM.getTargetData().getTypeAllocSize(ObjCTypes.ModuleTy);
|
||||
uint64_t Size = CGM.getDataLayout().getTypeAllocSize(ObjCTypes.ModuleTy);
|
||||
|
||||
llvm::Constant *Values[] = {
|
||||
llvm::ConstantInt::get(ObjCTypes.LongTy, ModuleVersion),
|
||||
|
@ -3824,7 +3824,7 @@ void CGObjCCommonMac::BuildAggrIvarRecordLayout(const RecordType *RT,
|
|||
Fields.push_back(*i);
|
||||
llvm::Type *Ty = CGM.getTypes().ConvertType(QualType(RT, 0));
|
||||
const llvm::StructLayout *RecLayout =
|
||||
CGM.getTargetData().getStructLayout(cast<llvm::StructType>(Ty));
|
||||
CGM.getDataLayout().getStructLayout(cast<llvm::StructType>(Ty));
|
||||
|
||||
BuildAggrIvarLayout(0, RecLayout, RD, Fields, BytePos,
|
||||
ForStrongLayout, HasUnion);
|
||||
|
@ -4005,7 +4005,7 @@ llvm::Constant *CGObjCCommonMac::BuildIvarLayoutBitmap(std::string &BitMap) {
|
|||
// Build the string of skip/scan nibbles
|
||||
SmallVector<SKIP_SCAN, 32> SkipScanIvars;
|
||||
unsigned int WordSize =
|
||||
CGM.getTypes().getTargetData().getTypeAllocSize(PtrTy);
|
||||
CGM.getTypes().getDataLayout().getTypeAllocSize(PtrTy);
|
||||
if (IvarsInfo[0].ivar_bytepos == 0) {
|
||||
WordsToSkip = 0;
|
||||
WordsToScan = IvarsInfo[0].ivar_size;
|
||||
|
@ -4835,7 +4835,7 @@ AddModuleClassList(ArrayRef<llvm::GlobalValue*> Container,
|
|||
llvm::GlobalValue::InternalLinkage,
|
||||
Init,
|
||||
SymbolName);
|
||||
GV->setAlignment(CGM.getTargetData().getABITypeAlignment(Init->getType()));
|
||||
GV->setAlignment(CGM.getDataLayout().getABITypeAlignment(Init->getType()));
|
||||
GV->setSection(SectionName);
|
||||
CGM.AddUsedGlobal(GV);
|
||||
}
|
||||
|
@ -5051,7 +5051,7 @@ llvm::GlobalVariable * CGObjCNonFragileABIMac::BuildClassRoTInitializer(
|
|||
std::string("\01l_OBJC_METACLASS_RO_$_")+ClassName :
|
||||
std::string("\01l_OBJC_CLASS_RO_$_")+ClassName);
|
||||
CLASS_RO_GV->setAlignment(
|
||||
CGM.getTargetData().getABITypeAlignment(ObjCTypes.ClassRonfABITy));
|
||||
CGM.getDataLayout().getABITypeAlignment(ObjCTypes.ClassRonfABITy));
|
||||
CLASS_RO_GV->setSection("__DATA, __objc_const");
|
||||
return CLASS_RO_GV;
|
||||
|
||||
|
@ -5088,7 +5088,7 @@ llvm::GlobalVariable * CGObjCNonFragileABIMac::BuildClassMetaData(
|
|||
GV->setInitializer(Init);
|
||||
GV->setSection("__DATA, __objc_data");
|
||||
GV->setAlignment(
|
||||
CGM.getTargetData().getABITypeAlignment(ObjCTypes.ClassnfABITy));
|
||||
CGM.getDataLayout().getABITypeAlignment(ObjCTypes.ClassnfABITy));
|
||||
if (HiddenVisibility)
|
||||
GV->setVisibility(llvm::GlobalValue::HiddenVisibility);
|
||||
return GV;
|
||||
|
@ -5138,7 +5138,7 @@ void CGObjCNonFragileABIMac::GenerateClass(const ObjCImplementationDecl *ID) {
|
|||
"CGObjCNonFragileABIMac::GenerateClass - class is 0");
|
||||
// FIXME: Is this correct (that meta class size is never computed)?
|
||||
uint32_t InstanceStart =
|
||||
CGM.getTargetData().getTypeAllocSize(ObjCTypes.ClassnfABITy);
|
||||
CGM.getDataLayout().getTypeAllocSize(ObjCTypes.ClassnfABITy);
|
||||
uint32_t InstanceSize = InstanceStart;
|
||||
uint32_t flags = CLS_META;
|
||||
std::string ObjCMetaClassName(getMetaclassSymbolPrefix());
|
||||
|
@ -5344,7 +5344,7 @@ void CGObjCNonFragileABIMac::GenerateCategory(const ObjCCategoryImplDecl *OCD) {
|
|||
Init,
|
||||
ExtCatName);
|
||||
GCATV->setAlignment(
|
||||
CGM.getTargetData().getABITypeAlignment(ObjCTypes.CategorynfABITy));
|
||||
CGM.getDataLayout().getABITypeAlignment(ObjCTypes.CategorynfABITy));
|
||||
GCATV->setSection("__DATA, __objc_const");
|
||||
CGM.AddUsedGlobal(GCATV);
|
||||
DefinedCategories.push_back(GCATV);
|
||||
|
@ -5391,7 +5391,7 @@ CGObjCNonFragileABIMac::EmitMethodList(Twine Name,
|
|||
|
||||
llvm::Constant *Values[3];
|
||||
// sizeof(struct _objc_method)
|
||||
unsigned Size = CGM.getTargetData().getTypeAllocSize(ObjCTypes.MethodTy);
|
||||
unsigned Size = CGM.getDataLayout().getTypeAllocSize(ObjCTypes.MethodTy);
|
||||
Values[0] = llvm::ConstantInt::get(ObjCTypes.IntTy, Size);
|
||||
// method_count
|
||||
Values[1] = llvm::ConstantInt::get(ObjCTypes.IntTy, Methods.size());
|
||||
|
@ -5403,7 +5403,7 @@ CGObjCNonFragileABIMac::EmitMethodList(Twine Name,
|
|||
llvm::GlobalVariable *GV =
|
||||
new llvm::GlobalVariable(CGM.getModule(), Init->getType(), false,
|
||||
llvm::GlobalValue::InternalLinkage, Init, Name);
|
||||
GV->setAlignment(CGM.getTargetData().getABITypeAlignment(Init->getType()));
|
||||
GV->setAlignment(CGM.getDataLayout().getABITypeAlignment(Init->getType()));
|
||||
GV->setSection(Section);
|
||||
CGM.AddUsedGlobal(GV);
|
||||
return llvm::ConstantExpr::getBitCast(GV, ObjCTypes.MethodListnfABIPtrTy);
|
||||
|
@ -5437,7 +5437,7 @@ CGObjCNonFragileABIMac::EmitIvarOffsetVar(const ObjCInterfaceDecl *ID,
|
|||
IvarOffsetGV->setInitializer(llvm::ConstantInt::get(ObjCTypes.LongTy,
|
||||
Offset));
|
||||
IvarOffsetGV->setAlignment(
|
||||
CGM.getTargetData().getABITypeAlignment(ObjCTypes.LongTy));
|
||||
CGM.getDataLayout().getABITypeAlignment(ObjCTypes.LongTy));
|
||||
|
||||
// FIXME: This matches gcc, but shouldn't the visibility be set on the use as
|
||||
// well (i.e., in ObjCIvarOffsetVariable).
|
||||
|
@ -5490,7 +5490,7 @@ llvm::Constant *CGObjCNonFragileABIMac::EmitIvarList(
|
|||
Ivar[2] = GetMethodVarType(IVD);
|
||||
llvm::Type *FieldTy =
|
||||
CGM.getTypes().ConvertTypeForMem(IVD->getType());
|
||||
unsigned Size = CGM.getTargetData().getTypeAllocSize(FieldTy);
|
||||
unsigned Size = CGM.getDataLayout().getTypeAllocSize(FieldTy);
|
||||
unsigned Align = CGM.getContext().getPreferredTypeAlign(
|
||||
IVD->getType().getTypePtr()) >> 3;
|
||||
Align = llvm::Log2_32(Align);
|
||||
|
@ -5508,7 +5508,7 @@ llvm::Constant *CGObjCNonFragileABIMac::EmitIvarList(
|
|||
return llvm::Constant::getNullValue(ObjCTypes.IvarListnfABIPtrTy);
|
||||
|
||||
llvm::Constant *Values[3];
|
||||
unsigned Size = CGM.getTargetData().getTypeAllocSize(ObjCTypes.IvarnfABITy);
|
||||
unsigned Size = CGM.getDataLayout().getTypeAllocSize(ObjCTypes.IvarnfABITy);
|
||||
Values[0] = llvm::ConstantInt::get(ObjCTypes.IntTy, Size);
|
||||
Values[1] = llvm::ConstantInt::get(ObjCTypes.IntTy, Ivars.size());
|
||||
llvm::ArrayType *AT = llvm::ArrayType::get(ObjCTypes.IvarnfABITy,
|
||||
|
@ -5522,7 +5522,7 @@ llvm::Constant *CGObjCNonFragileABIMac::EmitIvarList(
|
|||
Init,
|
||||
Prefix + OID->getName());
|
||||
GV->setAlignment(
|
||||
CGM.getTargetData().getABITypeAlignment(Init->getType()));
|
||||
CGM.getDataLayout().getABITypeAlignment(Init->getType()));
|
||||
GV->setSection("__DATA, __objc_const");
|
||||
|
||||
CGM.AddUsedGlobal(GV);
|
||||
|
@ -5644,7 +5644,7 @@ llvm::Constant *CGObjCNonFragileABIMac::GetOrEmitProtocol(
|
|||
Values[7] = EmitPropertyList("\01l_OBJC_$_PROP_LIST_" + PD->getName(),
|
||||
0, PD, ObjCTypes);
|
||||
uint32_t Size =
|
||||
CGM.getTargetData().getTypeAllocSize(ObjCTypes.ProtocolnfABITy);
|
||||
CGM.getDataLayout().getTypeAllocSize(ObjCTypes.ProtocolnfABITy);
|
||||
Values[8] = llvm::ConstantInt::get(ObjCTypes.IntTy, Size);
|
||||
Values[9] = llvm::Constant::getNullValue(ObjCTypes.IntTy);
|
||||
Values[10] = EmitProtocolMethodTypes("\01l_OBJC_$_PROTOCOL_METHOD_TYPES_"
|
||||
|
@ -5663,7 +5663,7 @@ llvm::Constant *CGObjCNonFragileABIMac::GetOrEmitProtocol(
|
|||
false, llvm::GlobalValue::WeakAnyLinkage, Init,
|
||||
"\01l_OBJC_PROTOCOL_$_" + PD->getName());
|
||||
Entry->setAlignment(
|
||||
CGM.getTargetData().getABITypeAlignment(ObjCTypes.ProtocolnfABITy));
|
||||
CGM.getDataLayout().getABITypeAlignment(ObjCTypes.ProtocolnfABITy));
|
||||
Entry->setSection("__DATA,__datacoal_nt,coalesced");
|
||||
|
||||
Protocols[PD->getIdentifier()] = Entry;
|
||||
|
@ -5678,7 +5678,7 @@ llvm::Constant *CGObjCNonFragileABIMac::GetOrEmitProtocol(
|
|||
false, llvm::GlobalValue::WeakAnyLinkage, Entry,
|
||||
"\01l_OBJC_LABEL_PROTOCOL_$_" + PD->getName());
|
||||
PTGV->setAlignment(
|
||||
CGM.getTargetData().getABITypeAlignment(ObjCTypes.ProtocolnfABIPtrTy));
|
||||
CGM.getDataLayout().getABITypeAlignment(ObjCTypes.ProtocolnfABIPtrTy));
|
||||
PTGV->setSection("__DATA, __objc_protolist, coalesced, no_dead_strip");
|
||||
PTGV->setVisibility(llvm::GlobalValue::HiddenVisibility);
|
||||
CGM.AddUsedGlobal(PTGV);
|
||||
|
@ -5732,7 +5732,7 @@ CGObjCNonFragileABIMac::EmitProtocolList(Twine Name,
|
|||
Init, Name);
|
||||
GV->setSection("__DATA, __objc_const");
|
||||
GV->setAlignment(
|
||||
CGM.getTargetData().getABITypeAlignment(Init->getType()));
|
||||
CGM.getDataLayout().getABITypeAlignment(Init->getType()));
|
||||
CGM.AddUsedGlobal(GV);
|
||||
return llvm::ConstantExpr::getBitCast(GV,
|
||||
ObjCTypes.ProtocolListnfABIPtrTy);
|
||||
|
@ -5970,7 +5970,7 @@ llvm::Value *CGObjCNonFragileABIMac::EmitClassRefFromId(CGBuilderTy &Builder,
|
|||
ClassGV,
|
||||
"\01L_OBJC_CLASSLIST_REFERENCES_$_");
|
||||
Entry->setAlignment(
|
||||
CGM.getTargetData().getABITypeAlignment(
|
||||
CGM.getDataLayout().getABITypeAlignment(
|
||||
ObjCTypes.ClassnfABIPtrTy));
|
||||
Entry->setSection("__DATA, __objc_classrefs, regular, no_dead_strip");
|
||||
CGM.AddUsedGlobal(Entry);
|
||||
|
@ -6004,7 +6004,7 @@ CGObjCNonFragileABIMac::EmitSuperClassRef(CGBuilderTy &Builder,
|
|||
ClassGV,
|
||||
"\01L_OBJC_CLASSLIST_SUP_REFS_$_");
|
||||
Entry->setAlignment(
|
||||
CGM.getTargetData().getABITypeAlignment(
|
||||
CGM.getDataLayout().getABITypeAlignment(
|
||||
ObjCTypes.ClassnfABIPtrTy));
|
||||
Entry->setSection("__DATA, __objc_superrefs, regular, no_dead_strip");
|
||||
CGM.AddUsedGlobal(Entry);
|
||||
|
@ -6030,7 +6030,7 @@ llvm::Value *CGObjCNonFragileABIMac::EmitMetaClassRef(CGBuilderTy &Builder,
|
|||
MetaClassGV,
|
||||
"\01L_OBJC_CLASSLIST_SUP_REFS_$_");
|
||||
Entry->setAlignment(
|
||||
CGM.getTargetData().getABITypeAlignment(
|
||||
CGM.getDataLayout().getABITypeAlignment(
|
||||
ObjCTypes.ClassnfABIPtrTy));
|
||||
|
||||
Entry->setSection("__DATA, __objc_superrefs, regular, no_dead_strip");
|
||||
|
@ -6143,7 +6143,7 @@ void CGObjCNonFragileABIMac::EmitObjCIvarAssign(CodeGen::CodeGenFunction &CGF,
|
|||
llvm::Value *ivarOffset) {
|
||||
llvm::Type * SrcTy = src->getType();
|
||||
if (!isa<llvm::PointerType>(SrcTy)) {
|
||||
unsigned Size = CGM.getTargetData().getTypeAllocSize(SrcTy);
|
||||
unsigned Size = CGM.getDataLayout().getTypeAllocSize(SrcTy);
|
||||
assert(Size <= 8 && "does not support size > 8");
|
||||
src = (Size == 4 ? CGF.Builder.CreateBitCast(src, ObjCTypes.IntTy)
|
||||
: CGF.Builder.CreateBitCast(src, ObjCTypes.LongTy));
|
||||
|
@ -6164,7 +6164,7 @@ void CGObjCNonFragileABIMac::EmitObjCStrongCastAssign(
|
|||
llvm::Value *src, llvm::Value *dst) {
|
||||
llvm::Type * SrcTy = src->getType();
|
||||
if (!isa<llvm::PointerType>(SrcTy)) {
|
||||
unsigned Size = CGM.getTargetData().getTypeAllocSize(SrcTy);
|
||||
unsigned Size = CGM.getDataLayout().getTypeAllocSize(SrcTy);
|
||||
assert(Size <= 8 && "does not support size > 8");
|
||||
src = (Size == 4 ? CGF.Builder.CreateBitCast(src, ObjCTypes.IntTy)
|
||||
: CGF.Builder.CreateBitCast(src, ObjCTypes.LongTy));
|
||||
|
@ -6211,7 +6211,7 @@ void CGObjCNonFragileABIMac::EmitObjCWeakAssign(CodeGen::CodeGenFunction &CGF,
|
|||
llvm::Value *src, llvm::Value *dst) {
|
||||
llvm::Type * SrcTy = src->getType();
|
||||
if (!isa<llvm::PointerType>(SrcTy)) {
|
||||
unsigned Size = CGM.getTargetData().getTypeAllocSize(SrcTy);
|
||||
unsigned Size = CGM.getDataLayout().getTypeAllocSize(SrcTy);
|
||||
assert(Size <= 8 && "does not support size > 8");
|
||||
src = (Size == 4 ? CGF.Builder.CreateBitCast(src, ObjCTypes.IntTy)
|
||||
: CGF.Builder.CreateBitCast(src, ObjCTypes.LongTy));
|
||||
|
@ -6232,7 +6232,7 @@ void CGObjCNonFragileABIMac::EmitObjCGlobalAssign(CodeGen::CodeGenFunction &CGF,
|
|||
bool threadlocal) {
|
||||
llvm::Type * SrcTy = src->getType();
|
||||
if (!isa<llvm::PointerType>(SrcTy)) {
|
||||
unsigned Size = CGM.getTargetData().getTypeAllocSize(SrcTy);
|
||||
unsigned Size = CGM.getDataLayout().getTypeAllocSize(SrcTy);
|
||||
assert(Size <= 8 && "does not support size > 8");
|
||||
src = (Size == 4 ? CGF.Builder.CreateBitCast(src, ObjCTypes.IntTy)
|
||||
: CGF.Builder.CreateBitCast(src, ObjCTypes.LongTy));
|
||||
|
@ -6364,7 +6364,7 @@ CGObjCNonFragileABIMac::GetInterfaceEHType(const ObjCInterfaceDecl *ID,
|
|||
|
||||
if (CGM.getLangOpts().getVisibilityMode() == HiddenVisibility)
|
||||
Entry->setVisibility(llvm::GlobalValue::HiddenVisibility);
|
||||
Entry->setAlignment(CGM.getTargetData().getABITypeAlignment(
|
||||
Entry->setAlignment(CGM.getDataLayout().getABITypeAlignment(
|
||||
ObjCTypes.EHTypeTy));
|
||||
|
||||
if (ForDefinition) {
|
||||
|
|
|
@ -25,7 +25,7 @@
|
|||
#include "llvm/Type.h"
|
||||
#include "llvm/Support/Debug.h"
|
||||
#include "llvm/Support/raw_ostream.h"
|
||||
#include "llvm/Target/TargetData.h"
|
||||
#include "llvm/DataLayout.h"
|
||||
using namespace clang;
|
||||
using namespace CodeGen;
|
||||
|
||||
|
@ -239,7 +239,7 @@ CGBitFieldInfo CGBitFieldInfo::MakeInfo(CodeGenTypes &Types,
|
|||
|
||||
llvm::Type *Ty = Types.ConvertTypeForMem(FD->getType());
|
||||
CharUnits TypeSizeInBytes =
|
||||
CharUnits::fromQuantity(Types.getTargetData().getTypeAllocSize(Ty));
|
||||
CharUnits::fromQuantity(Types.getDataLayout().getTypeAllocSize(Ty));
|
||||
uint64_t TypeSizeInBits = Types.getContext().toBits(TypeSizeInBytes);
|
||||
|
||||
bool IsSigned = FD->getType()->isSignedIntegerOrEnumerationType();
|
||||
|
@ -259,7 +259,7 @@ CGBitFieldInfo CGBitFieldInfo::MakeInfo(CodeGenTypes &Types,
|
|||
|
||||
// in big-endian machines the first fields are in higher bit positions,
|
||||
// so revert the offset. The byte offsets are reversed(back) later.
|
||||
if (Types.getTargetData().isBigEndian()) {
|
||||
if (Types.getDataLayout().isBigEndian()) {
|
||||
FieldOffset = ((ContainingTypeSizeInBits)-FieldOffset-FieldSize);
|
||||
}
|
||||
|
||||
|
@ -334,7 +334,7 @@ CGBitFieldInfo CGBitFieldInfo::MakeInfo(CodeGenTypes &Types,
|
|||
// on big-endian machines we reverted the bit offset because first fields are
|
||||
// in higher bits. But this also reverts the bytes, so fix this here by reverting
|
||||
// the byte offset on big-endian machines.
|
||||
if (Types.getTargetData().isBigEndian()) {
|
||||
if (Types.getDataLayout().isBigEndian()) {
|
||||
AI.FieldByteOffset = Types.getContext().toCharUnitsFromBits(
|
||||
ContainingTypeSizeInBits - AccessStart - AccessWidth);
|
||||
} else {
|
||||
|
@ -553,9 +553,9 @@ void CGRecordLayoutBuilder::LayoutUnion(const RecordDecl *D) {
|
|||
hasOnlyZeroSizedBitFields = false;
|
||||
|
||||
CharUnits fieldAlign = CharUnits::fromQuantity(
|
||||
Types.getTargetData().getABITypeAlignment(fieldType));
|
||||
Types.getDataLayout().getABITypeAlignment(fieldType));
|
||||
CharUnits fieldSize = CharUnits::fromQuantity(
|
||||
Types.getTargetData().getTypeAllocSize(fieldType));
|
||||
Types.getDataLayout().getTypeAllocSize(fieldType));
|
||||
|
||||
if (fieldAlign < unionAlign)
|
||||
continue;
|
||||
|
@ -884,7 +884,7 @@ void CGRecordLayoutBuilder::AppendTailPadding(CharUnits RecordSize) {
|
|||
void CGRecordLayoutBuilder::AppendField(CharUnits fieldOffset,
|
||||
llvm::Type *fieldType) {
|
||||
CharUnits fieldSize =
|
||||
CharUnits::fromQuantity(Types.getTargetData().getTypeAllocSize(fieldType));
|
||||
CharUnits::fromQuantity(Types.getDataLayout().getTypeAllocSize(fieldType));
|
||||
|
||||
FieldTypes.push_back(fieldType);
|
||||
|
||||
|
@ -957,7 +957,7 @@ CharUnits CGRecordLayoutBuilder::getTypeAlignment(llvm::Type *Ty) const {
|
|||
if (Packed)
|
||||
return CharUnits::One();
|
||||
|
||||
return CharUnits::fromQuantity(Types.getTargetData().getABITypeAlignment(Ty));
|
||||
return CharUnits::fromQuantity(Types.getDataLayout().getABITypeAlignment(Ty));
|
||||
}
|
||||
|
||||
CharUnits CGRecordLayoutBuilder::getAlignmentAsLLVMStruct() const {
|
||||
|
@ -1036,7 +1036,7 @@ CGRecordLayout *CodeGenTypes::ComputeRecordLayout(const RecordDecl *D,
|
|||
const ASTRecordLayout &Layout = getContext().getASTRecordLayout(D);
|
||||
|
||||
uint64_t TypeSizeInBits = getContext().toBits(Layout.getSize());
|
||||
assert(TypeSizeInBits == getTargetData().getTypeAllocSizeInBits(Ty) &&
|
||||
assert(TypeSizeInBits == getDataLayout().getTypeAllocSizeInBits(Ty) &&
|
||||
"Type size mismatch!");
|
||||
|
||||
if (BaseTy) {
|
||||
|
@ -1049,14 +1049,14 @@ CGRecordLayout *CodeGenTypes::ComputeRecordLayout(const RecordDecl *D,
|
|||
getContext().toBits(AlignedNonVirtualTypeSize);
|
||||
|
||||
assert(AlignedNonVirtualTypeSizeInBits ==
|
||||
getTargetData().getTypeAllocSizeInBits(BaseTy) &&
|
||||
getDataLayout().getTypeAllocSizeInBits(BaseTy) &&
|
||||
"Type size mismatch!");
|
||||
}
|
||||
|
||||
// Verify that the LLVM and AST field offsets agree.
|
||||
llvm::StructType *ST =
|
||||
dyn_cast<llvm::StructType>(RL->getLLVMType());
|
||||
const llvm::StructLayout *SL = getTargetData().getStructLayout(ST);
|
||||
const llvm::StructLayout *SL = getDataLayout().getStructLayout(ST);
|
||||
|
||||
const ASTRecordLayout &AST_RL = getContext().getASTRecordLayout(D);
|
||||
RecordDecl::field_iterator it = D->field_begin();
|
||||
|
|
|
@ -21,7 +21,7 @@
|
|||
#include "llvm/ADT/StringExtras.h"
|
||||
#include "llvm/InlineAsm.h"
|
||||
#include "llvm/Intrinsics.h"
|
||||
#include "llvm/Target/TargetData.h"
|
||||
#include "llvm/DataLayout.h"
|
||||
using namespace clang;
|
||||
using namespace CodeGen;
|
||||
|
||||
|
@ -1345,7 +1345,7 @@ CodeGenFunction::EmitAsmInputLValue(const TargetInfo::ConstraintInfo &Info,
|
|||
Arg = EmitLoadOfLValue(InputValue).getScalarVal();
|
||||
} else {
|
||||
llvm::Type *Ty = ConvertType(InputType);
|
||||
uint64_t Size = CGM.getTargetData().getTypeSizeInBits(Ty);
|
||||
uint64_t Size = CGM.getDataLayout().getTypeSizeInBits(Ty);
|
||||
if (Size <= 64 && llvm::isPowerOf2_64(Size)) {
|
||||
Ty = llvm::IntegerType::get(getLLVMContext(), Size);
|
||||
Ty = llvm::PointerType::getUnqual(Ty);
|
||||
|
@ -1664,12 +1664,12 @@ void CodeGenFunction::EmitAsmStmt(const AsmStmt &S) {
|
|||
if (TruncTy->isFloatingPointTy())
|
||||
Tmp = Builder.CreateFPTrunc(Tmp, TruncTy);
|
||||
else if (TruncTy->isPointerTy() && Tmp->getType()->isIntegerTy()) {
|
||||
uint64_t ResSize = CGM.getTargetData().getTypeSizeInBits(TruncTy);
|
||||
uint64_t ResSize = CGM.getDataLayout().getTypeSizeInBits(TruncTy);
|
||||
Tmp = Builder.CreateTrunc(Tmp,
|
||||
llvm::IntegerType::get(getLLVMContext(), (unsigned)ResSize));
|
||||
Tmp = Builder.CreateIntToPtr(Tmp, TruncTy);
|
||||
} else if (Tmp->getType()->isPointerTy() && TruncTy->isIntegerTy()) {
|
||||
uint64_t TmpSize =CGM.getTargetData().getTypeSizeInBits(Tmp->getType());
|
||||
uint64_t TmpSize =CGM.getDataLayout().getTypeSizeInBits(Tmp->getType());
|
||||
Tmp = Builder.CreatePtrToInt(Tmp,
|
||||
llvm::IntegerType::get(getLLVMContext(), (unsigned)TmpSize));
|
||||
Tmp = Builder.CreateTrunc(Tmp, TruncTy);
|
||||
|
|
|
@ -24,7 +24,7 @@
|
|||
#include "clang/Frontend/CodeGenOptions.h"
|
||||
#include "llvm/Intrinsics.h"
|
||||
#include "llvm/MDBuilder.h"
|
||||
#include "llvm/Target/TargetData.h"
|
||||
#include "llvm/DataLayout.h"
|
||||
using namespace clang;
|
||||
using namespace CodeGen;
|
||||
|
||||
|
|
|
@ -42,7 +42,7 @@
|
|||
#include "llvm/ADT/APSInt.h"
|
||||
#include "llvm/ADT/Triple.h"
|
||||
#include "llvm/Target/Mangler.h"
|
||||
#include "llvm/Target/TargetData.h"
|
||||
#include "llvm/DataLayout.h"
|
||||
#include "llvm/Support/CallSite.h"
|
||||
#include "llvm/Support/ErrorHandling.h"
|
||||
using namespace clang;
|
||||
|
@ -62,10 +62,10 @@ static CGCXXABI &createCXXABI(CodeGenModule &CGM) {
|
|||
|
||||
|
||||
CodeGenModule::CodeGenModule(ASTContext &C, const CodeGenOptions &CGO,
|
||||
llvm::Module &M, const llvm::TargetData &TD,
|
||||
llvm::Module &M, const llvm::DataLayout &TD,
|
||||
DiagnosticsEngine &diags)
|
||||
: Context(C), LangOpts(C.getLangOpts()), CodeGenOpts(CGO), TheModule(M),
|
||||
TheTargetData(TD), TheTargetCodeGenInfo(0), Diags(diags),
|
||||
TheDataLayout(TD), TheTargetCodeGenInfo(0), Diags(diags),
|
||||
ABI(createCXXABI(*this)),
|
||||
Types(*this),
|
||||
TBAA(0),
|
||||
|
@ -1431,7 +1431,7 @@ CodeGenModule::getVTableLinkage(const CXXRecordDecl *RD) {
|
|||
|
||||
CharUnits CodeGenModule::GetTargetTypeStoreSize(llvm::Type *Ty) const {
|
||||
return Context.toCharUnitsFromBits(
|
||||
TheTargetData.getTypeStoreSizeInBits(Ty));
|
||||
TheDataLayout.getTypeStoreSizeInBits(Ty));
|
||||
}
|
||||
|
||||
llvm::Constant *
|
||||
|
@ -2038,7 +2038,7 @@ CodeGenModule::GetAddrOfConstantCFString(const StringLiteral *Literal) {
|
|||
bool isUTF16 = false;
|
||||
llvm::StringMapEntry<llvm::Constant*> &Entry =
|
||||
GetConstantCFStringEntry(CFConstantStringMap, Literal,
|
||||
getTargetData().isLittleEndian(),
|
||||
getDataLayout().isLittleEndian(),
|
||||
isUTF16, StringLength);
|
||||
|
||||
if (llvm::Constant *C = Entry.getValue())
|
||||
|
|
|
@ -35,7 +35,7 @@ namespace llvm {
|
|||
class ConstantInt;
|
||||
class Function;
|
||||
class GlobalValue;
|
||||
class TargetData;
|
||||
class DataLayout;
|
||||
class FunctionType;
|
||||
class LLVMContext;
|
||||
}
|
||||
|
@ -219,7 +219,7 @@ class CodeGenModule : public CodeGenTypeCache {
|
|||
const LangOptions &LangOpts;
|
||||
const CodeGenOptions &CodeGenOpts;
|
||||
llvm::Module &TheModule;
|
||||
const llvm::TargetData &TheTargetData;
|
||||
const llvm::DataLayout &TheDataLayout;
|
||||
mutable const TargetCodeGenInfo *TheTargetCodeGenInfo;
|
||||
DiagnosticsEngine &Diags;
|
||||
CGCXXABI &ABI;
|
||||
|
@ -357,7 +357,7 @@ class CodeGenModule : public CodeGenTypeCache {
|
|||
/// @}
|
||||
public:
|
||||
CodeGenModule(ASTContext &C, const CodeGenOptions &CodeGenOpts,
|
||||
llvm::Module &M, const llvm::TargetData &TD,
|
||||
llvm::Module &M, const llvm::DataLayout &TD,
|
||||
DiagnosticsEngine &Diags);
|
||||
|
||||
~CodeGenModule();
|
||||
|
@ -451,7 +451,7 @@ public:
|
|||
CodeGenVTables &getVTables() { return VTables; }
|
||||
VTableContext &getVTableContext() { return VTables.getVTableContext(); }
|
||||
DiagnosticsEngine &getDiags() const { return Diags; }
|
||||
const llvm::TargetData &getTargetData() const { return TheTargetData; }
|
||||
const llvm::DataLayout &getDataLayout() const { return TheDataLayout; }
|
||||
const TargetInfo &getTarget() const { return Context.getTargetInfo(); }
|
||||
llvm::LLVMContext &getLLVMContext() { return VMContext; }
|
||||
const TargetCodeGenInfo &getTargetCodeGenInfo();
|
||||
|
|
|
@ -23,13 +23,13 @@
|
|||
#include "clang/AST/RecordLayout.h"
|
||||
#include "llvm/DerivedTypes.h"
|
||||
#include "llvm/Module.h"
|
||||
#include "llvm/Target/TargetData.h"
|
||||
#include "llvm/DataLayout.h"
|
||||
using namespace clang;
|
||||
using namespace CodeGen;
|
||||
|
||||
CodeGenTypes::CodeGenTypes(CodeGenModule &CGM)
|
||||
: Context(CGM.getContext()), Target(Context.getTargetInfo()),
|
||||
TheModule(CGM.getModule()), TheTargetData(CGM.getTargetData()),
|
||||
TheModule(CGM.getModule()), TheDataLayout(CGM.getDataLayout()),
|
||||
TheABIInfo(CGM.getTargetCodeGenInfo().getABIInfo()),
|
||||
TheCXXABI(CGM.getCXXABI()),
|
||||
CodeGenOpts(CGM.getCodeGenOpts()), CGM(CGM) {
|
||||
|
|
|
@ -23,7 +23,7 @@
|
|||
namespace llvm {
|
||||
class FunctionType;
|
||||
class Module;
|
||||
class TargetData;
|
||||
class DataLayout;
|
||||
class Type;
|
||||
class LLVMContext;
|
||||
class StructType;
|
||||
|
@ -62,7 +62,7 @@ class CodeGenTypes {
|
|||
ASTContext &Context;
|
||||
const TargetInfo &Target;
|
||||
llvm::Module &TheModule;
|
||||
const llvm::TargetData &TheTargetData;
|
||||
const llvm::DataLayout &TheDataLayout;
|
||||
const ABIInfo &TheABIInfo;
|
||||
CGCXXABI &TheCXXABI;
|
||||
const CodeGenOptions &CodeGenOpts;
|
||||
|
@ -108,7 +108,7 @@ public:
|
|||
CodeGenTypes(CodeGenModule &CGM);
|
||||
~CodeGenTypes();
|
||||
|
||||
const llvm::TargetData &getTargetData() const { return TheTargetData; }
|
||||
const llvm::DataLayout &getDataLayout() const { return TheDataLayout; }
|
||||
const TargetInfo &getTarget() const { return Target; }
|
||||
ASTContext &getContext() const { return Context; }
|
||||
const ABIInfo &getABIInfo() const { return TheABIInfo; }
|
||||
|
|
|
@ -26,7 +26,7 @@
|
|||
#include "clang/AST/Mangle.h"
|
||||
#include "clang/AST/Type.h"
|
||||
#include "llvm/Intrinsics.h"
|
||||
#include "llvm/Target/TargetData.h"
|
||||
#include "llvm/DataLayout.h"
|
||||
#include "llvm/Value.h"
|
||||
|
||||
using namespace clang;
|
||||
|
|
|
@ -21,14 +21,14 @@
|
|||
#include "clang/Basic/TargetInfo.h"
|
||||
#include "llvm/LLVMContext.h"
|
||||
#include "llvm/Module.h"
|
||||
#include "llvm/Target/TargetData.h"
|
||||
#include "llvm/DataLayout.h"
|
||||
#include "llvm/ADT/OwningPtr.h"
|
||||
using namespace clang;
|
||||
|
||||
namespace {
|
||||
class CodeGeneratorImpl : public CodeGenerator {
|
||||
DiagnosticsEngine &Diags;
|
||||
OwningPtr<const llvm::TargetData> TD;
|
||||
OwningPtr<const llvm::DataLayout> TD;
|
||||
ASTContext *Ctx;
|
||||
const CodeGenOptions CodeGenOpts; // Intentionally copied in.
|
||||
protected:
|
||||
|
@ -54,7 +54,7 @@ namespace {
|
|||
|
||||
M->setTargetTriple(Ctx->getTargetInfo().getTriple().getTriple());
|
||||
M->setDataLayout(Ctx->getTargetInfo().getTargetDescription());
|
||||
TD.reset(new llvm::TargetData(Ctx->getTargetInfo().getTargetDescription()));
|
||||
TD.reset(new llvm::DataLayout(Ctx->getTargetInfo().getTargetDescription()));
|
||||
Builder.reset(new CodeGen::CodeGenModule(Context, CodeGenOpts,
|
||||
*M, *TD, Diags));
|
||||
}
|
||||
|
|
|
@ -18,7 +18,7 @@
|
|||
#include "clang/AST/RecordLayout.h"
|
||||
#include "clang/Frontend/CodeGenOptions.h"
|
||||
#include "llvm/Type.h"
|
||||
#include "llvm/Target/TargetData.h"
|
||||
#include "llvm/DataLayout.h"
|
||||
#include "llvm/ADT/Triple.h"
|
||||
#include "llvm/Support/raw_ostream.h"
|
||||
using namespace clang;
|
||||
|
@ -51,8 +51,8 @@ llvm::LLVMContext &ABIInfo::getVMContext() const {
|
|||
return CGT.getLLVMContext();
|
||||
}
|
||||
|
||||
const llvm::TargetData &ABIInfo::getTargetData() const {
|
||||
return CGT.getTargetData();
|
||||
const llvm::DataLayout &ABIInfo::getDataLayout() const {
|
||||
return CGT.getDataLayout();
|
||||
}
|
||||
|
||||
|
||||
|
@ -1792,7 +1792,7 @@ static bool BitsContainNoUserData(QualType Ty, unsigned StartBit,
|
|||
/// float at offset 4. It is conservatively correct for this routine to return
|
||||
/// false.
|
||||
static bool ContainsFloatAtOffset(llvm::Type *IRType, unsigned IROffset,
|
||||
const llvm::TargetData &TD) {
|
||||
const llvm::DataLayout &TD) {
|
||||
// Base case if we find a float.
|
||||
if (IROffset == 0 && IRType->isFloatTy())
|
||||
return true;
|
||||
|
@ -1832,8 +1832,8 @@ GetSSETypeAtOffset(llvm::Type *IRType, unsigned IROffset,
|
|||
// We want to pass as <2 x float> if the LLVM IR type contains a float at
|
||||
// offset+0 and offset+4. Walk the LLVM IR type to find out if this is the
|
||||
// case.
|
||||
if (ContainsFloatAtOffset(IRType, IROffset, getTargetData()) &&
|
||||
ContainsFloatAtOffset(IRType, IROffset+4, getTargetData()))
|
||||
if (ContainsFloatAtOffset(IRType, IROffset, getDataLayout()) &&
|
||||
ContainsFloatAtOffset(IRType, IROffset+4, getDataLayout()))
|
||||
return llvm::VectorType::get(llvm::Type::getFloatTy(getVMContext()), 2);
|
||||
|
||||
return llvm::Type::getDoubleTy(getVMContext());
|
||||
|
@ -1882,7 +1882,7 @@ GetINTEGERTypeAtOffset(llvm::Type *IRType, unsigned IROffset,
|
|||
|
||||
if (llvm::StructType *STy = dyn_cast<llvm::StructType>(IRType)) {
|
||||
// If this is a struct, recurse into the field at the specified offset.
|
||||
const llvm::StructLayout *SL = getTargetData().getStructLayout(STy);
|
||||
const llvm::StructLayout *SL = getDataLayout().getStructLayout(STy);
|
||||
if (IROffset < SL->getSizeInBytes()) {
|
||||
unsigned FieldIdx = SL->getElementContainingOffset(IROffset);
|
||||
IROffset -= SL->getElementOffset(FieldIdx);
|
||||
|
@ -1894,7 +1894,7 @@ GetINTEGERTypeAtOffset(llvm::Type *IRType, unsigned IROffset,
|
|||
|
||||
if (llvm::ArrayType *ATy = dyn_cast<llvm::ArrayType>(IRType)) {
|
||||
llvm::Type *EltTy = ATy->getElementType();
|
||||
unsigned EltSize = getTargetData().getTypeAllocSize(EltTy);
|
||||
unsigned EltSize = getDataLayout().getTypeAllocSize(EltTy);
|
||||
unsigned EltOffset = IROffset/EltSize*EltSize;
|
||||
return GetINTEGERTypeAtOffset(EltTy, IROffset-EltOffset, SourceTy,
|
||||
SourceOffset);
|
||||
|
@ -1921,14 +1921,14 @@ GetINTEGERTypeAtOffset(llvm::Type *IRType, unsigned IROffset,
|
|||
/// return {i32*, float}.
|
||||
static llvm::Type *
|
||||
GetX86_64ByValArgumentPair(llvm::Type *Lo, llvm::Type *Hi,
|
||||
const llvm::TargetData &TD) {
|
||||
const llvm::DataLayout &TD) {
|
||||
// In order to correctly satisfy the ABI, we need to the high part to start
|
||||
// at offset 8. If the high and low parts we inferred are both 4-byte types
|
||||
// (e.g. i32 and i32) then the resultant struct type ({i32,i32}) won't have
|
||||
// the second element at offset 8. Check for this:
|
||||
unsigned LoSize = (unsigned)TD.getTypeAllocSize(Lo);
|
||||
unsigned HiAlign = TD.getABITypeAlignment(Hi);
|
||||
unsigned HiStart = llvm::TargetData::RoundUpAlignment(LoSize, HiAlign);
|
||||
unsigned HiStart = llvm::DataLayout::RoundUpAlignment(LoSize, HiAlign);
|
||||
assert(HiStart != 0 && HiStart <= 8 && "Invalid x86-64 argument pair!");
|
||||
|
||||
// To handle this, we have to increase the size of the low part so that the
|
||||
|
@ -2080,7 +2080,7 @@ classifyReturnType(QualType RetTy) const {
|
|||
// known to pass in the high eightbyte of the result. We do this by forming a
|
||||
// first class struct aggregate with the high and low part: {low, high}
|
||||
if (HighPart)
|
||||
ResType = GetX86_64ByValArgumentPair(ResType, HighPart, getTargetData());
|
||||
ResType = GetX86_64ByValArgumentPair(ResType, HighPart, getDataLayout());
|
||||
|
||||
return ABIArgInfo::getDirect(ResType);
|
||||
}
|
||||
|
@ -2206,7 +2206,7 @@ ABIArgInfo X86_64ABIInfo::classifyArgumentType(
|
|||
// known to pass in the high eightbyte of the result. We do this by forming a
|
||||
// first class struct aggregate with the high and low part: {low, high}
|
||||
if (HighPart)
|
||||
ResType = GetX86_64ByValArgumentPair(ResType, HighPart, getTargetData());
|
||||
ResType = GetX86_64ByValArgumentPair(ResType, HighPart, getDataLayout());
|
||||
|
||||
return ABIArgInfo::getDirect(ResType);
|
||||
}
|
||||
|
|
|
@ -51,7 +51,7 @@
|
|||
#include "llvm/Support/Timer.h"
|
||||
#include "llvm/Support/raw_ostream.h"
|
||||
#include "llvm/Support/system_error.h"
|
||||
#include "llvm/Target/TargetData.h"
|
||||
#include "llvm/DataLayout.h"
|
||||
using namespace clang;
|
||||
using namespace clang::driver;
|
||||
using namespace llvm;
|
||||
|
|
Loading…
Reference in New Issue