summaryrefslogtreecommitdiffstats
path: root/clang/lib/AST/ItaniumMangle.cpp
diff options
context:
space:
mode:
authorReid Kleckner <reid@kleckner.net>2013-11-19 23:23:00 +0000
committerReid Kleckner <reid@kleckner.net>2013-11-19 23:23:00 +0000
commitcc99e264756a8e29ed1e2521cf2f2d2db7095082 (patch)
tree6364f00e7aa4ec412eb4705069ac7ca7b5fcba4e /clang/lib/AST/ItaniumMangle.cpp
parent409dd9c34aa3bef7b1234301f40ce3c35a58145c (diff)
downloadbcm5719-llvm-cc99e264756a8e29ed1e2521cf2f2d2db7095082.tar.gz
bcm5719-llvm-cc99e264756a8e29ed1e2521cf2f2d2db7095082.zip
Add a mangler entry point for TBAA rather than using RTTI directly
Summary: RTTI is not yet implemented for the Microsoft C++ ABI and isn't expected soon. We could easily add the mangling, but the error is what prevents us from silently miscompiling code that expects RTTI. Instead, add a new mangleTypeName entry point that simply forwards to mangleName or mangleType to produce a string that isn't part of the ABI. Itanium can continue to use RTTI names to avoid unecessary test breakage. This also seems like the right design. The fact that TBAA names happen to be RTTI names is now an implementation detail of the mangler, rather than part of TBAA. Differential Revision: http://llvm-reviews.chandlerc.com/D2153 llvm-svn: 195168
Diffstat (limited to 'clang/lib/AST/ItaniumMangle.cpp')
-rw-r--r--clang/lib/AST/ItaniumMangle.cpp5
1 files changed, 5 insertions, 0 deletions
diff --git a/clang/lib/AST/ItaniumMangle.cpp b/clang/lib/AST/ItaniumMangle.cpp
index e94b4cf9073..0621d7b1ad8 100644
--- a/clang/lib/AST/ItaniumMangle.cpp
+++ b/clang/lib/AST/ItaniumMangle.cpp
@@ -144,6 +144,7 @@ public:
raw_ostream &);
void mangleCXXRTTI(QualType T, raw_ostream &);
void mangleCXXRTTIName(QualType T, raw_ostream &);
+ void mangleTypeName(QualType T, raw_ostream &);
void mangleCXXCtor(const CXXConstructorDecl *D, CXXCtorType Type,
raw_ostream &);
void mangleCXXDtor(const CXXDestructorDecl *D, CXXDtorType Type,
@@ -3784,6 +3785,10 @@ void ItaniumMangleContextImpl::mangleCXXRTTIName(QualType Ty,
Mangler.mangleType(Ty);
}
+void ItaniumMangleContextImpl::mangleTypeName(QualType Ty, raw_ostream &Out) {
+ mangleCXXRTTIName(Ty, Out);
+}
+
ItaniumMangleContext *
ItaniumMangleContext::create(ASTContext &Context, DiagnosticsEngine &Diags) {
return new ItaniumMangleContextImpl(Context, Diags);
OpenPOWER on IntegriCloud