[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