[Bug c++/85668] New: ICE with substitution failure
miguel.ojeda.sandonis at gmail dot com
gcc-bugzilla@gcc.gnu.org
Sun May 6 11:59:00 GMT 2018
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=85668
Bug ID: 85668
Summary: ICE with substitution failure
Product: gcc
Version: 8.1.0
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: c++
Assignee: unassigned at gcc dot gnu.org
Reporter: miguel.ojeda.sandonis at gmail dot com
Target Milestone: ---
The following input causes an ICE starting with GCC 4.9 until trunk, on
-std=c++{14,17,2a}.
template <int>
using V = void;
template <typename F, typename T>
auto f1(F f, T v) -> decltype(f(v))
{
}
void f2(int p)
{
f1([](auto x) -> V<decltype(x)::y(p)> {}, 0);
}
GCC trunk reports:
x.cc: In substitution of 'template<class auto:1> f2(int)::<lambda(auto:1)>
[with auto:1 = int]':
x.cc:5:32: required by substitution of 'template<class F, class T>
decltype (f(v)) f1(F, T) [with F = f2(int)::<lambda(auto:1)>; T = int]'
x.cc:11:48: required from here
x.cc:11:39: internal compiler error: in tsubst_copy, at cp/pt.c:15325
f1([](auto x) -> V<decltype(x)::y(p)> {}, 0);
^
0x7a2545 tsubst_copy
../../gcc/gcc/cp/pt.c:15325
0x7a3c93 tsubst_copy_and_build(tree_node*, tree_node*, int, tree_node*,
bool, bool)
../../gcc/gcc/cp/pt.c:18843
0x7a62eb tsubst_copy_and_build(tree_node*, tree_node*, int, tree_node*,
bool, bool)
../../gcc/gcc/cp/pt.c:18962
0x7a52bb tsubst_copy_and_build(tree_node*, tree_node*, int, tree_node*,
bool, bool)
../../gcc/gcc/cp/pt.c:18264
0x7990ee tsubst_expr(tree_node*, tree_node*, int, tree_node*, bool)
../../gcc/gcc/cp/pt.c:17412
0x7bd710 tsubst_expr(tree_node*, tree_node*, int, tree_node*, bool)
../../gcc/gcc/cp/pt.c:11405
0x7bd710 tsubst_template_arg
../../gcc/gcc/cp/pt.c:11416
0x7c5eba tsubst_template_args
../../gcc/gcc/cp/pt.c:12440
0x7bb3e7 tsubst(tree_node*, tree_node*, int, tree_node*)
../../gcc/gcc/cp/pt.c:14604
0x7bb731 tsubst(tree_node*, tree_node*, int, tree_node*)
../../gcc/gcc/cp/pt.c:14221
0x7cd52c tsubst_function_type
../../gcc/gcc/cp/pt.c:13979
0x7bae75 tsubst(tree_node*, tree_node*, int, tree_node*)
../../gcc/gcc/cp/pt.c:14743
0x7c69dc tsubst_function_decl
../../gcc/gcc/cp/pt.c:12907
0x7ca178 tsubst_decl
../../gcc/gcc/cp/pt.c:13307
0x7bb417 tsubst(tree_node*, tree_node*, int, tree_node*)
../../gcc/gcc/cp/pt.c:14195
0x7b8afa instantiate_template_1
../../gcc/gcc/cp/pt.c:19215
0x7b8afa instantiate_template(tree_node*, tree_node*, int)
../../gcc/gcc/cp/pt.c:19271
0x7d1813 fn_type_unification(tree_node*, tree_node*, tree_node*, tree_node*
const*, unsigned int, tree_node*, unification_kind_t, int, bool, bool)
../../gcc/gcc/cp/pt.c:19633
0x601961 add_template_candidate_real
../../gcc/gcc/cp/call.c:3179
0x6025cb add_template_candidate
../../gcc/gcc/cp/call.c:3261
Live example:
https://godbolt.org/g/HNEuE8
More information about the Gcc-bugs
mailing list