[Bug c++/95497] [11 Regression] ICE: concepts with a fully known / complete type in requires
cvs-commit at gcc dot gnu.org
gcc-bugzilla@gcc.gnu.org
Wed Jul 8 18:19:32 GMT 2020
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=95497
--- Comment #2 from CVS Commits <cvs-commit at gcc dot gnu.org> ---
The master branch has been updated by Patrick Palka <ppalka@gcc.gnu.org>:
https://gcc.gnu.org/g:9eb7d0d76eb652caa9186766da4fe965f113b1b8
commit r11-1947-g9eb7d0d76eb652caa9186766da4fe965f113b1b8
Author: Patrick Palka <ppalka@redhat.com>
Date: Wed Jul 8 14:17:47 2020 -0400
c++: ICE in is_really_empty_class [PR95497]
We are ICEing in the testcase below because we pass the
yet-uninstantiated class type A<int> of the PARM_DECL b to
is_really_empty_class from is_rvalue_constant_expression when parsing
the requirement t += b.
This patch fixes the ICE by guarding the problematic call to
is_really_empty_class with a COMPLETE_TYPE_P check, which should also
subsume the existing dependent_type_p check.
gcc/cp/ChangeLog:
PR c++/95497
* constexpr.c (potential_constant_expression_1) <case PARM_DECL>:
When processing_template_decl, check COMPLETE_TYPE_P before
calling is_really_empty_class. Don't check dependent_type_p.
gcc/testsuite/ChangeLog:
PR c++/95497
* g++.dg/cpp2a/concepts-pr95497.C: New test.
More information about the Gcc-bugs
mailing list