[clang] [clang] NFCI: remove obsolete workaround for template default arguments (PR #94311)

2024-06-04 Thread Matheus Izvekov via cfe-commits

https://github.com/mizvekov closed 
https://github.com/llvm/llvm-project/pull/94311
___
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits


[clang] [clang] NFCI: remove obsolete workaround for template default arguments (PR #94311)

2024-06-04 Thread Krystian Stasiowski via cfe-commits

https://github.com/sdkrystian approved this pull request.

LGTM

https://github.com/llvm/llvm-project/pull/94311
___
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits


[clang] [clang] NFCI: remove obsolete workaround for template default arguments (PR #94311)

2024-06-04 Thread via cfe-commits

https://github.com/cor3ntin approved this pull request.


https://github.com/llvm/llvm-project/pull/94311
___
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits


[clang] [clang] NFCI: remove obsolete workaround for template default arguments (PR #94311)

2024-06-04 Thread Haojian Wu via cfe-commits

https://github.com/hokein approved this pull request.

Thanks for the cleanup, this looks good to me.

https://github.com/llvm/llvm-project/pull/94311
___
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits


[clang] [clang] NFCI: remove obsolete workaround for template default arguments (PR #94311)

2024-06-03 Thread via cfe-commits

llvmbot wrote:




@llvm/pr-subscribers-clang

Author: Matheus Izvekov (mizvekov)


Changes

This removes a workaround for template template arguments pointing to older 
template declarations, which don't have the most recent default argument 
definition.

The removed workaround was introduced in 
1abacfcb2358a1928f0ced693e149a6cf2fc482e, but 
https://github.com/llvm/llvm-project/pull/75569 introduced a better fix which 
is more comprehensive and doesn't require rebuilding TemplateNames.

---
Full diff: https://github.com/llvm/llvm-project/pull/94311.diff


3 Files Affected:

- (modified) clang/include/clang/AST/TemplateName.h (-5) 
- (modified) clang/lib/AST/TemplateName.cpp (-17) 
- (modified) clang/lib/Sema/SemaTemplateInstantiate.cpp (+4-6) 


``diff
diff --git a/clang/include/clang/AST/TemplateName.h 
b/clang/include/clang/AST/TemplateName.h
index 7aedc086ab7d0..489fccb2ef74d 100644
--- a/clang/include/clang/AST/TemplateName.h
+++ b/clang/include/clang/AST/TemplateName.h
@@ -314,11 +314,6 @@ class TemplateName {
 
   TemplateName getUnderlying() const;
 
-  /// Get the template name to substitute when this template name is used as a
-  /// template template argument. This refers to the most recent declaration of
-  /// the template, including any default template arguments.
-  TemplateName getNameToSubstitute() const;
-
   TemplateNameDependence getDependence() const;
 
   /// Determines whether this is a dependent template name.
diff --git a/clang/lib/AST/TemplateName.cpp b/clang/lib/AST/TemplateName.cpp
index 3dbdad92813f6..4fc25cb34803e 100644
--- a/clang/lib/AST/TemplateName.cpp
+++ b/clang/lib/AST/TemplateName.cpp
@@ -214,23 +214,6 @@ UsingShadowDecl *TemplateName::getAsUsingShadowDecl() 
const {
   return nullptr;
 }
 
-TemplateName TemplateName::getNameToSubstitute() const {
-  TemplateDecl *Decl = getAsTemplateDecl();
-
-  // Substituting a dependent template name: preserve it as written.
-  if (!Decl)
-return *this;
-
-  // If we have a template declaration, use the most recent non-friend
-  // declaration of that template.
-  Decl = cast(Decl->getMostRecentDecl());
-  while (Decl->getFriendObjectKind()) {
-Decl = cast(Decl->getPreviousDecl());
-assert(Decl && "all declarations of template are friends");
-  }
-  return TemplateName(Decl);
-}
-
 TemplateNameDependence TemplateName::getDependence() const {
   auto D = TemplateNameDependence::None;
   switch (getKind()) {
diff --git a/clang/lib/Sema/SemaTemplateInstantiate.cpp 
b/clang/lib/Sema/SemaTemplateInstantiate.cpp
index abb8a260faab9..863cc53c55afa 100644
--- a/clang/lib/Sema/SemaTemplateInstantiate.cpp
+++ b/clang/lib/Sema/SemaTemplateInstantiate.cpp
@@ -1856,7 +1856,7 @@ Decl *TemplateInstantiator::TransformDecl(SourceLocation 
Loc, Decl *D) {
 Arg = getPackSubstitutedTemplateArgument(getSema(), Arg);
   }
 
-  TemplateName Template = Arg.getAsTemplate().getNameToSubstitute();
+  TemplateName Template = Arg.getAsTemplate();
   assert(!Template.isNull() && Template.getAsTemplateDecl() &&
  "Wrong kind of template template argument");
   return Template.getAsTemplateDecl();
@@ -2029,10 +2029,8 @@ TemplateName TemplateInstantiator::TransformTemplateName(
 Arg = getPackSubstitutedTemplateArgument(getSema(), Arg);
   }
 
-  TemplateName Template = Arg.getAsTemplate().getNameToSubstitute();
+  TemplateName Template = Arg.getAsTemplate();
   assert(!Template.isNull() && "Null template template argument");
-  assert(!Template.getAsQualifiedTemplateName() &&
- "template decl to substitute is qualified?");
 
   if (Final)
 return Template;
@@ -2052,8 +2050,8 @@ TemplateName TemplateInstantiator::TransformTemplateName(
 if (SubstPack->getFinal())
   return Template;
 return getSema().Context.getSubstTemplateTemplateParm(
-Template.getNameToSubstitute(), SubstPack->getAssociatedDecl(),
-SubstPack->getIndex(), getPackIndex(Pack));
+Template, SubstPack->getAssociatedDecl(), SubstPack->getIndex(),
+getPackIndex(Pack));
   }
 
   return inherited::TransformTemplateName(SS, Name, NameLoc, ObjectType,

``




https://github.com/llvm/llvm-project/pull/94311
___
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits


[clang] [clang] NFCI: remove obsolete workaround for template default arguments (PR #94311)

2024-06-03 Thread Matheus Izvekov via cfe-commits

https://github.com/mizvekov created 
https://github.com/llvm/llvm-project/pull/94311

This removes a workaround for template template arguments pointing to older 
template declarations, which don't have the most recent default argument 
definition.

The removed workaround was introduced in 
1abacfcb2358a1928f0ced693e149a6cf2fc482e, but 
https://github.com/llvm/llvm-project/pull/75569 introduced a better fix which 
is more comprehensive and doesn't require rebuilding TemplateNames.

>From 7b0186176437e22a5bfe221dd6ed3daf0c949fea Mon Sep 17 00:00:00 2001
From: Matheus Izvekov 
Date: Tue, 4 Jun 2024 01:26:10 -0300
Subject: [PATCH] [clang] NFCI: remove obsolete workaround for template default
 arguments

This removes a workaround for template template arguments pointing to
older template declarations, which don't have the most recent default
argument definition.

The removed workaround was introduced in 
1abacfcb2358a1928f0ced693e149a6cf2fc482e,
but https://github.com/llvm/llvm-project/pull/75569 introduced a
better fix which is more comprehensive and doesn't require rebuilding
TemplateNames.
---
 clang/include/clang/AST/TemplateName.h |  5 -
 clang/lib/AST/TemplateName.cpp | 17 -
 clang/lib/Sema/SemaTemplateInstantiate.cpp | 10 --
 3 files changed, 4 insertions(+), 28 deletions(-)

diff --git a/clang/include/clang/AST/TemplateName.h 
b/clang/include/clang/AST/TemplateName.h
index 7aedc086ab7d0..489fccb2ef74d 100644
--- a/clang/include/clang/AST/TemplateName.h
+++ b/clang/include/clang/AST/TemplateName.h
@@ -314,11 +314,6 @@ class TemplateName {
 
   TemplateName getUnderlying() const;
 
-  /// Get the template name to substitute when this template name is used as a
-  /// template template argument. This refers to the most recent declaration of
-  /// the template, including any default template arguments.
-  TemplateName getNameToSubstitute() const;
-
   TemplateNameDependence getDependence() const;
 
   /// Determines whether this is a dependent template name.
diff --git a/clang/lib/AST/TemplateName.cpp b/clang/lib/AST/TemplateName.cpp
index 3dbdad92813f6..4fc25cb34803e 100644
--- a/clang/lib/AST/TemplateName.cpp
+++ b/clang/lib/AST/TemplateName.cpp
@@ -214,23 +214,6 @@ UsingShadowDecl *TemplateName::getAsUsingShadowDecl() 
const {
   return nullptr;
 }
 
-TemplateName TemplateName::getNameToSubstitute() const {
-  TemplateDecl *Decl = getAsTemplateDecl();
-
-  // Substituting a dependent template name: preserve it as written.
-  if (!Decl)
-return *this;
-
-  // If we have a template declaration, use the most recent non-friend
-  // declaration of that template.
-  Decl = cast(Decl->getMostRecentDecl());
-  while (Decl->getFriendObjectKind()) {
-Decl = cast(Decl->getPreviousDecl());
-assert(Decl && "all declarations of template are friends");
-  }
-  return TemplateName(Decl);
-}
-
 TemplateNameDependence TemplateName::getDependence() const {
   auto D = TemplateNameDependence::None;
   switch (getKind()) {
diff --git a/clang/lib/Sema/SemaTemplateInstantiate.cpp 
b/clang/lib/Sema/SemaTemplateInstantiate.cpp
index abb8a260faab9..863cc53c55afa 100644
--- a/clang/lib/Sema/SemaTemplateInstantiate.cpp
+++ b/clang/lib/Sema/SemaTemplateInstantiate.cpp
@@ -1856,7 +1856,7 @@ Decl *TemplateInstantiator::TransformDecl(SourceLocation 
Loc, Decl *D) {
 Arg = getPackSubstitutedTemplateArgument(getSema(), Arg);
   }
 
-  TemplateName Template = Arg.getAsTemplate().getNameToSubstitute();
+  TemplateName Template = Arg.getAsTemplate();
   assert(!Template.isNull() && Template.getAsTemplateDecl() &&
  "Wrong kind of template template argument");
   return Template.getAsTemplateDecl();
@@ -2029,10 +2029,8 @@ TemplateName TemplateInstantiator::TransformTemplateName(
 Arg = getPackSubstitutedTemplateArgument(getSema(), Arg);
   }
 
-  TemplateName Template = Arg.getAsTemplate().getNameToSubstitute();
+  TemplateName Template = Arg.getAsTemplate();
   assert(!Template.isNull() && "Null template template argument");
-  assert(!Template.getAsQualifiedTemplateName() &&
- "template decl to substitute is qualified?");
 
   if (Final)
 return Template;
@@ -2052,8 +2050,8 @@ TemplateName TemplateInstantiator::TransformTemplateName(
 if (SubstPack->getFinal())
   return Template;
 return getSema().Context.getSubstTemplateTemplateParm(
-Template.getNameToSubstitute(), SubstPack->getAssociatedDecl(),
-SubstPack->getIndex(), getPackIndex(Pack));
+Template, SubstPack->getAssociatedDecl(), SubstPack->getIndex(),
+getPackIndex(Pack));
   }
 
   return inherited::TransformTemplateName(SS, Name, NameLoc, ObjectType,

___
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits