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

--- Comment #3 from Martin Sebor <msebor at gcc dot gnu.org> ---
The code fails in the assert below where binfo is null.  The full stack trace
follows.  The difference is that before r12-1804  warn_for_null_address() would
return without doing anything because TREE_NO_WARNING(op) was 1.  r12-1804
changed the TREE_NO_WARNING(op) test to warning_suppressed_p (op,
OPT_Waddress)) which returns false.  The no-warning bit on OP is also clear so
something has caused it to not be set.  Possibly a subtle difference in the
location value.  Whatever has caused the change, it seems like the root cause
of the ICE is something else (unless the front end somehow relies on the
no-warning bit to also mean something else than just "disable warnings").

bool
perform_or_defer_access_check (tree binfo, tree decl, tree diag_decl,
                               tsubst_flags_t complain,
                               access_failure_info *afi)
{
  int i;
  deferred_access *ptr;
  deferred_access_check *chk;

  /* Exit if we are in a context that no access checking is performed.  */
  if (deferred_access_no_check)
    return true;

  gcc_assert (TREE_CODE (binfo) == TREE_BINFO);



0x1717bc8 crash_signal
        /ssd/src/gcc/master/gcc/toplev.c:328
0xdf00fb perform_or_defer_access_check(tree_node*, tree_node*, tree_node*, int,
access_failure_info*)
        /ssd/src/gcc/master/gcc/cp/semantics.c:490
0xdf6a7d finish_non_static_data_member(tree_node*, tree_node*, tree_node*)
        /ssd/src/gcc/master/gcc/cp/semantics.c:2208
0xda8762 tsubst_copy_and_build(tree_node*, tree_node*, int, tree_node*, bool,
bool)
        /ssd/src/gcc/master/gcc/cp/pt.c:20568
0xd5d6cc instantiate_non_dependent_expr_internal(tree_node*, int)
        /ssd/src/gcc/master/gcc/cp/pt.c:6323
0xad622f fold_non_dependent_expr_template
        /ssd/src/gcc/master/gcc/cp/constexpr.c:7604
0xad6585 fold_non_dependent_expr(tree_node*, int, bool, tree_node*)
        /ssd/src/gcc/master/gcc/cp/constexpr.c:7661
0xbda7c4 fold_for_warn(tree_node*)
        /ssd/src/gcc/master/gcc/cp/expr.c:409
0xe67e56 warn_for_null_address
        /ssd/src/gcc/master/gcc/cp/typeck.c:4453
0xe6a880 cp_build_binary_op(op_location_t const&, tree_code, tree_node*,
tree_node*, int)
        /ssd/src/gcc/master/gcc/cp/typeck.c:5169
0xe6b0ff cp_build_binary_op(op_location_t const&, tree_code, tree_node*,
tree_node*, int)
        /ssd/src/gcc/master/gcc/cp/typeck.c:5357
0xa59d4c build_new_op_1
        /ssd/src/gcc/master/gcc/cp/call.c:6760
0xa59e57 build_new_op(op_location_t const&, tree_code, int, tree_node*,
tree_node*, tree_node*, tree_node**, int)
        /ssd/src/gcc/master/gcc/cp/call.c:6806
0xe6774c build_x_binary_op(op_location_t const&, tree_code, tree_node*,
tree_code, tree_node*, tree_code, tree_node**, int)
        /ssd/src/gcc/master/gcc/cp/typeck.c:4330
0xcd6d2c cp_parser_binary_expression
        /ssd/src/gcc/master/gcc/cp/parser.c:10023
0xcd7229 cp_parser_assignment_expression
        /ssd/src/gcc/master/gcc/cp/parser.c:10163
0xcd7608 cp_parser_expression
        /ssd/src/gcc/master/gcc/cp/parser.c:10331
0xcdb75c cp_parser_expression_statement
        /ssd/src/gcc/master/gcc/cp/parser.c:12075
0xcdafe1 cp_parser_statement
        /ssd/src/gcc/master/gcc/cp/parser.c:11871
0xcdbd17 cp_parser_statement_seq_opt
        /ssd/src/gcc/master/gcc/cp/parser.c:12223

Reply via email to