https://gcc.gnu.org/bugzilla/show_bug.cgi?id=97560
Bug ID: 97560 Summary: [11 Regression] ICE: tree check: expected tree that contains 'decl common' structure, have 'component_ref' in tree_could_trap_p, at tree-eh.c:2708 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: --- g++-11.0.0-alpha20201018 snapshot (g:1e70b1a358b6ce3b894f284d88fbb90518d45cc0) ICEs when compiling the following testcase, reduced from test/libcxx/containers/sequences/list/list.cons/db_move.pass.cpp from the libcxx 10.0.1 test suite, w/ -O2 -fno-tree-forwprop -fnon-call-exceptions: template <typename> struct pv; template <typename CY> struct pv<CY &> { typedef CY g7; }; template <typename Q6> typename pv<Q6>::g7 hq (Q6 &&lb) { return static_cast<typename pv<Q6>::g7 &&> (lb); } struct fk { fk *j6; fk *od; }; fk *qi; struct xz : fk { xz (xz &&) { qi = this; if (j6) od = this; } }; struct el { struct { xz ls; } eu; }; struct be : el { }; be l1 = hq (l1); % g++-11.0.0 -O2 -fno-tree-forwprop -fnon-call-exceptions -c um06grxw.cpp during GIMPLE pass: evrp um06grxw.cpp: In function 'void __static_initialization_and_destruction_0(int, int)': um06grxw.cpp:41:16: internal compiler error: tree check: expected tree that contains 'decl common' structure, have 'component_ref' in tree_could_trap_p, at tree-eh.c:2708 41 | be l1 = hq (l1); | ^ 0x7e046c tree_contains_struct_check_failed(tree_node const*, tree_node_structure_enum, char const*, int, char const*) /var/tmp/portage/sys-devel/gcc-11.0.0_alpha20201018/work/gcc-11-20201018/gcc/tree.c:9903 0x785391 contains_struct_check(tree_node*, tree_node_structure_enum, char const*, int, char const*) /var/tmp/portage/sys-devel/gcc-11.0.0_alpha20201018/work/gcc-11-20201018/gcc/tree.h:3417 0x785391 tree_could_trap_p(tree_node*) /var/tmp/portage/sys-devel/gcc-11.0.0_alpha20201018/work/gcc-11-20201018/gcc/tree-eh.c:2708 0x1087624 stmt_could_throw_1_p /var/tmp/portage/sys-devel/gcc-11.0.0_alpha20201018/work/gcc-11-20201018/gcc/tree-eh.c:2868 0x1087624 stmt_could_throw_p(function*, gimple*) /var/tmp/portage/sys-devel/gcc-11.0.0_alpha20201018/work/gcc-11-20201018/gcc/tree-eh.c:2922 0x1089035 stmt_could_throw_p(function*, gimple*) /var/tmp/portage/sys-devel/gcc-11.0.0_alpha20201018/work/gcc-11-20201018/gcc/tree-eh.c:2894 0x1089035 stmt_can_throw_internal(function*, gimple*) /var/tmp/portage/sys-devel/gcc-11.0.0_alpha20201018/work/gcc-11-20201018/gcc/tree-eh.c:2996 0x12ca68a infer_value_range(gimple*, tree_node*, tree_code*, tree_node**) /var/tmp/portage/sys-devel/gcc-11.0.0_alpha20201018/work/gcc-11-20201018/gcc/tree-vrp.c:1331 0x1b1d42f non_null_ref::process_name(tree_node*) /var/tmp/portage/sys-devel/gcc-11.0.0_alpha20201018/work/gcc-11-20201018/gcc/gimple-range-cache.cc:102 0x1b1d544 non_null_ref::non_null_deref_p(tree_node*, basic_block_def*) /var/tmp/portage/sys-devel/gcc-11.0.0_alpha20201018/work/gcc-11-20201018/gcc/gimple-range-cache.cc:60 0x1b1d544 non_null_ref::non_null_deref_p(tree_node*, basic_block_def*) /var/tmp/portage/sys-devel/gcc-11.0.0_alpha20201018/work/gcc-11-20201018/gcc/gimple-range-cache.cc:53 0x1b1eda9 ranger_cache::ssa_range_in_bb(irange&, tree_node*, basic_block_def*) /var/tmp/portage/sys-devel/gcc-11.0.0_alpha20201018/work/gcc-11-20201018/gcc/gimple-range-cache.cc:555 0x1b1f0cd ranger_cache::iterative_cache_update(tree_node*) /var/tmp/portage/sys-devel/gcc-11.0.0_alpha20201018/work/gcc-11-20201018/gcc/gimple-range-cache.cc:638 0x1b1f5f2 ranger_cache::fill_block_cache(tree_node*, basic_block_def*, basic_block_def*) /var/tmp/portage/sys-devel/gcc-11.0.0_alpha20201018/work/gcc-11-20201018/gcc/gimple-range-cache.cc:808 0x1b1fda6 ranger_cache::block_range(irange&, basic_block_def*, tree_node*, bool) /var/tmp/portage/sys-devel/gcc-11.0.0_alpha20201018/work/gcc-11-20201018/gcc/gimple-range-cache.cc:589 0x1b18784 gimple_ranger::range_on_entry(irange&, basic_block_def*, tree_node*) /var/tmp/portage/sys-devel/gcc-11.0.0_alpha20201018/work/gcc-11-20201018/gcc/gimple-range.cc:909 0x1b18eeb gimple_ranger::range_of_expr(irange&, tree_node*, gimple*) /var/tmp/portage/sys-devel/gcc-11.0.0_alpha20201018/work/gcc-11-20201018/gcc/gimple-range.cc:880 0x130cb4d range_query::value_of_expr(tree_node*, gimple*) /var/tmp/portage/sys-devel/gcc-11.0.0_alpha20201018/work/gcc-11-20201018/gcc/value-query.cc:85 0x19b4831 hybrid_folder::value_of_expr(tree_node*, gimple*) /var/tmp/portage/sys-devel/gcc-11.0.0_alpha20201018/work/gcc-11-20201018/gcc/gimple-ssa-evrp.c:235 0x11c0594 substitute_and_fold_engine::replace_uses_in(gimple*) /var/tmp/portage/sys-devel/gcc-11.0.0_alpha20201018/work/gcc-11-20201018/gcc/tree-ssa-propagate.c:871