re PR c++/79205 (ICE in create_tmp_var, at gimple-expr.c:473)
PR c++/79205 * cp-gimplify.c (cp_genericize_r): Add result of convert_from_reference on invisiref parm to p_set. * g++.dg/cpp1z/decomp22.C: New test. * g++.dg/cpp1z/decomp23.C: New test. From-SVN: r244885
This commit is contained in:
parent
a8c9ef2a39
commit
7cfd79d60b
@ -1,3 +1,9 @@
|
||||
2017-01-24 Jakub Jelinek <jakub@redhat.com>
|
||||
|
||||
PR c++/79205
|
||||
* cp-gimplify.c (cp_genericize_r): Add result of
|
||||
convert_from_reference on invisiref parm to p_set.
|
||||
|
||||
2017-01-24 Nathan Sidwell <nathan@acm.org>
|
||||
|
||||
PR c++/78469 - defaulted ctor and inaccessible dtor
|
||||
|
@ -1107,6 +1107,7 @@ cp_genericize_r (tree *stmt_p, int *walk_subtrees, void *data)
|
||||
if (wtd->handle_invisiref_parm_p && is_invisiref_parm (stmt))
|
||||
{
|
||||
*stmt_p = convert_from_reference (stmt);
|
||||
p_set->add (*stmt_p);
|
||||
*walk_subtrees = 0;
|
||||
return NULL;
|
||||
}
|
||||
|
@ -1,3 +1,9 @@
|
||||
2017-01-24 Jakub Jelinek <jakub@redhat.com>
|
||||
|
||||
PR c++/79205
|
||||
* g++.dg/cpp1z/decomp22.C: New test.
|
||||
* g++.dg/cpp1z/decomp23.C: New test.
|
||||
|
||||
2017-01-24 Nathan Sidwell <nathan@acm.org>
|
||||
|
||||
PR c++/78469
|
||||
|
21
gcc/testsuite/g++.dg/cpp1z/decomp22.C
Normal file
21
gcc/testsuite/g++.dg/cpp1z/decomp22.C
Normal file
@ -0,0 +1,21 @@
|
||||
// PR c++/79205
|
||||
// { dg-do compile { target c++11 } }
|
||||
// { dg-options "" }
|
||||
|
||||
template <unsigned long, typename...> struct B;
|
||||
template <unsigned long I, typename H> struct B<I, H> { int b; };
|
||||
template <typename... E> struct C { B<0, E...> c; C (C &) = default; C (C &&); };
|
||||
template <typename> struct tuple_size;
|
||||
template <> struct tuple_size<C<int>> { static constexpr int value = 1; };
|
||||
template <int, typename> struct tuple_element;
|
||||
template <typename H, typename... T>
|
||||
struct tuple_element<0, C<H, T...>> { typedef int type; };
|
||||
template <int, typename... E>
|
||||
int &&get (C<E...> &&);
|
||||
|
||||
int
|
||||
foo (C<int> t)
|
||||
{
|
||||
auto[x0] = t; // { dg-warning "decomposition declaration only available with" "" { target c++14_down } }
|
||||
return x0;
|
||||
}
|
12
gcc/testsuite/g++.dg/cpp1z/decomp23.C
Normal file
12
gcc/testsuite/g++.dg/cpp1z/decomp23.C
Normal file
@ -0,0 +1,12 @@
|
||||
// PR c++/79205
|
||||
// { dg-do compile { target c++11 } }
|
||||
// { dg-options "" }
|
||||
|
||||
#include <tuple>
|
||||
|
||||
int
|
||||
foo (std::tuple<int> t)
|
||||
{
|
||||
auto [x0] = t; // { dg-warning "decomposition declaration only available with" "" { target c++14_down } }
|
||||
return x0;
|
||||
}
|
Loading…
Reference in New Issue
Block a user