diff options
author | Douglas Gregor <dgregor@apple.com> | 2011-07-12 05:06:05 +0000 |
---|---|---|
committer | Douglas Gregor <dgregor@apple.com> | 2011-07-12 05:06:05 +0000 |
commit | 1cf9dd21dcb923b9aea3fab1e0959a59775bfc36 (patch) | |
tree | 1c77886e3284587afdcde142d8830e01a7ede16f /clang/lib/AST | |
parent | 3ce8668273c418a9f8c807e704d35f97e07a67a9 (diff) | |
download | bcm5719-llvm-1cf9dd21dcb923b9aea3fab1e0959a59775bfc36.tar.gz bcm5719-llvm-1cf9dd21dcb923b9aea3fab1e0959a59775bfc36.zip |
Mangle dependent template names of unknown arity
llvm-svn: 134967
Diffstat (limited to 'clang/lib/AST')
-rw-r--r-- | clang/lib/AST/ItaniumMangle.cpp | 14 |
1 files changed, 4 insertions, 10 deletions
diff --git a/clang/lib/AST/ItaniumMangle.cpp b/clang/lib/AST/ItaniumMangle.cpp index 958b4a26a09..5a1025fff02 100644 --- a/clang/lib/AST/ItaniumMangle.cpp +++ b/clang/lib/AST/ItaniumMangle.cpp @@ -593,19 +593,13 @@ void CXXNameMangler::mangleUnscopedTemplateName(TemplateName Template) { if (mangleSubstitution(Template)) return; - // FIXME: How to cope with operators here? DependentTemplateName *Dependent = Template.getAsDependentTemplateName(); assert(Dependent && "Not a dependent template name?"); - if (!Dependent->isIdentifier()) { - // FIXME: We can't possibly know the arity of the operator here! - Diagnostic &Diags = Context.getDiags(); - unsigned DiagID = Diags.getCustomDiagID(Diagnostic::Error, - "cannot mangle dependent operator name"); - Diags.Report(DiagID); - return; - } + if (const IdentifierInfo *Id = Dependent->getIdentifier()) + mangleSourceName(Id); + else + mangleOperatorName(Dependent->getOperator(), UnknownArity); - mangleSourceName(Dependent->getIdentifier()); addSubstitution(Template); } |