Author: nico Date: Wed Oct 16 03:23:53 2019 New Revision: 374985 URL: http://llvm.org/viewvc/llvm-project?rev=374985&view=rev Log: 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). Removed: cfe/trunk/test/CodeGenCXX/mangle-concept.cpp Modified: cfe/trunk/lib/AST/ItaniumMangle.cpp cfe/trunk/lib/Sema/SemaTemplate.cpp Modified: cfe/trunk/lib/AST/ItaniumMangle.cpp URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/AST/ItaniumMangle.cpp?rev=374985&r1=374984&r2=374985&view=diff ============================================================================== --- cfe/trunk/lib/AST/ItaniumMangle.cpp (original) +++ cfe/trunk/lib/AST/ItaniumMangle.cpp Wed Oct 16 03:23:53 2019 @@ -969,7 +969,7 @@ void CXXNameMangler::mangleUnscopedTempl 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::mangleTemplatePrefi 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; Modified: cfe/trunk/lib/Sema/SemaTemplate.cpp URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Sema/SemaTemplate.cpp?rev=374985&r1=374984&r2=374985&view=diff ============================================================================== --- cfe/trunk/lib/Sema/SemaTemplate.cpp (original) +++ cfe/trunk/lib/Sema/SemaTemplate.cpp Wed Oct 16 03:23:53 2019 @@ -4302,7 +4302,7 @@ ExprResult Sema::BuildTemplateIdExpr(con TemplateKWLoc, TemplateArgs); } - if (R.getAsSingle<ConceptDecl>()) { + if (R.getAsSingle<ConceptDecl>() && !AnyDependentArguments()) { return CheckConceptTemplateId(SS, TemplateKWLoc, R.getLookupNameInfo().getBeginLoc(), R.getFoundDecl(), Removed: cfe/trunk/test/CodeGenCXX/mangle-concept.cpp URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGenCXX/mangle-concept.cpp?rev=374984&view=auto ============================================================================== --- cfe/trunk/test/CodeGenCXX/mangle-concept.cpp (original) +++ cfe/trunk/test/CodeGenCXX/mangle-concept.cpp (removed) @@ -1,16 +0,0 @@ -// RUN: %clang_cc1 -verify -Wno-return-type -Wno-main -std=c++2a -fconcepts-ts -emit-llvm -triple %itanium_abi_triple -o - %s | FileCheck %s -// expected-no-diagnostics - -namespace test1 { -template <bool> struct S {}; -template <typename> concept C = true; -template <typename T = int> S<C<T>> f0() { return S<C<T>>{}; } -template S<C<int>> f0<>(); -// CHECK: void @_ZN5test12f0IiEENS_1SIXL_ZNS_1CIT_EEEEEEv( -} - -template <bool> struct S {}; -template <typename> concept C = true; -template <typename T = int> S<C<T>> f0() { return S<C<T>>{}; } -template S<C<int>> f0<>(); -// CHECK: void @_Z2f0IiE1SIXL_Z1CIT_EEEEv( _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits