[Bug middle-end/101624] [9/10/11 Regression] ICE: tree check: expected tree that contains 'decl with RTL' structure, have 'const_decl' in maybe_optimize_ubsan_ptr_ifn, at sanopt.c:495

cvs-commit at gcc dot gnu.org gcc-bugzilla@gcc.gnu.org
Thu Aug 12 22:54:59 GMT 2021


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

--- Comment #5 from CVS Commits <cvs-commit at gcc dot gnu.org> ---
The releases/gcc-11 branch has been updated by Jakub Jelinek
<jakub@gcc.gnu.org>:

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

commit r11-8858-ge7fd8e978ec101a6ce9c92c72d38f7bdff30b2c5
Author: Jakub Jelinek <jakub@redhat.com>
Date:   Wed Jul 28 18:43:15 2021 +0200

    ubsan: Fix ICEs with DECL_REGISTER tests [PR101624]

    The following testcase ICEs, because the base is a CONST_DECL for
    the Fortran parameter, and ubsan/sanopt uses DECL_REGISTER macro on it.
     /* In VAR_DECL and PARM_DECL nodes, nonzero means declared `register'.  */
     #define DECL_REGISTER(NODE) (DECL_WRTL_CHECK
(NODE)->decl_common.decl_flag_0)
    while CONST_DECL doesn't satisfy DECL_WRTL_CHECK.

    The following patch checks explicitly for VAR_DECL/PARM_DECL/RESULT_DECL
    only before using DECL_REGISTER, assumes other decls aren't DECL_REGISTER.
    Not really sure about RESULT_DECL but it at least satisfies
DECL_WRTL_CHECK...

    2021-07-28  Jakub Jelinek  <jakub@redhat.com>

            PR middle-end/101624
            * ubsan.c (maybe_instrument_pointer_overflow,
            instrument_object_size): Only test DECL_REGISTER on VAR_DECLs,
            PARM_DECLs or RESULT_DECLs.
            * sanopt.c (maybe_optimize_ubsan_ptr_ifn): Likewise.

            * gfortran.dg/ubsan/ubsan.exp: New file.
            * gfortran.dg/ubsan/pr101624.f90: New test.

    (cherry picked from commit 49e28c02a95a4bee981e69a80950309869580151)


More information about the Gcc-bugs mailing list