diff options
author | David Majnemer <david.majnemer@gmail.com> | 2013-08-27 08:21:25 +0000 |
---|---|---|
committer | David Majnemer <david.majnemer@gmail.com> | 2013-08-27 08:21:25 +0000 |
commit | 08177c50535d00f5761db27071ed66c319c86d6e (patch) | |
tree | 97a85eef542f378128fbe45c96d65d11f0a3701d /clang/lib/AST/MicrosoftMangle.cpp | |
parent | fb992ab38502e9c2ba1847c671a0a4d610eab6d6 (diff) | |
download | bcm5719-llvm-08177c50535d00f5761db27071ed66c319c86d6e.tar.gz bcm5719-llvm-08177c50535d00f5761db27071ed66c319c86d6e.zip |
[-cxx-abi microsoft] Remove ArgIndex, we handle all template argument kinds!
TemplateExpansion cannot happen here because MSVC doesn't mangle
anything but the fully substituted template arguments.
llvm-svn: 189325
Diffstat (limited to 'clang/lib/AST/MicrosoftMangle.cpp')
-rw-r--r-- | clang/lib/AST/MicrosoftMangle.cpp | 26 |
1 files changed, 6 insertions, 20 deletions
diff --git a/clang/lib/AST/MicrosoftMangle.cpp b/clang/lib/AST/MicrosoftMangle.cpp index cb93f070ffb..87527c9294a 100644 --- a/clang/lib/AST/MicrosoftMangle.cpp +++ b/clang/lib/AST/MicrosoftMangle.cpp @@ -135,8 +135,7 @@ private: void mangleTemplateArgs(const TemplateDecl *TD, const TemplateArgumentList &TemplateArgs); - void mangleTemplateArg(const TemplateDecl *TD, const TemplateArgument &TA, - int ArgIndex); + void mangleTemplateArg(const TemplateDecl *TD, const TemplateArgument &TA); }; /// MicrosoftMangleContext - Overrides the default MangleContext for the @@ -903,17 +902,18 @@ MicrosoftCXXNameMangler::mangleTemplateArgs(const TemplateDecl *TD, unsigned NumTemplateArgs = TemplateArgs.size(); for (unsigned i = 0; i < NumTemplateArgs; ++i) { const TemplateArgument &TA = TemplateArgs[i]; - mangleTemplateArg(TD, TA, i); + mangleTemplateArg(TD, TA); } Out << '@'; } void MicrosoftCXXNameMangler::mangleTemplateArg(const TemplateDecl *TD, - const TemplateArgument &TA, - int ArgIndex) { + const TemplateArgument &TA) { switch (TA.getKind()) { case TemplateArgument::Null: llvm_unreachable("Can't mangle null template arguments!"); + case TemplateArgument::TemplateExpansion: + llvm_unreachable("Can't mangle template expansion arguments!"); case TemplateArgument::Type: { QualType T = TA.getAsType(); mangleType(T, SourceRange(), QMM_Escape); @@ -936,28 +936,14 @@ void MicrosoftCXXNameMangler::mangleTemplateArg(const TemplateDecl *TD, break; case TemplateArgument::Pack: // Unlike Itanium, there is no character code to indicate an argument pack. - // FIXME: ArgIndex will be off, but we only use if for diagnostics that - // should ultimately be removed. for (TemplateArgument::pack_iterator I = TA.pack_begin(), E = TA.pack_end(); I != E; ++I) - mangleTemplateArg(TD, *I, ArgIndex); + mangleTemplateArg(TD, *I); break; case TemplateArgument::Template: mangleType(cast<TagDecl>( TA.getAsTemplate().getAsTemplateDecl()->getTemplatedDecl())); break; - case TemplateArgument::TemplateExpansion: { - // Issue a diagnostic. - DiagnosticsEngine &Diags = Context.getDiags(); - unsigned DiagID = Diags.getCustomDiagID(DiagnosticsEngine::Error, - "cannot mangle template argument %0 of kind %select{ERROR|ERROR|" - "pointer/reference|nullptr|integral|template|template pack expansion|" - "ERROR|parameter pack}1 yet"); - Diags.Report(TD->getLocation(), DiagID) - << ArgIndex + 1 - << TA.getKind() - << TD->getSourceRange(); - } } } |