[Bug c/101171] [12 Regression] ICE: tree check: expected class ‘type’, have ‘exceptional’ (error_mark) in c_expr_sizeof_expr, at c/c-typeck.c:3006

cvs-commit at gcc dot gnu.org gcc-bugzilla@gcc.gnu.org
Thu Jun 24 13:57:43 GMT 2021


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

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

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

commit r12-1790-gfdc5522fb04b4a820b28c4d1f16f54897f5978de
Author: Jakub Jelinek <jakub@redhat.com>
Date:   Thu Jun 24 15:55:28 2021 +0200

    c: Fix C cast error-recovery [PR101171]

    The following testcase ICEs during error-recovery, as build_c_cast calls
    note_integer_operands on error_mark_node and that wraps it into
    C_MAYBE_CONST_EXPR which is unexpected and causes ICE later on.
    Seems most other callers of note_integer_operands check early if something
    is error_mark_node and return before calling note_integer_operands on it.

    The following patch fixes it by not calling on error_mark_node, another
    possibility would be to handle error_mark_node in note_integer_operands and
    just return it.

    2021-06-24  Jakub Jelinek  <jakub@redhat.com>

            PR c/101171
            * c-typeck.c (build_c_cast): Don't call note_integer_operands on
            error_mark_node.

            * gcc.dg/pr101171.c: New test.


More information about the Gcc-bugs mailing list