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

Reply via email to