summaryrefslogtreecommitdiffstats
path: root/clang/lib/CodeGen/CGCXXABI.h
diff options
context:
space:
mode:
authorReid Kleckner <reid@kleckner.net>2013-03-22 19:02:54 +0000
committerReid Kleckner <reid@kleckner.net>2013-03-22 19:02:54 +0000
commit407e8b642b884f3379e74adbc8a95a65cf928a28 (patch)
tree80e518716b4d1c7d370fae6f19a411a13245301c /clang/lib/CodeGen/CGCXXABI.h
parent36ffafc3887c45d12b588bcdf5017f3a9807d558 (diff)
downloadbcm5719-llvm-407e8b642b884f3379e74adbc8a95a65cf928a28.tar.gz
bcm5719-llvm-407e8b642b884f3379e74adbc8a95a65cf928a28.zip
[ms-cxxabi] Implement member data pointers for non-dynamic classes
Summary: For non-dynamic classes (no virtual bases), member data pointers are simple offsets from the base of the record. Dynamic classes use an aggregate for member data pointers and are therefore currently unsupported. Unlike Itanium, the ms ABI uses 0 to represent null for polymorphic classes. Non-polymorphic classes use -1 like Itanium, since 0 is a valid field offset. Reviewers: rjmccall CC: timurrrr, cfe-commits Differential Revision: http://llvm-reviews.chandlerc.com/D558 llvm-svn: 177753
Diffstat (limited to 'clang/lib/CodeGen/CGCXXABI.h')
-rw-r--r--clang/lib/CodeGen/CGCXXABI.h6
1 files changed, 6 insertions, 0 deletions
diff --git a/clang/lib/CodeGen/CGCXXABI.h b/clang/lib/CodeGen/CGCXXABI.h
index d0384ecc128..702e59b71a7 100644
--- a/clang/lib/CodeGen/CGCXXABI.h
+++ b/clang/lib/CodeGen/CGCXXABI.h
@@ -54,6 +54,12 @@ protected:
return CGF.CXXABIThisValue;
}
+ /// Issue a diagnostic about unsupported features in the ABI.
+ void ErrorUnsupportedABI(CodeGenFunction &CGF, StringRef S);
+
+ /// Get a null value for unsupported member pointers.
+ llvm::Constant *GetBogusMemberPointer(QualType T);
+
// FIXME: Every place that calls getVTT{Decl,Value} is something
// that needs to be abstracted properly.
ImplicitParamDecl *&getVTTDecl(CodeGenFunction &CGF) {
OpenPOWER on IntegriCloud