https://gcc.gnu.org/bugzilla/show_bug.cgi?id=92373
Bug ID: 92373 Summary: [10 Regression] ICE get_initializer_for at gcc/tree.c:13553 since r277728 Product: gcc Version: 10.0 Status: UNCONFIRMED Keywords: ice-on-valid-code Severity: normal Priority: P3 Component: tree-optimization Assignee: unassigned at gcc dot gnu.org Reporter: marxin at gcc dot gnu.org CC: msebor at gcc dot gnu.org Target Milestone: --- Following is cause ICE: $ cat ice2.i struct container { char data[1]; }; char a[6] = {}; int b; int main() { struct container *p = (char*)a; b = p->data[4]; return 0; } $ gcc ice2.i -c -O2 -Warray-bounds ice2.i: In function ‘main’: ice2.i:9:25: warning: initialization of ‘struct container *’ from incompatible pointer type ‘char *’ [-Wincompatible-pointer-types] 9 | struct container *p = (char*)a; | ^ during GIMPLE pass: vrp ice2.i:8:5: internal compiler error: tree check: expected constructor, have string_cst in get_initializer_for, at tree.c:13553 8 | int main() { | ^~~~ 0x73ad2a tree_check_failed(tree_node const*, char const*, int, char const*, ...) /home/marxin/Programming/gcc/gcc/tree.c:9672 0x7429bc tree_check(tree_node*, char const*, int, char const*, tree_code) /home/marxin/Programming/gcc/gcc/tree.h:3267 0x7429bc get_initializer_for /home/marxin/Programming/gcc/gcc/tree.c:13553 0x10922dd component_ref_size(tree_node*, bool*) /home/marxin/Programming/gcc/gcc/tree.c:13663 0x106380c vrp_prop::check_array_ref(unsigned int, tree_node*, bool) /home/marxin/Programming/gcc/gcc/tree-vrp.c:4189 0x1066017 vrp_prop::check_array_ref(unsigned int, tree_node*, bool) /home/marxin/Programming/gcc/gcc/tree-vrp.c:4151 0x1066017 check_array_bounds /home/marxin/Programming/gcc/gcc/tree-vrp.c:4702 0x109bcc3 walk_tree_1(tree_node**, tree_node* (*)(tree_node**, int*, void*), void*, hash_set<tree_node*, false, default_hash_traits<tree_node*> >*, tree_node* (*)(tree_node**, int*, tree_node* (*)(tree_node**, int*, void*), void*, hash_set<tree_node*, false, default_hash_traits<tree_node*> >*)) /home/marxin/Programming/gcc/gcc/tree.c:11942 0xb1650d walk_gimple_op(gimple*, tree_node* (*)(tree_node**, int*, void*), walk_stmt_info*) /home/marxin/Programming/gcc/gcc/gimple-walk.c:202 0x105d360 check_array_bounds_dom_walker::before_dom_children(basic_block_def*) /home/marxin/Programming/gcc/gcc/tree-vrp.c:4760 0x1629717 dom_walker::walk(basic_block_def*) /home/marxin/Programming/gcc/gcc/domwalk.c:309 0x10614fe vrp_prop::check_all_array_refs() /home/marxin/Programming/gcc/gcc/tree-vrp.c:4777 0x1068216 vrp_prop::vrp_finalize(bool) /home/marxin/Programming/gcc/gcc/tree-vrp.c:6803 0x106f2fc execute_vrp /home/marxin/Programming/gcc/gcc/tree-vrp.c:6871 Please submit a full bug report, with preprocessed source if appropriate. Please include the complete backtrace with any bug report.