diff options
author | Reid Kleckner <reid@kleckner.net> | 2013-03-22 19:02:54 +0000 |
---|---|---|
committer | Reid Kleckner <reid@kleckner.net> | 2013-03-22 19:02:54 +0000 |
commit | 407e8b642b884f3379e74adbc8a95a65cf928a28 (patch) | |
tree | 80e518716b4d1c7d370fae6f19a411a13245301c /clang/lib/CodeGen/CGCXXABI.h | |
parent | 36ffafc3887c45d12b588bcdf5017f3a9807d558 (diff) | |
download | bcm5719-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.h | 6 |
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) { |