r189325 - [-cxx-abi microsoft] Remove ArgIndex, we handle all template argument kinds!
David Majnemer
david.majnemer at gmail.com
Tue Aug 27 01:21:25 PDT 2013
Author: majnemer
Date: Tue Aug 27 03:21:25 2013
New Revision: 189325
URL: http://llvm.org/viewvc/llvm-project?rev=189325&view=rev
Log:
[-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.
Modified:
cfe/trunk/lib/AST/MicrosoftMangle.cpp
Modified: cfe/trunk/lib/AST/MicrosoftMangle.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/AST/MicrosoftMangle.cpp?rev=189325&r1=189324&r2=189325&view=diff
==============================================================================
--- cfe/trunk/lib/AST/MicrosoftMangle.cpp (original)
+++ cfe/trunk/lib/AST/MicrosoftMangle.cpp Tue Aug 27 03:21:25 2013
@@ -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::mangleTemplateA
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::mangleTemp
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();
- }
}
}
More information about the cfe-commits
mailing list