| Summary: | [10/11 Regression] ICE concepts with template template parameter since r10-3735-gcb57504a55015891 | ||
|---|---|---|---|
| Product: | gcc | Reporter: | gcc-bugs |
| Component: | c++ | Assignee: | Jason Merrill <jason> |
| Status: | RESOLVED FIXED | ||
| Severity: | normal | CC: | jason, marxin, webrown.cpp |
| Priority: | P3 | Keywords: | ice-on-valid-code |
| Version: | 10.1.0 | ||
| Target Milestone: | 10.2 | ||
| Host: | Target: | ||
| Build: | Known to work: | ||
| Known to fail: | Last reconfirmed: | 2020-05-27 00:00:00 | |
Whoops, it's already reduced. The master branch has been updated by Jason Merrill <jason@gcc.gnu.org>: https://gcc.gnu.org/g:2fb595f8348e164d2f06536ba98322616eeaeeb6 commit r11-734-g2fb595f8348e164d2f06536ba98322616eeaeeb6 Author: Jason Merrill <jason@redhat.com> Date: Fri May 29 16:55:52 2020 -0400 c++: Template template parameter in constraint [PR95371] any_template_parm_r was assuming that the DECL_TEMPLATE_RESULT of a template will have a suitable TEMPLATE_INFO from which we can look at the generic arguments for that template. But that wasn't true for a template template parameter; this patch makes it so. gcc/cp/ChangeLog: PR c++/95371 * pt.c (process_template_parm): Set DECL_TEMPLATE_INFO on the DECL_TEMPLATE_RESULT. gcc/testsuite/ChangeLog: PR c++/95371 * g++.dg/cpp2a/concepts-ttp1.C: New test. The releases/gcc-10 branch has been updated by Jason Merrill <jason@gcc.gnu.org>: https://gcc.gnu.org/g:c07c745b1ef62f633024824b7e125027f10c969b commit r10-8211-gc07c745b1ef62f633024824b7e125027f10c969b Author: Jason Merrill <jason@redhat.com> Date: Fri May 29 16:55:52 2020 -0400 c++: Template template parameter in constraint [PR95371] gcc/cp/ChangeLog: PR c++/95371 * pt.c (process_template_parm): Set DECL_TEMPLATE_INFO on the DECL_TEMPLATE_RESULT. gcc/testsuite/ChangeLog: PR c++/95371 * g++.dg/cpp2a/concepts-ttp1.C: New test. (cherry picked from commit d91b3aea7a5bdfbdaec746af2d62894812e6fd86) Fixed for 10.2/11. |
Hallo gcc-team, the following code worked with gcc9, but ICEs with gcc 10.1 and in trunk ```c++ template <typename...> struct configuration { template <template <typename...> typename query_t> static constexpr bool exists() { return true; } template <template <typename...> typename query_t> void remove() requires(exists<query_t>()); }; int main() { configuration<> cfg{}; cfg.remove<configuration>(); } ``` https://godbolt.org/z/NGU5i9 ``` > g++-10 -std=c++2a <source>: In function 'int main()': <source>:12:31: internal compiler error: Segmentation fault 12 | cfg.remove<configuration>(); | ^ Please submit a full bug report, with preprocessed source if appropriate. See <https://gcc.gnu.org/bugs/> for instructions. Compiler returned: 1 ```