diff options
-rw-r--r-- | gcc/cp/pt.cc | 3 | ||||
-rw-r--r-- | gcc/testsuite/g++.dg/modules/concept-8.h | 14 | ||||
-rw-r--r-- | gcc/testsuite/g++.dg/modules/concept-8_a.H | 5 | ||||
-rw-r--r-- | gcc/testsuite/g++.dg/modules/concept-8_b.C | 8 |
4 files changed, 29 insertions, 1 deletions
diff --git a/gcc/cp/pt.cc b/gcc/cp/pt.cc index e9dcdb3..208fa21 100644 --- a/gcc/cp/pt.cc +++ b/gcc/cp/pt.cc @@ -30020,7 +30020,8 @@ alias_ctad_tweaks (tree tmpl, tree uguides) /* Parms are to have DECL_CHAIN tsubsted, which would be skipped if cp_unevaluated_operand. */ cp_evaluated ev; - g = tsubst_decl (DECL_TEMPLATE_RESULT (f), targs, complain); + g = tsubst_decl (DECL_TEMPLATE_RESULT (f), targs, complain, + /*use_spec_table=*/false); } if (g == error_mark_node) continue; diff --git a/gcc/testsuite/g++.dg/modules/concept-8.h b/gcc/testsuite/g++.dg/modules/concept-8.h new file mode 100644 index 0000000..a25f9b7 --- /dev/null +++ b/gcc/testsuite/g++.dg/modules/concept-8.h @@ -0,0 +1,14 @@ +// A version of concept-6.h using an alias template + alias CTAD + +template<typename _Callable> +struct Base +{ + Base (const _Callable &) + requires true + {} +}; + +template<typename _Callable> requires true +using Derived = Base<_Callable>; + +inline Derived all = [] (auto&& __r) {}; diff --git a/gcc/testsuite/g++.dg/modules/concept-8_a.H b/gcc/testsuite/g++.dg/modules/concept-8_a.H new file mode 100644 index 0000000..da04677 --- /dev/null +++ b/gcc/testsuite/g++.dg/modules/concept-8_a.H @@ -0,0 +1,5 @@ +// { dg-require-effective-target c++20 } +// { dg-additional-options "-fmodule-header -fconcepts" } +// { dg-module-cmi {} } + +#include "concept-8.h" diff --git a/gcc/testsuite/g++.dg/modules/concept-8_b.C b/gcc/testsuite/g++.dg/modules/concept-8_b.C new file mode 100644 index 0000000..9a9f014 --- /dev/null +++ b/gcc/testsuite/g++.dg/modules/concept-8_b.C @@ -0,0 +1,8 @@ +// { dg-require-effective-target c++20 } +// { dg-additional-options "-fmodules-ts -fconcepts -fdump-lang-module-alias -fno-module-lazy" } + +#include "concept-8.h" +import "concept-8_a.H"; + +// { dg-final { scan-lang-dump-times {named merge key \(matched\) function_decl:'::Base<::._anon_0>::__ct '} 2 module } } +// { dg-final { scan-lang-dump-not {merge key \(new\)} module } } |