https://gcc.gnu.org/bugzilla/show_bug.cgi?id=107985
Bug ID: 107985 Summary: [13 Regression] ICE in as_a, at value-range.h:393 Product: gcc Version: 13.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 13.0.0 20221204 snapshot (g:24b9337d1f1b5197b6498dceb9074319be003449) ICEs when compiling the following testcase, reduced from test/Analysis/pointer-to-member.cpp from the clang 15 test suite, w/ -O1 -ftree-vrp -fno-tree-ccp -fno-tree-forwprop -fno-tree-fre: struct B { int f; }; struct D : public B { }; void foo() { D d; d.f = 7; int B::* pfb = &B::f; int D::* pfd = pfb; int v = d.*pfd; } % g++-13 -O1 -ftree-vrp -fno-tree-ccp -fno-tree-forwprop -fno-tree-fre -c bq32p5di.cpp during GIMPLE pass: evrp bq32p5di.cpp: In function 'void foo()': bq32p5di.cpp:15:1: internal compiler error: in as_a, at value-range.h:393 15 | } | ^ 0x92a7d7 irange const& as_a<irange>(vrange const&) /var/tmp/portage/sys-devel/gcc-13.0.0_p20221204/work/gcc-13-20221204/gcc/value-range.h:393 0x92ac0c irange const& as_a<irange>(vrange const&) /var/tmp/portage/sys-devel/gcc-13.0.0_p20221204/work/gcc-13-20221204/gcc/range-op.cc:4502 0x92ac0c range_op_handler::fold_range(vrange&, tree_node*, vrange const&, vrange const&, relation_trio) const /var/tmp/portage/sys-devel/gcc-13.0.0_p20221204/work/gcc-13-20221204/gcc/range-op.cc:4504 0x2009e48 fold_using_range::range_of_range_op(vrange&, gimple_range_op_handler&, fur_source&) /var/tmp/portage/sys-devel/gcc-13.0.0_p20221204/work/gcc-13-20221204/gcc/gimple-range-fold.cc:565 0x200aba2 fold_using_range::fold_stmt(vrange&, gimple*, fur_source&, tree_node*) /var/tmp/portage/sys-devel/gcc-13.0.0_p20221204/work/gcc-13-20221204/gcc/gimple-range-fold.cc:489 0x1ffab24 gimple_ranger::update_stmt(gimple*) /var/tmp/portage/sys-devel/gcc-13.0.0_p20221204/work/gcc-13-20221204/gcc/gimple-range.cc:550 0x1377644 update_stmt_operands(function*, gimple*) /var/tmp/portage/sys-devel/gcc-13.0.0_p20221204/work/gcc-13-20221204/gcc/tree-ssa-operands.cc:1150 0x1396aee update_stmt_if_modified /var/tmp/portage/sys-devel/gcc-13.0.0_p20221204/work/gcc-13-20221204/gcc/gimple-ssa.h:185 0x1396aee update_stmt_if_modified /var/tmp/portage/sys-devel/gcc-13.0.0_p20221204/work/gcc-13-20221204/gcc/gimple-ssa.h:182 0x1396aee substitute_and_fold_dom_walker::before_dom_children(basic_block_def*) /var/tmp/portage/sys-devel/gcc-13.0.0_p20221204/work/gcc-13-20221204/gcc/tree-ssa-propagate.cc:935 0x1fc734e dom_walker::walk(basic_block_def*) /var/tmp/portage/sys-devel/gcc-13.0.0_p20221204/work/gcc-13-20221204/gcc/domwalk.cc:311 0x139576e substitute_and_fold_engine::substitute_and_fold(basic_block_def*) /var/tmp/portage/sys-devel/gcc-13.0.0_p20221204/work/gcc-13-20221204/gcc/tree-ssa-propagate.cc:998 0x149fc57 execute_ranger_vrp(function*, bool, bool) /var/tmp/portage/sys-devel/gcc-13.0.0_p20221204/work/gcc-13-20221204/gcc/tree-vrp.cc:1084