[Bug c/101171] [10 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
Wed May 11 06:20:54 GMT 2022


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

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

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

commit r9-10083-gbe5f5f6ea368e2b8b9a0012ecbe2e83aeabdf714
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.

    (cherry picked from commit fdc5522fb04b4a820b28c4d1f16f54897f5978de)


More information about the Gcc-bugs mailing list