diff options
author | Reid Kleckner <reid@kleckner.net> | 2013-11-19 23:23:00 +0000 |
---|---|---|
committer | Reid Kleckner <reid@kleckner.net> | 2013-11-19 23:23:00 +0000 |
commit | cc99e264756a8e29ed1e2521cf2f2d2db7095082 (patch) | |
tree | 6364f00e7aa4ec412eb4705069ac7ca7b5fcba4e /clang/lib/AST/ItaniumMangle.cpp | |
parent | 409dd9c34aa3bef7b1234301f40ce3c35a58145c (diff) | |
download | bcm5719-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.cpp | 5 |
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); |