diff options
author | Dale Johannesen <dalej@apple.com> | 2007-08-03 20:20:50 +0000 |
---|---|---|
committer | Dale Johannesen <dalej@apple.com> | 2007-08-03 20:20:50 +0000 |
commit | 8c1e6a119a68b258365677a9ee5176af3525a26f (patch) | |
tree | 6b2d76320d1527c029879b5e84cb1d49e5d5eb63 /lib/Target/TargetData.cpp | |
parent | ab8702787d6bcdeaea31fc6a3d4a7fec3a5e18c4 (diff) |
long double patch 2 of N. Handle it in TargetData.
(I've tried to get the info right for all targets,
but I'm not expert on all of them - check yours.)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@40792 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/Target/TargetData.cpp')
-rw-r--r-- | lib/Target/TargetData.cpp | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/lib/Target/TargetData.cpp b/lib/Target/TargetData.cpp index 301e8c12ab..bb1ad3271b 100644 --- a/lib/Target/TargetData.cpp +++ b/lib/Target/TargetData.cpp @@ -436,6 +436,13 @@ uint64_t TargetData::getTypeSize(const Type *Ty) const { return 4; case Type::DoubleTyID: return 8; + case Type::PPC_FP128TyID: + case Type::FP128TyID: + return 16; + // In memory objects this is always aligned to a higher boundary, but + // only 10 bytes contain information. + case Type::X86_FP80TyID: + return 10; case Type::VectorTyID: { const VectorType *PTy = cast<VectorType>(Ty); return PTy->getBitWidth() / 8; @@ -493,6 +500,11 @@ unsigned char TargetData::getAlignment(const Type *Ty, bool abi_or_pref) const { break; case Type::FloatTyID: case Type::DoubleTyID: + // PPC_FP128TyID and FP128TyID have different data contents, but the + // same size and alignment, so they look the same here. + case Type::PPC_FP128TyID: + case Type::FP128TyID: + case Type::X86_FP80TyID: AlignType = FLOAT_ALIGN; break; case Type::VectorTyID: { |