[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Bug#845493: g++-6: Internal compiler error in tsubst, at cp/pt.c:13073



Package: g++-6
Version: 6.2.0-13
Severity: minor

While developing a custom implementation of std::make_index_sequence
for compatibility with previous versions of gcc, I ran into an
internal compiler error.  I'm attaching the output of creduce on the
source code, which still gives the same ICE.

-- System Information:
Debian Release: stretch/sid
  APT prefers testing
  APT policy: (500, 'testing')
Architecture: amd64 (x86_64)
Foreign Architectures: i386

Kernel: Linux 4.8.0-1-amd64 (SMP w/8 CPU cores)
Locale: LANG=en_US.UTF-8, LC_CTYPE=en_US.UTF-8 (charmap=UTF-8)
Shell: /bin/sh linked to /bin/dash
Init: systemd (via /run/systemd/system)

Versions of packages g++-6 depends on:
ii  gcc-6            6.2.0-13
ii  gcc-6-base       6.2.0-13
ii  libc6            2.24-5
ii  libgmp10         2:6.1.1+dfsg-1
ii  libisl15         0.17.1-1
ii  libmpc3          1.0.3-1
ii  libmpfr4         3.1.5-1
ii  libstdc++-6-dev  6.2.0-13
ii  zlib1g           1:1.2.8.dfsg-2+b3

g++-6 recommends no packages.

Versions of packages g++-6 suggests:
pn  g++-6-multilib    <none>
pn  gcc-6-doc         <none>
pn  libstdc++6-6-dbg  <none>

-- no debconf information
typedef long unsigned a;
template <bool, typename> struct b;
template <typename p> struct b<true, p> { typedef p c; };
template <bool d, typename p = void> using e = typename b<d, p>::c;
template <typename f, f...> struct g;
template <typename> struct h;
template <typename f, f... i> struct h<g<f, i...>> { using c = g<f, i...>; };
template <typename> struct j;
template <typename f, f... i> struct j<g<f, i...>> {
  using c = g<f, sizeof...(i)>;
};
template <typename f, f, typename = void> struct k;
template <typename f, f l> struct k<f, l, e<l == 0>> { using c = g<f>; };
template <typename f, f l> struct k<f, l, e<l && l % 2 == 0>> {
  using c = typename h<typename k<f, l / 2>::c>::c;
};
template <typename f, f l> struct k<f, l, e<l % 2>> {
  using c = typename j<typename k<f, l / 2>::c>::c;
};
template <typename f, f l> using m = typename k<f, l>::c;
template <typename> template <a... i> using n = g<unsigned long, i...>;
template <long l> using o = m<unsigned long, l>;
template <a i> void increasing(n<i>) {
  increasing(o<10>{});
}

Reply to: