https://gcc.gnu.org/bugzilla/show_bug.cgi?id=103769
Bug ID: 103769
Summary: ICE in hashtab_chk_error alias template and pack
expansion
Product: gcc
Version: 12.0
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: c++
Assignee: unassigned at gcc dot gnu.org
Reporter: ppalka at gcc dot gnu.org
Target Milestone: ---
$ cat testcase.C
template<int __v> struct integral_constant { static const int value = __v; };
template<bool, class> struct enable_if;
template<bool _Bp, class _Tp> using __enable_if_t = enable_if<_Bp, _Tp>;
template<class...> using void_t = void;
template<class... _Pred> void_t<__enable_if_t<_Pred::value, void>...> foo();
using type = decltype(foo<integral_constant<1>>());
$ cat testcase.C | g++ --param=hash-table-verification-limit=1000 -x c++ -
hash table checking failed: equal operator returns true for a pair of values
with a different hash value
<stdin>: In substitution of ‘template<class ...> using void_t = void [with
<template-parameter-1-1> = {__enable_if_t<_Pred::value, void>...}]’:
<stdin>:5:71: required by substitution of ‘template<class ... _Pred>
void_t<enable_if<_Pred::value, void>...> foo() [with _Pred =
{integral_constant<1>}]’
<stdin>:6:48: required from here
<stdin>:5:71: internal compiler error: in hashtab_chk_error, at
hash-table.c:137