https://gcc.gnu.org/bugzilla/show_bug.cgi?id=88274
Bug ID: 88274 Summary: ICE in check, at tree-vrp.c:188 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: asolokha at gmx dot com Target Milestone: --- Target: powerpc-*-linux-gnu, powerpcspe-*-linux-gnu g++-9.0.0-alpha20181125 snapshot (r266441) ICEs when compiling gcc/testsuite/gcc.target/i386/loop-2.c at any optimization level except -Og and w/ -fstrict-enums: % powerpc-e300c3-linux-gnu-g++-9.0.0-alpha20181125 -O1 -fstrict-enums -c gcc/testsuite/gcc.target/i386/loop-2.c during GIMPLE pass: printf-return-value gcc/testsuite/gcc.target/i386/loop-2.c: In function 'int main()': gcc/testsuite/gcc.target/i386/loop-2.c:37:5: internal compiler error: in check, at tree-vrp.c:188 37 | int main(void) | ^~~~ 0x11f085d value_range_base::check() /var/tmp/portage/cross-powerpc-e300c3-linux-gnu/gcc-9.0.0_alpha20181125/work/gcc-9-20181125/gcc/tree-vrp.c:188 0x11f13d0 value_range::set(value_range_kind, tree_node*, tree_node*, bitmap_head*) /var/tmp/portage/cross-powerpc-e300c3-linux-gnu/gcc-9.0.0_alpha20181125/work/gcc-9-20181125/gcc/tree-vrp.c:113 0x11f1704 ranges_from_anti_range /var/tmp/portage/cross-powerpc-e300c3-linux-gnu/gcc-9.0.0_alpha20181125/work/gcc-9-20181125/gcc/tree-vrp.c:1257 0x11f8195 extract_range_from_binary_expr(value_range_base*, tree_code, tree_node*, value_range_base const*, value_range_base const*) /var/tmp/portage/cross-powerpc-e300c3-linux-gnu/gcc-9.0.0_alpha20181125/work/gcc-9-20181125/gcc/tree-vrp.c:1596 0x12677c5 vr_values::extract_range_from_binary_expr(value_range*, tree_code, tree_node*, tree_node*, tree_node*) /var/tmp/portage/cross-powerpc-e300c3-linux-gnu/gcc-9.0.0_alpha20181125/work/gcc-9-20181125/gcc/vr-values.c:721 0x1269b4e vr_values::extract_range_from_assignment(value_range*, gassign*) /var/tmp/portage/cross-powerpc-e300c3-linux-gnu/gcc-9.0.0_alpha20181125/work/gcc-9-20181125/gcc/vr-values.c:1375 0x164e7e2 evrp_range_analyzer::record_ranges_from_stmt(gimple*, bool) /var/tmp/portage/cross-powerpc-e300c3-linux-gnu/gcc-9.0.0_alpha20181125/work/gcc-9-20181125/gcc/gimple-ssa-evrp-analyze.c:293 0x1670335 before_dom_children /var/tmp/portage/cross-powerpc-e300c3-linux-gnu/gcc-9.0.0_alpha20181125/work/gcc-9-20181125/gcc/gimple-ssa-sprintf.c:4162 0x162f1a7 dom_walker::walk(basic_block_def*) /var/tmp/portage/cross-powerpc-e300c3-linux-gnu/gcc-9.0.0_alpha20181125/work/gcc-9-20181125/gcc/domwalk.c:353 0x166b002 execute /var/tmp/portage/cross-powerpc-e300c3-linux-gnu/gcc-9.0.0_alpha20181125/work/gcc-9-20181125/gcc/gimple-ssa-sprintf.c:4190 While g++ for 32-bit BE targets ICEs reliably on this testcase in my setup, I cannot reproduce it for x86_64, even w/ -m32.