summaryrefslogtreecommitdiffstats
path: root/clang/lib/AST/MicrosoftMangle.cpp
diff options
context:
space:
mode:
authorDavid Majnemer <david.majnemer@gmail.com>2013-08-27 08:21:25 +0000
committerDavid Majnemer <david.majnemer@gmail.com>2013-08-27 08:21:25 +0000
commit08177c50535d00f5761db27071ed66c319c86d6e (patch)
tree97a85eef542f378128fbe45c96d65d11f0a3701d /clang/lib/AST/MicrosoftMangle.cpp
parentfb992ab38502e9c2ba1847c671a0a4d610eab6d6 (diff)
downloadbcm5719-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.cpp26
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();
- }
}
}
OpenPOWER on IntegriCloud