https://gcc.gnu.org/bugzilla/show_bug.cgi?id=64521
Bug ID: 64521
Summary: [4.9/5 Regression] ICE with -frepo
Product: gcc
Version: 5.0
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: c++
Assignee: unassigned at gcc dot gnu.org
Reporter: jakub at gcc dot gnu.org
CC: jason at gcc dot gnu.org
template <typename H> struct J { J(H); };
template <unsigned long, typename...> struct K;
template <unsigned long I> struct K<I> {};
template <unsigned long I, typename H, typename... T>
struct K<I, H, T...> : K<I + 1, T...>, J<H> {
K(const H &p1, const T &... p2) : K<I + 1, T...>(p2...), J<H>(p1) {}
};
template <typename... E> struct C : K<0, E...> {
C(const E &... p1) : K<0, E...>(p1...) {}
};
template <typename> struct A {
A() = default;
};
struct M;
template <typename> struct L {
struct B {
template <typename> static M *__test(...);
typedef A<int> _Del;
typedef decltype(__test<_Del>()) type;
};
C<typename B::type, A<M>> _M_t;
L(typename B::type) : _M_t(0, A<M>()) {}
};
struct M {};
void foo() { L<int>(new M); }
ICEs starting with r206182 with -frepo -std=c++11. Doesn't ICE without -frepo
or with r206181 or earlier.