https://gcc.gnu.org/bugzilla/show_bug.cgi?id=87997
Bug ID: 87997 Summary: [9 Regression] ICE in cp_var_mod_type_p at gcc/cp/cp-objcp-common.c:107 since r265870 Product: gcc Version: 9.0 Status: UNCONFIRMED Keywords: ice-on-valid-code Severity: normal Priority: P3 Component: lto Assignee: unassigned at gcc dot gnu.org Reporter: marxin at gcc dot gnu.org CC: marxin at gcc dot gnu.org Target Milestone: --- Following is causing ICE: $ cat free.ii template <typename, typename> struct a; template <template <typename> class b, typename c, typename f, typename... d> struct a<b<f, d...>, c> { using e = b<c>; }; template <typename f> class h { public: typedef f g; }; template <typename j, typename c> using k = typename a<j, c>::e; template <typename j> struct l { template <typename f> using m = k<j, f>; }; template <typename j> struct n { typedef typename j::g o; template <typename f> struct p { typedef typename l<j>::template m<f> other; }; }; template <typename f, typename j> struct F { typedef typename n<j>::template p<f>::other q; }; template <typename f, typename j = h<f>> class r { public: typename n<typename F<f, j>::q>::o operator[](long); f *t() noexcept; }; class s { void m_fn2(); r<int (s::*)()> u; }; void s::m_fn2() try { for (int i;;) (this->*u[i])(); } catch (...) { } $ g++ free.ii -c -flto during IPA pass: *free_lang_data free.ii:34:1: internal compiler error: Segmentation fault 34 | } | ^ 0xf1d2df crash_signal /home/marxin/Programming/gcc/gcc/toplev.c:325 0x7ffff6bc310f ??? /usr/src/debug/glibc-2.27-6.1.x86_64/signal/../sysdeps/unix/sysv/linux/x86_64/sigaction.c:0 0x8a4bff contains_struct_check(tree_node*, tree_node_structure_enum, char const*, int, char const*) /home/marxin/Programming/gcc/gcc/tree.h:3267 0x8a4bff cp_var_mod_type_p(tree_node*, tree_node*) /home/marxin/Programming/gcc/gcc/cp/cp-objcp-common.c:107 0x11bf97b variably_modified_type_p(tree_node*, tree_node*) /home/marxin/Programming/gcc/gcc/tree.c:9157 0x11bf95b variably_modified_type_p(tree_node*, tree_node*) /home/marxin/Programming/gcc/gcc/tree.c:9098 0x11bfcff variably_modified_type_p(tree_node*, tree_node*) /home/marxin/Programming/gcc/gcc/tree.c:9110 0x11c0bf1 verify_type(tree_node const*) /home/marxin/Programming/gcc/gcc/tree.c:13977 0x11c24bb free_lang_data_in_cgraph /home/marxin/Programming/gcc/gcc/tree.c:6052 0x11c24bb free_lang_data /home/marxin/Programming/gcc/gcc/tree.c:6083 0x11c24bb execute /home/marxin/Programming/gcc/gcc/tree.c:6145