summaryrefslogtreecommitdiffstats
path: root/clang/lib/CodeGen
diff options
context:
space:
mode:
authorDaniel Dunbar <daniel@zuster.org>2010-05-15 00:00:37 +0000
committerDaniel Dunbar <daniel@zuster.org>2010-05-15 00:00:37 +0000
commit36d4d1541c49843e062a5c64d2fd65b9e9b98ac7 (patch)
tree5613d486482ee5ad711cc29c6ed8448fcf8b54ef /clang/lib/CodeGen
parent4bd95c65e780593abd70c0afba1447b9e2236eb1 (diff)
downloadbcm5719-llvm-36d4d1541c49843e062a5c64d2fd65b9e9b98ac7.tar.gz
bcm5719-llvm-36d4d1541c49843e062a5c64d2fd65b9e9b98ac7.zip
C++/ABI/x86_64: Member pointers should be classified as INTEGER.
llvm-svn: 103843
Diffstat (limited to 'clang/lib/CodeGen')
-rw-r--r--clang/lib/CodeGen/TargetInfo.cpp5
1 files changed, 5 insertions, 0 deletions
diff --git a/clang/lib/CodeGen/TargetInfo.cpp b/clang/lib/CodeGen/TargetInfo.cpp
index 176a7432b0c..4a0a298c3be 100644
--- a/clang/lib/CodeGen/TargetInfo.cpp
+++ b/clang/lib/CodeGen/TargetInfo.cpp
@@ -853,6 +853,11 @@ void X86_64ABIInfo::classify(QualType Ty,
classify(ET->getDecl()->getIntegerType(), Context, OffsetBase, Lo, Hi);
} else if (Ty->hasPointerRepresentation()) {
Current = Integer;
+ } else if (Ty->isMemberPointerType()) {
+ if (Ty->isMemberFunctionPointerType())
+ Lo = Hi = Integer;
+ else
+ Current = Integer;
} else if (const VectorType *VT = Ty->getAs<VectorType>()) {
uint64_t Size = Context.getTypeSize(VT);
if (Size == 32) {
OpenPOWER on IntegriCloud