[Bug c++/93314] [8/9/10 Regression] Invalid use of non-static data member causes ICE in gimplify_expr

msebor at gcc dot gnu.org gcc-bugzilla@gcc.gnu.org
Mon Jan 20 10:47:00 GMT 2020


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

Martin Sebor <msebor at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |msebor at gcc dot gnu.org,
                   |                            |rsandifo at gcc dot gnu.org
      Known to work|                            |4.9.4
            Summary|Invalid use of non-static   |[8/9/10 Regression] Invalid
                   |data member causes ICE in   |use of non-static data
                   |gimplify_expr               |member causes ICE in
                   |                            |gimplify_expr
      Known to fail|                            |10.0, 5.0

--- Comment #2 from Martin Sebor <msebor at gcc dot gnu.org> ---
Confirmed.  Bisection points to r210692 committed into 4.10.0:

gcc/
        * tree.def (VOID_CST): New.
        * tree-core.h (TI_VOID): New.
        * tree.h (void_node): New.
        * tree.c (tree_node_structure_for_code, tree_code_size)
        (iterative_hash_expr): Handle VOID_CST.
        (build_common_tree_nodes): Initialize void_node.

gcc/c-family/
        * c-common.h (CTI_VOID_ZERO, void_zero_node): Delete.
        * c-common.c (c_common_nodes_and_builtins): Don't initialize
        void_zero_node.
        * c-pretty-print.c (pp_c_void_constant): New function.
        (c_pretty_printer::constant, c_pretty_printer::primary_expression)
        (c_pretty_printer::expression): Handle VOID_CST.
        * cilk.c (extract_free_variables): Likewise.
        * c-ubsan.c (ubsan_instrument_division, ubsan_instrument_shift)
        (ubsan_instrument_vla): Use void_node instead of void_zero_node.

gcc/c/
        * c-array-notation.c (expand_array_notations): Use void_node
        instead of void_zero_node.

gcc/cp/
        * cvt.c (convert_to_void): Use void_node instead of void_zero_node.
        * cp-array-notation.c (replace_invariant_exprs): Likewise.
        (expand_array_notation): Handle VOID_CST.
        * error.c (dump_expr): Likewise.
        * cxx-pretty-print.c (cxx_pretty_printer::primary_expression)
        (cxx_pretty_printer::expression): Likewise.
        (pp_cxx_new_expression): Use void_node instead of void_zero_node.
        * decl.c (register_dtor_fn): Likewise.
        * init.c (build_raw_new_expr, build_new_1, build_vec_init)
        (build_delete, push_base_cleanups): Likewise.
        * mangle.c (write_expression): Likewise.
        * semantics.c (finish_break_stmt, empty_expr_stmt_p): Likewise.
        * pt.c (tsubst_decl, tsubst_copy_and_build): Likewise.
        (tsubst, tsubst_copy, build_non_dependent_expr): Handle VOID_CST.
        * tree.c (cp_tree_equal): Likewise.
        (build_dummy_object, is_dummy_object, stabilize_expr): Use void_node
        instead of void_zero_node.
        * typeck.c (check_return_expr): Likewise.
        * typeck2.c (build_functional_cast): Likewise.


More information about the Gcc-bugs mailing list