https://gcc.gnu.org/bugzilla/show_bug.cgi?id=94216
Bug ID: 94216 Summary: [10 Regression] ICE in maybe_canonicalize_mem_ref_addr, at gimple-fold.c:4899 since r10-7237-g4e3d3e40726e1b68bf52fa205c68495124ea60b8 Product: gcc Version: 10.0 Status: UNCONFIRMED Keywords: ice-on-valid-code Severity: normal Priority: P3 Component: tree-optimization Assignee: unassigned at gcc dot gnu.org Reporter: marxin at gcc dot gnu.org CC: rguenth at gcc dot gnu.org Target Milestone: --- I see the following ICE isolated from ade package: $ cat /tmp/comm.ii template <int _Nm> struct A { typedef int _Type[_Nm]; }; template <int _Nm> struct B { typename A<_Nm>::_Type _M_elems; void operator[](int) { int a = *_M_elems; } }; class C { struct D { using type = int *; }; public: using pointer = D::type; }; class F { public: using pointer = C::pointer; F(pointer); }; struct G { int data; }; template <int MaxDimensions> struct H { using dimensions_t = B<MaxDimensions>; dimensions_t dimensions; G mem; }; template <int MaxDimensions, typename Allocator, typename DimT, typename AlignT> H<MaxDimensions> alloc_view(int, DimT, AlignT, Allocator) { H<MaxDimensions> b; b.dimensions[0]; return b; } namespace memory { template <typename> using DynMdView = H<6>; } class I { I(); memory::DynMdView<void> m_view; F m_memory; }; int c, d, e; I::I() : m_view(alloc_view<6>(c, d, e, [] {})), m_memory(&m_view.mem.data) {} $ ./xgcc -B. /tmp/comm.ii -c -g -O during IPA pass: inline /tmp/comm.ii: In constructor ‘I::I()’: /tmp/comm.ii:42:1: internal compiler error: in maybe_canonicalize_mem_ref_addr, at gimple-fold.c:4899 42 | I::I() : m_view(alloc_view<6>(c, d, e, [] {})), m_memory(&m_view.mem.data) {} | ^ 0xeae3c7 maybe_canonicalize_mem_ref_addr ../../gcc/gimple-fold.c:4899 0xeaedda fold_stmt_1 ../../gcc/gimple-fold.c:5046 0xeafb25 fold_stmt(gimple_stmt_iterator*) ../../gcc/gimple-fold.c:5307 0x1219414 fold_marked_statements ../../gcc/tree-inline.c:5341 0x12278f3 optimize_inline_calls(tree_node*) ../../gcc/tree-inline.c:5447 0x1b56403 inline_transform(cgraph_node*) ../../gcc/ipa-inline-transform.c:722 0x10c09ba execute_one_ipa_transform_pass ../../gcc/passes.c:2233 0x10c09ba execute_all_ipa_transforms(bool) ../../gcc/passes.c:2272 0xd24fcb cgraph_node::expand() ../../gcc/cgraphunit.c:2276 0xd2609f expand_all_functions ../../gcc/cgraphunit.c:2454 0xd2609f symbol_table::compile() ../../gcc/cgraphunit.c:2804 0xd2872c symbol_table::compile() ../../gcc/cgraphunit.c:2717 0xd2872c symbol_table::finalize_compilation_unit() ../../gcc/cgraphunit.c:2984 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.