https://gcc.gnu.org/bugzilla/show_bug.cgi?id=96967
Bug ID: 96967 Summary: [11 Regression] ICE in decompose, at wide-int.h:984 Product: gcc Version: 11.0 Status: UNCONFIRMED Keywords: ice-on-valid-code Severity: normal Priority: P3 Component: tree-optimization Assignee: unassigned at gcc dot gnu.org Reporter: asolokha at gmx dot com Target Milestone: --- gcc-11.0.0-alpha20200906 snapshot (g:23f8b90c401842afcbaa50a7fd3c2f37818f4396) ICEs when compiling the following testcase w/ -O2 -fshort-enums: enum re { o3, }; int uj (int mq, enum re dn) { enum re nr = mq; switch (nr) { case 4: if (dn == 0) goto wdev_inactive_unlock; break; default: break; } switch (nr) { case 0: case 4: return 0; default: break; } wdev_inactive_unlock: return 1; } % gcc-11.0.0 -O2 -fshort-enums -c cvihn9ij.c during GIMPLE pass: vrp cvihn9ij.c: In function 'uj': cvihn9ij.c:6:1: internal compiler error: in decompose, at wide-int.h:984 6 | uj (int mq, enum re dn) | ^~ 0x70e4c0 wi::int_traits<generic_wide_int<wide_int_ref_storage<false, false> > >::decompose(long*, unsigned int, generic_wide_int<wide_int_ref_storage<false, false> > const&) /var/tmp/portage/sys-devel/gcc-11.0.0_alpha20200906/work/gcc-11-20200906/gcc/wide-int.h:984 0x1070b85 wi::int_traits<generic_wide_int<wide_int_ref_storage<false, false> > >::decompose(long*, unsigned int, generic_wide_int<wide_int_ref_storage<false, false> > const&) /var/tmp/portage/sys-devel/gcc-11.0.0_alpha20200906/work/gcc-11-20200906/gcc/wide-int.h:1931 0x1070b85 wide_int_ref_storage<false, false>::wide_int_ref_storage<generic_wide_int<wide_int_ref_storage<false, false> > >(generic_wide_int<wide_int_ref_storage<false, false> > const&, unsigned int) /var/tmp/portage/sys-devel/gcc-11.0.0_alpha20200906/work/gcc-11-20200906/gcc/wide-int.h:1034 0x1070b85 generic_wide_int<wide_int_ref_storage<false, false> >::generic_wide_int<generic_wide_int<wide_int_ref_storage<false, false> > >(generic_wide_int<wide_int_ref_storage<false, false> > const&, unsigned int) /var/tmp/portage/sys-devel/gcc-11.0.0_alpha20200906/work/gcc-11-20200906/gcc/wide-int.h:790 0x1070b85 bool wi::ltu_p<generic_wide_int<wide_int_ref_storage<false, false> >, generic_wide_int<wide_int_ref_storage<false, false> > >(generic_wide_int<wide_int_ref_storage<false, false> > const&, generic_wide_int<wide_int_ref_storage<false, false> > const&) /var/tmp/portage/sys-devel/gcc-11.0.0_alpha20200906/work/gcc-11-20200906/gcc/wide-int.h:1935 0x106ed94 bool wi::lt_p<generic_wide_int<wide_int_ref_storage<false, false> >, generic_wide_int<wide_int_ref_storage<false, false> > >(generic_wide_int<wide_int_ref_storage<false, false> > const&, generic_wide_int<wide_int_ref_storage<false, false> > const&, signop) /var/tmp/portage/sys-devel/gcc-11.0.0_alpha20200906/work/gcc-11-20200906/gcc/wide-int.h:1961 0x106ed94 irange::irange_intersect(irange const&) /var/tmp/portage/sys-devel/gcc-11.0.0_alpha20200906/work/gcc-11-20200906/gcc/value-range.cc:1701 0x106f049 irange::intersect(irange const*) /var/tmp/portage/sys-devel/gcc-11.0.0_alpha20200906/work/gcc-11-20200906/gcc/value-range.cc:1539 0x1029e02 find_case_label_range(gswitch*, irange const*) /var/tmp/portage/sys-devel/gcc-11.0.0_alpha20200906/work/gcc-11-20200906/gcc/tree-vrp.c:3831 0xf88a63 simplify_control_stmt_condition /var/tmp/portage/sys-devel/gcc-11.0.0_alpha20200906/work/gcc-11-20200906/gcc/tree-ssa-threadedge.c:554 0xf89840 thread_through_normal_block /var/tmp/portage/sys-devel/gcc-11.0.0_alpha20200906/work/gcc-11-20200906/gcc/tree-ssa-threadedge.c:1101 0xf8b50d thread_through_normal_block /var/tmp/portage/sys-devel/gcc-11.0.0_alpha20200906/work/gcc-11-20200906/gcc/tree-ssa-threadedge.c:1302 0xf8b50d thread_across_edge /var/tmp/portage/sys-devel/gcc-11.0.0_alpha20200906/work/gcc-11-20200906/gcc/tree-ssa-threadedge.c:1259 0xf8b7cf thread_outgoing_edges(basic_block_def*, gcond*, const_and_copies*, avail_exprs_stack*, evrp_range_analyzer*, tree_node* (*)(gimple*, gimple*, avail_exprs_stack*, basic_block_def*)) /var/tmp/portage/sys-devel/gcc-11.0.0_alpha20200906/work/gcc-11-20200906/gcc/tree-ssa-threadedge.c:1463 0x1024748 vrp_dom_walker::after_dom_children(basic_block_def*) /var/tmp/portage/sys-devel/gcc-11.0.0_alpha20200906/work/gcc-11-20200906/gcc/tree-vrp.c:4286 0x16d8687 dom_walker::walk(basic_block_def*) /var/tmp/portage/sys-devel/gcc-11.0.0_alpha20200906/work/gcc-11-20200906/gcc/domwalk.c:352 0x10337f1 identify_jump_threads /var/tmp/portage/sys-devel/gcc-11.0.0_alpha20200906/work/gcc-11-20200906/gcc/tree-vrp.c:4341 0x10337f1 execute_vrp /var/tmp/portage/sys-devel/gcc-11.0.0_alpha20200906/work/gcc-11-20200906/gcc/tree-vrp.c:4480