https://gcc.gnu.org/bugzilla/show_bug.cgi?id=88427
Bug ID: 88427 Summary: [9 Regression] ICE: tree check: expected integer_cst, have plus_expr in get_len, at tree.h:5617 Product: gcc Version: 9.0 Status: UNCONFIRMED Keywords: ice-on-invalid-code Severity: normal Priority: P3 Component: tree-optimization Assignee: unassigned at gcc dot gnu.org Reporter: asolokha at gmx dot com Target Milestone: --- gcc-9.0.0-alpha20181202 snapshot (r266729) ICEs when compiling the following snippet w/ -O2 (-O3, -Ofast, -Os) -fno-tree-dce -fno-tree-fre: void uj (int eq, int s4) { short int tm = 0; for (;;) if (eq == s4) { tm += !!s4; if (tm == s4) { eq += tm; for (;;) eq /= 0; } } } % gcc-9.0.0-alpha20181202 -O2 -fno-tree-dce -fno-tree-fre -w -c dr2mx6y0.c during GIMPLE pass: vrp dr2mx6y0.c: In function 'uj': dr2mx6y0.c:2:1: internal compiler error: tree check: expected integer_cst, have plus_expr in get_len, at tree.h:5617 2 | uj (int eq, int s4) | ^~ 0x6dd3f7 tree_check_failed(tree_node const*, char const*, int, char const*, ...) /var/tmp/portage/sys-devel/gcc-9.0.0_alpha20181202/work/gcc-9-20181202/gcc/tree.c:9757 0x7db2b9 tree_check(tree_node const*, char const*, int, char const*, tree_code) /var/tmp/portage/sys-devel/gcc-9.0.0_alpha20181202/work/gcc-9-20181202/gcc/tree.h:3410 0x7db2b9 wi::extended_tree<192>::get_len() const /var/tmp/portage/sys-devel/gcc-9.0.0_alpha20181202/work/gcc-9-20181202/gcc/tree.h:5617 0x7db2b9 wi::int_traits<generic_wide_int<wi::extended_tree<192> > >::decompose(long*, unsigned int, generic_wide_int<wi::extended_tree<192> > const&) /var/tmp/portage/sys-devel/gcc-9.0.0_alpha20181202/work/gcc-9-20181202/gcc/wide-int.h:964 0x7db2b9 wide_int_ref_storage<true, false>::wide_int_ref_storage<generic_wide_int<wi::extended_tree<192> > >(generic_wide_int<wi::extended_tree<192> > const&, unsigned int) /var/tmp/portage/sys-devel/gcc-9.0.0_alpha20181202/work/gcc-9-20181202/gcc/wide-int.h:1013 0x7db2b9 generic_wide_int<wide_int_ref_storage<true, false> >::generic_wide_int<generic_wide_int<wi::extended_tree<192> > >(generic_wide_int<wi::extended_tree<192> > const&, unsigned int) /var/tmp/portage/sys-devel/gcc-9.0.0_alpha20181202/work/gcc-9-20181202/gcc/wide-int.h:788 0x7db2b9 bool wi::lts_p<generic_wide_int<wi::extended_tree<192> >, generic_wide_int<wi::extended_tree<192> > >(generic_wide_int<wi::extended_tree<192> > const&, generic_wide_int<wi::extended_tree<192> > const&) /var/tmp/portage/sys-devel/gcc-9.0.0_alpha20181202/work/gcc-9-20181202/gcc/wide-int.h:1879 0x7db2b9 wi::binary_traits<generic_wide_int<wi::extended_tree<192> >, generic_wide_int<wi::extended_tree<192> >, wi::int_traits<generic_wide_int<wi::extended_tree<192> > >::precision_type, wi::int_traits<generic_wide_int<wi::extended_tree<192> > >::precision_type>::signed_predicate_result operator< <generic_wide_int<wi::extended_tree<192> >, generic_wide_int<wi::extended_tree<192> > >(generic_wide_int<wi::extended_tree<192> > const&, generic_wide_int<wi::extended_tree<192> > const&) /var/tmp/portage/sys-devel/gcc-9.0.0_alpha20181202/work/gcc-9-20181202/gcc/wide-int.h:3227 0x7db2b9 tree_int_cst_lt(tree_node const*, tree_node const*) /var/tmp/portage/sys-devel/gcc-9.0.0_alpha20181202/work/gcc-9-20181202/gcc/tree.h:5773 0xffcd56 vr_values::extract_range_from_phi_node(gphi*, value_range*) /var/tmp/portage/sys-devel/gcc-9.0.0_alpha20181202/work/gcc-9-20181202/gcc/vr-values.c:2870 0xf7e23b vrp_prop::extract_range_from_phi_node(gphi*, value_range*) /var/tmp/portage/sys-devel/gcc-9.0.0_alpha20181202/work/gcc-9-20181202/gcc/tree-vrp.c:4303 0xf7e23b vrp_prop::visit_phi(gphi*) /var/tmp/portage/sys-devel/gcc-9.0.0_alpha20181202/work/gcc-9-20181202/gcc/tree-vrp.c:6186 0xe92548 ssa_propagation_engine::simulate_stmt(gimple*) /var/tmp/portage/sys-devel/gcc-9.0.0_alpha20181202/work/gcc-9-20181202/gcc/tree-ssa-propagate.c:226 0xe93b1d ssa_propagation_engine::ssa_propagate() /var/tmp/portage/sys-devel/gcc-9.0.0_alpha20181202/work/gcc-9-20181202/gcc/tree-ssa-propagate.c:813 0xf8f58a execute_vrp /var/tmp/portage/sys-devel/gcc-9.0.0_alpha20181202/work/gcc-9-20181202/gcc/tree-vrp.c:6718