https://gcc.gnu.org/bugzilla/show_bug.cgi?id=87086
Bug ID: 87086 Summary: [9 Regression] ICE in canonize from wide-int.cc when building SPEC2000 254.gap Product: gcc Version: unknown Status: UNCONFIRMED Keywords: ice-on-valid-code Severity: normal Priority: P3 Component: tree-optimization Assignee: unassigned at gcc dot gnu.org Reporter: ktkachov at gcc dot gnu.org CC: aldyh at gcc dot gnu.org Target Milestone: --- I'm getting an ICE when building gap from SPEC2000 on aarch64-none-linux-gnu. The reduced testcase is: int a, b; void fn1 () { b == 0 || a / b; } built with -O2 -fno-strict-overflow. Without -fno-strict-overflow it doesn't ICE. The benchmark ICEs in set_value_range, at tree-vrp.c:289 whereas the testcase segfaults with: 0xbf50e5 crash_signal $SRC/gcc/toplev.c:325 0xf6a482 canonize $SRC/gcc/wide-int.cc:96 0xf6ac38 wi::force_to_size(long*, long const*, unsigned int, unsigned int, unsigned int, signop) $SRC/gcc/wide-int.cc:386 0xefed1d wide_int_storage::from(generic_wide_int<wide_int_ref_storage<false, true> > const&, unsigned int, signop) $SRC/gcc/wide-int.h:1151 0xefed1d wide_int_to_tree_1 $SRC/gcc/tree.c:1494 0xeff697 wide_int_to_tree(tree_node*, poly_int<2u, generic_wide_int<wide_int_ref_storage<false, true> > > const&) $SRC/gcc/tree.c:1676 0xedefe0 extract_range_from_binary_expr_1(value_range*, tree_code, tree_node*, value_range*, value_range*) $SRC/gcc/tree-vrp.c:1675 0xedd9e2 extract_range_from_binary_expr_1(value_range*, tree_code, tree_node*, value_range*, value_range*) $SRC/gcc/tree-vrp.c:1373 0xf5d110 vr_values::extract_range_from_binary_expr(value_range*, tree_code, tree_node*, tree_node*, tree_node*) $SRC/gcc/vr-values.c:768 0xf6225d vr_values::extract_range_from_assignment(value_range*, gassign*) $SRC/gcc/vr-values.c:1432 0xf62438 vr_values::vrp_visit_assignment_or_call(gimple*, tree_node**, value_range*) $SRC/gcc/vr-values.c:2048 0xf624e5 vr_values::extract_range_from_stmt(gimple*, edge_def**, tree_node**, value_range*) $SRC/gcc/vr-values.c:2744 0x138d508 evrp_range_analyzer::record_ranges_from_stmt(gimple*, bool) $SRC/gcc/gimple-ssa-evrp-analyze.c:293 0x138b6bf evrp_dom_walker::before_dom_children(basic_block_def*) $SRC/gcc/gimple-ssa-evrp.c:139 0x1364517 dom_walker::walk(basic_block_def*) $SRC/gcc/domwalk.c:353 0x138c05c execute_early_vrp $SRC/gcc/gimple-ssa-evrp.c:310 0x138c05c execute $SRC/gcc/gimple-ssa-evrp.c:347 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. This appeared very recently, I believe it's one of the new range work.