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.

Reply via email to