[Bug c++/94937] [10/11 Regression] ICE with if constexpr (in cp_get_fndecl_from_callee, at cp/cvt.c:1000) since r10-2835-g14da3939da3adcef

cvs-commit at gcc dot gnu.org gcc-bugzilla@gcc.gnu.org
Mon May 18 22:59:15 GMT 2020


https://gcc.gnu.org/bugzilla/show_bug.cgi?id=94937

--- Comment #19 from CVS Commits <cvs-commit at gcc dot gnu.org> ---
The master branch has been updated by Marek Polacek <mpolacek@gcc.gnu.org>:

https://gcc.gnu.org/g:bf732686c0b9c42a2fe119db774c5a65e5a97174

commit r11-473-gbf732686c0b9c42a2fe119db774c5a65e5a97174
Author: Marek Polacek <polacek@redhat.com>
Date:   Wed May 6 19:24:58 2020 -0400

    c++: ICE with -Wall and constexpr if [PR94937]

    An ICE arises here because we call cp_get_callee_fndecl_nofold in a
    template, and we've got a CALL_EXPR whose CALL_EXPR_FN is a BASELINK.
    This tickles the INDIRECT_TYPE_P assert in cp_get_fndecl_from_callee.

    Fixed by turning the assert into a condition and returning NULL_TREE
    in that case.

            PR c++/94937
            * cvt.c (cp_get_fndecl_from_callee): Return NULL_TREE if the
function
            type is not INDIRECT_TYPE_P.
            * decl.c (omp_declare_variant_finalize_one): Call
            cp_get_callee_fndecl_nofold instead of looking for the function
decl
            manually.

            * g++.dg/cpp1z/constexpr-if34.C: New test.
            * g++.dg/cpp2a/is-constant-evaluated10.C: New test.


More information about the Gcc-bugs mailing list