summaryrefslogtreecommitdiffstats
path: root/clang/lib/AST/ItaniumMangle.cpp
diff options
context:
space:
mode:
authorTimur Iskhodzhanov <timurrrr@google.com>2013-09-27 14:48:01 +0000
committerTimur Iskhodzhanov <timurrrr@google.com>2013-09-27 14:48:01 +0000
commit8b5987eba5a080962cbc98ce5f006db3aa62ae2e (patch)
treee0986fcd7045e6a7713a09ebe39936cec8263dde /clang/lib/AST/ItaniumMangle.cpp
parentf56ddf7fd1ea405e29b603f5afd54b736d8031f3 (diff)
downloadbcm5719-llvm-8b5987eba5a080962cbc98ce5f006db3aa62ae2e.tar.gz
bcm5719-llvm-8b5987eba5a080962cbc98ce5f006db3aa62ae2e.zip
Abstract out the emission of vtables, add basic support for vtable emission when using -cxx-abi microsoft
Reviewed at http://llvm-reviews.chandlerc.com/D1532 llvm-svn: 191523
Diffstat (limited to 'clang/lib/AST/ItaniumMangle.cpp')
-rw-r--r--clang/lib/AST/ItaniumMangle.cpp11
1 files changed, 11 insertions, 0 deletions
diff --git a/clang/lib/AST/ItaniumMangle.cpp b/clang/lib/AST/ItaniumMangle.cpp
index cb3c920bcf0..13923ae8f6b 100644
--- a/clang/lib/AST/ItaniumMangle.cpp
+++ b/clang/lib/AST/ItaniumMangle.cpp
@@ -137,6 +137,9 @@ public:
raw_ostream &);
void mangleCXXVTable(const CXXRecordDecl *RD,
raw_ostream &);
+ void mangleCXXVFTable(const CXXRecordDecl *Derived,
+ ArrayRef<const CXXRecordDecl *> BasePath,
+ raw_ostream &Out);
void mangleCXXVTT(const CXXRecordDecl *RD,
raw_ostream &);
void mangleCXXVBTable(const CXXRecordDecl *Derived,
@@ -3772,6 +3775,14 @@ void ItaniumMangleContext::mangleCXXVTable(const CXXRecordDecl *RD,
Mangler.mangleNameOrStandardSubstitution(RD);
}
+void
+ItaniumMangleContext::mangleCXXVFTable(const CXXRecordDecl *Derived,
+ ArrayRef<const CXXRecordDecl *> BasePath,
+ raw_ostream &Out) {
+ llvm_unreachable(
+ "The Itanium C++ ABI does not have vftables (use vtables instead)!");
+}
+
void ItaniumMangleContext::mangleCXXVTT(const CXXRecordDecl *RD,
raw_ostream &Out) {
// <special-name> ::= TT <type> # VTT structure
OpenPOWER on IntegriCloud