https://gcc.gnu.org/bugzilla/show_bug.cgi?id=86741
Bug ID: 86741 Summary: [9 Regression] ICE in vrp_prop::check_mem_ref building glibc for i686-gnu Product: gcc Version: 9.0 Status: UNCONFIRMED Keywords: ice-on-valid-code Severity: normal Priority: P3 Component: tree-optimization Assignee: unassigned at gcc dot gnu.org Reporter: jsm28 at gcc dot gnu.org CC: msebor at gcc dot gnu.org Target Milestone: --- Created attachment 44468 --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=44468&action=edit Preprocessed source from building glibc The following ICE was introduced by r262893. r262893 | msebor | 2018-07-19 23:36:34 +0000 (Thu, 19 Jul 2018) | 20 lines PR tree-optimization/84047 PR tree-optimization/83776 * tree-vrp.c (vrp_prop::check_mem_ref): New function. (check_array_bounds): Call it. It appears building glibc for i686-gnu, but can also be reproduced using the same .i file with an x86_64-linux-gnu compiler with -m32. Compile the attached .i file (for i686-gnu / i686-pc-linux-gnu / x86_64-linux-gnu -m32) with -O2 -Warray-bounds (or -O2 -Wall). during GIMPLE pass: vrp ../sysdeps/mach/hurd/i386/init-first.c: In function 'init1': ../sysdeps/mach/hurd/i386/init-first.c:97:1: internal compiler error: Segmentation fault 0xc11d2f crash_signal /scratch/jmyers/glibc/many9/src/gcc/gcc/toplev.c:325 0x77c1b7 contains_struct_check(tree_node const*, tree_node_structure_enum, char const*, int, char const*) /scratch/jmyers/glibc/many9/src/gcc/gcc/tree.h:3483 0x77c1b7 wi::extended_tree<128>::extended_tree(tree_node const*) /scratch/jmyers/glibc/many9/src/gcc/gcc/tree.h:5535 0xed25aa generic_wide_int<wi::extended_tree<128> >::generic_wide_int<tree_node const*>(tree_node const* const&) /scratch/jmyers/glibc/many9/src/gcc/gcc/wide-int.h:780 0xed25aa wi::to_offset(tree_node const*) /scratch/jmyers/glibc/many9/src/gcc/gcc/tree.h:5487 0xed25aa vrp_prop::check_mem_ref(unsigned int, tree_node*, bool) /scratch/jmyers/glibc/many9/src/gcc/gcc/tree-vrp.c:5097 0xed3281 check_array_bounds /scratch/jmyers/glibc/many9/src/gcc/gcc/tree-vrp.c:5267 0xf00932 walk_tree_1(tree_node**, tree_node* (*)(tree_node**, int*, void*), void*, hash_set<tree_node*, default_hash_traits<tree_node*> >*, tree_node* (*)(tree_node**, int*, tree_node* (*)(tree_node**, int*, void*), void*, hash_set<tree_node*, default_hash_traits<tree_node*> >*)) /scratch/jmyers/glibc/many9/src/gcc/gcc/tree.c:11485 0xf00ea6 walk_tree_1(tree_node**, tree_node* (*)(tree_node**, int*, void*), void*, hash_set<tree_node*, default_hash_traits<tree_node*> >*, tree_node* (*)(tree_node**, int*, tree_node* (*)(tree_node**, int*, void*), void*, hash_set<tree_node*, default_hash_traits<tree_node*> >*)) /scratch/jmyers/glibc/many9/src/gcc/gcc/tree.c:11803 0x95dfe0 walk_gimple_op(gimple*, tree_node* (*)(tree_node**, int*, void*), walk_stmt_info*) /scratch/jmyers/glibc/many9/src/gcc/gcc/gimple-walk.c:203 0xebbedc check_array_bounds_dom_walker::before_dom_children(basic_block_def*) /scratch/jmyers/glibc/many9/src/gcc/gcc/tree-vrp.c:5320 0x138b77a dom_walker::walk(basic_block_def*) /scratch/jmyers/glibc/many9/src/gcc/gcc/domwalk.c:353 0xec04bc vrp_prop::check_all_array_refs() /scratch/jmyers/glibc/many9/src/gcc/gcc/tree-vrp.c:5337 0xec2f59 vrp_prop::vrp_finalize(bool) /scratch/jmyers/glibc/many9/src/gcc/gcc/tree-vrp.c:7113 0xed3c71 execute_vrp /scratch/jmyers/glibc/many9/src/gcc/gcc/tree-vrp.c:7186 Please submit a full bug report, with preprocessed source if appropriate. Please include the complete backtrace with any bug report. See <https://gcc.gnu.org/bugs/> for instructions.