summaryrefslogtreecommitdiffstats
path: root/clang/lib/CodeGen/ABIInfo.h
diff options
context:
space:
mode:
authorReid Kleckner <reid@kleckner.net>2014-10-31 17:10:41 +0000
committerReid Kleckner <reid@kleckner.net>2014-10-31 17:10:41 +0000
commite9f6a717dd9003b597defee48567431a7db7f9f4 (patch)
tree86216c56bf04dbd677475b810e77250b26a7297d /clang/lib/CodeGen/ABIInfo.h
parent47e7646ebbf1591120bb530fdc85504a1e47fafa (diff)
downloadbcm5719-llvm-e9f6a717dd9003b597defee48567431a7db7f9f4.tar.gz
bcm5719-llvm-e9f6a717dd9003b597defee48567431a7db7f9f4.zip
Fix ARM HVA classification of classes with non-virtual bases
Reuse the PPC64 HVA detection algorithm for ARM and AArch64. This is a nice code deduplication, since they are roughly identical. A few virtual method extension points are needed to understand how big an HVA can be and what element types it can have for a given architecture. Also make the record expansion code work in the presence of non-virtual bases. Reviewed By: uweigand, asl Differential Revision: http://reviews.llvm.org/D6045 llvm-svn: 220972
Diffstat (limited to 'clang/lib/CodeGen/ABIInfo.h')
-rw-r--r--clang/lib/CodeGen/ABIInfo.h9
1 files changed, 9 insertions, 0 deletions
diff --git a/clang/lib/CodeGen/ABIInfo.h b/clang/lib/CodeGen/ABIInfo.h
index 9ca576630be..2976b605d39 100644
--- a/clang/lib/CodeGen/ABIInfo.h
+++ b/clang/lib/CodeGen/ABIInfo.h
@@ -73,6 +73,15 @@ namespace clang {
// abstract this out.
virtual llvm::Value *EmitVAArg(llvm::Value *VAListAddr, QualType Ty,
CodeGen::CodeGenFunction &CGF) const = 0;
+
+ virtual bool isHomogeneousAggregateBaseType(QualType Ty) const;
+
+ virtual bool isHomogeneousAggregateSmallEnough(const Type *Base,
+ uint64_t Members) const;
+
+ bool isHomogeneousAggregate(QualType Ty, const Type *&Base,
+ uint64_t &Members) const;
+
};
} // end namespace clang
OpenPOWER on IntegriCloud