r374985 - Revert 374967 "[Concepts] ConceptSpecializationExprs mangling"

Nico Weber via cfe-commits cfe-commits at lists.llvm.org
Wed Oct 16 03:23:54 PDT 2019


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(




More information about the cfe-commits mailing list