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