llvmbot wrote:
<!--LLVM PR SUMMARY COMMENT--> @llvm/pr-subscribers-clang Author: None (github-actions[bot]) <details> <summary>Changes</summary> resolves llvm/llvm-project#<!-- -->79355 --- Full diff: https://github.com/llvm/llvm-project/pull/79361.diff 2 Files Affected: - (modified) clang/lib/AST/TemplateBase.cpp (+2-1) - (modified) clang/test/SemaTemplate/temp_arg_nontype_cxx20.cpp (+18) ``````````diff diff --git a/clang/lib/AST/TemplateBase.cpp b/clang/lib/AST/TemplateBase.cpp index 2bdbeb08ef20465..3310d7dc24c59d2 100644 --- a/clang/lib/AST/TemplateBase.cpp +++ b/clang/lib/AST/TemplateBase.cpp @@ -450,7 +450,8 @@ bool TemplateArgument::structurallyEquals(const TemplateArgument &Other) const { getAsIntegral() == Other.getAsIntegral(); case StructuralValue: { - if (getStructuralValueType() != Other.getStructuralValueType()) + if (getStructuralValueType().getCanonicalType() != + Other.getStructuralValueType().getCanonicalType()) return false; llvm::FoldingSetNodeID A, B; diff --git a/clang/test/SemaTemplate/temp_arg_nontype_cxx20.cpp b/clang/test/SemaTemplate/temp_arg_nontype_cxx20.cpp index b5b8cadc909ce00..834174cdf6a32dc 100644 --- a/clang/test/SemaTemplate/temp_arg_nontype_cxx20.cpp +++ b/clang/test/SemaTemplate/temp_arg_nontype_cxx20.cpp @@ -336,3 +336,21 @@ template<int ...Ns> void bar(B b) { (b.operator Tbar<Ns>(), ...); } } + +namespace ReportedRegression1 { + const char kt[] = "dummy"; + + template <class T, const char id[]> + class SomeTempl { }; + + template <const char id[]> + class SomeTempl<int, id> { + public: + int exit_code() const { return 0; } + }; + + int use() { + SomeTempl<int, kt> dummy; + return dummy.exit_code(); + } +} `````````` </details> https://github.com/llvm/llvm-project/pull/79361 _______________________________________________ llvm-branch-commits mailing list llvm-branch-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-branch-commits