re PR c++/67244 (internal compiler error: in gimplify_var_or_parm_decl, at gimplify.c:1801)
PR c++/67244 * pt.c (tsubst_copy_and_build): Call insert_pending_capture_proxies. From-SVN: r226950
This commit is contained in:
parent
ceaaf873e9
commit
b361a15ff6
3 changed files with 34 additions and 0 deletions
|
@ -1,5 +1,8 @@
|
|||
2015-08-17 Jason Merrill <jason@redhat.com>
|
||||
|
||||
PR c++/67244
|
||||
* pt.c (tsubst_copy_and_build): Call insert_pending_capture_proxies.
|
||||
|
||||
PR c++/67104
|
||||
* constexpr.c (array_index_cmp, find_array_ctor_elt): New.
|
||||
(cxx_eval_array_reference, cxx_eval_store_expression): Use them.
|
||||
|
|
|
@ -16344,6 +16344,8 @@ tsubst_copy_and_build (tree t,
|
|||
|
||||
LAMBDA_EXPR_THIS_CAPTURE (r) = NULL_TREE;
|
||||
|
||||
insert_pending_capture_proxies ();
|
||||
|
||||
RETURN (build_lambda_object (r));
|
||||
}
|
||||
|
||||
|
|
29
gcc/testsuite/g++.dg/cpp0x/lambda/lambda-nested5.C
Normal file
29
gcc/testsuite/g++.dg/cpp0x/lambda/lambda-nested5.C
Normal file
|
@ -0,0 +1,29 @@
|
|||
// PR c++/67244
|
||||
// { dg-do compile { target c++11 } }
|
||||
|
||||
class A {
|
||||
public:
|
||||
int operator*();
|
||||
};
|
||||
template <typename T, typename Predicate>
|
||||
void searchGen(int, int, T, Predicate p4) {
|
||||
p4(0);
|
||||
}
|
||||
template <typename...> struct B;
|
||||
template <typename MetaFunction, typename Type, typename... Types>
|
||||
struct B<MetaFunction, Type, Types...> {
|
||||
static void exec() { MetaFunction::template exec<Type>; }
|
||||
};
|
||||
template <typename MetaFunction, typename... Types> void forEachType() {
|
||||
B<MetaFunction, Types...>::exec;
|
||||
}
|
||||
namespace {
|
||||
struct C {
|
||||
template <typename T> void exec() {
|
||||
A __trans_tmp_1;
|
||||
const auto target = *__trans_tmp_1;
|
||||
searchGen(0, 0, 0, [=](T) { [=] { target; }; });
|
||||
}
|
||||
};
|
||||
}
|
||||
void ____C_A_T_C_H____T_E_S_T____75() { forEachType<C, int>; }
|
Loading…
Add table
Reference in a new issue