diff options
| author | Nico Weber <nicolasweber@gmx.de> | 2019-10-16 10:23:53 +0000 |
|---|---|---|
| committer | Nico Weber <nicolasweber@gmx.de> | 2019-10-16 10:23:53 +0000 |
| commit | b13d257028a671439aea51f0ddd66c81134592bf (patch) | |
| tree | 19df0013e43d81069f2da396fbc67565bd2f382d /clang/lib | |
| parent | 02baaca742f7cfb16e21bac916c427bcec2b0af5 (diff) | |
| download | bcm5719-llvm-b13d257028a671439aea51f0ddd66c81134592bf.tar.gz bcm5719-llvm-b13d257028a671439aea51f0ddd66c81134592bf.zip | |
Revert 374967 "[Concepts] ConceptSpecializationExprs mangling"
This reverts commit 5e34ad109ced8dbdea9500ee28180315b2aeba3d.
The mangling test fails on Windows:
http://lab.llvm.org:8011/builders/clang-x64-ninja-win7/builds/15944
It also fails on ppc64le:
http://lab.llvm.org:8011/builders/clang-ppc64le-linux-lnt/builds/21092
Also revert follow-up 374971 "Fix failing mangle-concept.cpp test."
(it did not help on Win/ppc64le).
llvm-svn: 374985
Diffstat (limited to 'clang/lib')
| -rw-r--r-- | clang/lib/AST/ItaniumMangle.cpp | 17 | ||||
| -rw-r--r-- | clang/lib/Sema/SemaTemplate.cpp | 2 |
2 files changed, 4 insertions, 15 deletions
diff --git a/clang/lib/AST/ItaniumMangle.cpp b/clang/lib/AST/ItaniumMangle.cpp index 534a92d2cb8..8e3ad4c2667 100644 --- a/clang/lib/AST/ItaniumMangle.cpp +++ b/clang/lib/AST/ItaniumMangle.cpp @@ -969,7 +969,7 @@ void CXXNameMangler::mangleUnscopedTemplateName( assert(!AdditionalAbiTags && "template template param cannot have abi tags"); mangleTemplateParameter(TTP->getDepth(), TTP->getIndex()); - } else if (isa<BuiltinTemplateDecl>(ND) || isa<ConceptDecl>(ND)) { + } else if (isa<BuiltinTemplateDecl>(ND)) { mangleUnscopedName(ND, AdditionalAbiTags); } else { mangleUnscopedName(ND->getTemplatedDecl(), AdditionalAbiTags); @@ -1890,7 +1890,7 @@ void CXXNameMangler::mangleTemplatePrefix(const TemplateDecl *ND, mangleTemplateParameter(TTP->getDepth(), TTP->getIndex()); } else { manglePrefix(getEffectiveDeclContext(ND), NoFunction); - if (isa<BuiltinTemplateDecl>(ND) || isa<ConceptDecl>(ND)) + if (isa<BuiltinTemplateDecl>(ND)) mangleUnqualifiedName(ND, nullptr); else mangleUnqualifiedName(ND->getTemplatedDecl(), nullptr); @@ -3658,6 +3658,7 @@ recurse: case Expr::ConvertVectorExprClass: case Expr::StmtExprClass: case Expr::TypeTraitExprClass: + case Expr::ConceptSpecializationExprClass: case Expr::ArrayTypeTraitExprClass: case Expr::ExpressionTraitExprClass: case Expr::VAArgExprClass: @@ -4167,18 +4168,6 @@ recurse: mangleExpression(cast<ParenExpr>(E)->getSubExpr(), Arity); break; - - case Expr::ConceptSpecializationExprClass: { - // <expr-primary> ::= L <mangled-name> E # external name - Out << "L_Z"; - auto *CSE = cast<ConceptSpecializationExpr>(E); - mangleTemplateName(CSE->getNamedConcept(), - CSE->getTemplateArguments().data(), - CSE->getTemplateArguments().size()); - Out << 'E'; - break; - } - case Expr::DeclRefExprClass: mangleDeclRefExpr(cast<DeclRefExpr>(E)->getDecl()); break; diff --git a/clang/lib/Sema/SemaTemplate.cpp b/clang/lib/Sema/SemaTemplate.cpp index 09cc525837c..28715114661 100644 --- a/clang/lib/Sema/SemaTemplate.cpp +++ b/clang/lib/Sema/SemaTemplate.cpp @@ -4302,7 +4302,7 @@ ExprResult Sema::BuildTemplateIdExpr(const CXXScopeSpec &SS, TemplateKWLoc, TemplateArgs); } - if (R.getAsSingle<ConceptDecl>()) { + if (R.getAsSingle<ConceptDecl>() && !AnyDependentArguments()) { return CheckConceptTemplateId(SS, TemplateKWLoc, R.getLookupNameInfo().getBeginLoc(), R.getFoundDecl(), |

