aboutsummaryrefslogtreecommitdiff
path: root/lib/Target/TargetData.cpp
diff options
context:
space:
mode:
authorDale Johannesen <dalej@apple.com>2007-08-03 20:20:50 +0000
committerDale Johannesen <dalej@apple.com>2007-08-03 20:20:50 +0000
commit8c1e6a119a68b258365677a9ee5176af3525a26f (patch)
tree6b2d76320d1527c029879b5e84cb1d49e5d5eb63 /lib/Target/TargetData.cpp
parentab8702787d6bcdeaea31fc6a3d4a7fec3a5e18c4 (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.cpp12
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: {