https://gcc.gnu.org/bugzilla/show_bug.cgi?id=68827
Bug ID: 68827
Summary: [concepts] ICE in fold where requires parameter
shadows function argument
Product: gcc
Version: 6.0
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: c++
Assignee: unassigned at gcc dot gnu.org
Reporter: jarrydb at cse dot unsw.edu.au
Target Milestone: ---
The following code causes an ICE in r231384
template <typename... Types>
struct Var
{
};
struct A
{
};
template <typename V, typename... Types, typename... Args>
bool requires_types_args(V&& v, Var<Types...>&, Args&&... args)
{
return (true && ... &&
requires (V&& v, Types... type, Args... args) {
foo(v, type, args...);
}
);
}
void bar()
{
Var<int, char> v;
requires_types_args(A(), v, 1, 'b');
}
g++ -std=c++1z fold-ice2.cpp -c
fold-ice2.cpp: In instantiation of ‘bool requires_types_args(V&&, Var<Types
...>&, Args&& ...) [with V = A; Types = {int, char}; Args = {int, char}]’:
fold-ice2.cpp:23:37: required from here
fold-ice2.cpp:15:10: internal compiler error: in arg_assoc_type, at
cp/name-lookup.c:5570
foo(v, type, args...);
~~~^~~~~~~~~~~~~~~~~~
0x7dd593 arg_assoc_type
../../../src/gcc-git/gcc/cp/name-lookup.c:5570
0x7ddea1 arg_assoc_args_vec
../../../src/gcc-git/gcc/cp/name-lookup.c:5596
0x7ddea1 lookup_arg_dependent_1
../../../src/gcc-git/gcc/cp/name-lookup.c:5701
0x7ddea1 lookup_arg_dependent(tree_node*, tree_node*, vec<tree_node*, va_gc,
vl_embed>*)
../../../src/gcc-git/gcc/cp/name-lookup.c:5729
0x77c429 perform_koenig_lookup(cp_expr, vec<tree_node*, va_gc, vl_embed>*, int)
../../../src/gcc-git/gcc/cp/semantics.c:2215
0x650ef5 tsubst_copy_and_build(tree_node*, tree_node*, int, tree_node*, bool,
bool)
../../../src/gcc-git/gcc/cp/pt.c:16353
0x6451ac tsubst_expr(tree_node*, tree_node*, int, tree_node*, bool)
../../../src/gcc-git/gcc/cp/pt.c:15628
0x82133c tsubst_simple_requirement
../../../src/gcc-git/gcc/cp/constraint.cc:1580
0x82133c tsubst_requirement
../../../src/gcc-git/gcc/cp/constraint.cc:1636
0x82133c tsubst_requirement_body
../../../src/gcc-git/gcc/cp/constraint.cc:1659
0x82133c tsubst_requires_expr(tree_node*, tree_node*, int, tree_node*)
../../../src/gcc-git/gcc/cp/constraint.cc:1690
0x64f690 tsubst_copy_and_build(tree_node*, tree_node*, int, tree_node*, bool,
bool)
../../../src/gcc-git/gcc/cp/pt.c:16980
0x6451ac tsubst_expr(tree_node*, tree_node*, int, tree_node*, bool)
../../../src/gcc-git/gcc/cp/pt.c:15628
0x6617ad tsubst_pack_expansion(tree_node*, tree_node*, int, tree_node*)
../../../src/gcc-git/gcc/cp/pt.c:10919
0x64b69c tsubst_fold_expr_pack
../../../src/gcc-git/gcc/cp/pt.c:10604
0x64b69c tsubst_binary_left_fold
../../../src/gcc-git/gcc/cp/pt.c:10661
0x64b69c tsubst_copy
../../../src/gcc-git/gcc/cp/pt.c:14303
0x650248 tsubst_copy_and_build(tree_node*, tree_node*, int, tree_node*, bool,
bool)
../../../src/gcc-git/gcc/cp/pt.c:16058
0x6451ac tsubst_expr(tree_node*, tree_node*, int, tree_node*, bool)
../../../src/gcc-git/gcc/cp/pt.c:15628
0x644457 tsubst_expr(tree_node*, tree_node*, int, tree_node*, bool)
../../../src/gcc-git/gcc/cp/pt.c:14940
Please submit a full bug report,
with preprocessed source if appropriate.
Please include the complete backtrace with any bug report.
See <http://gcc.gnu.org/bugs.html> for instructions.