From: jason Date: Mon, 12 Apr 2010 19:58:49 +0000 (+0000) Subject: PR c++/43641 X-Git-Url: http://git.sourceforge.jp/view?p=pf3gnuchains%2Fgcc-fork.git;a=commitdiff_plain;h=f8deeca1b6c5d7316543197e5e331d44410fac2d PR c++/43641 * semantics.c (maybe_add_lambda_conv_op): Use build_call_a and tweak return value directly. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@158241 138bc75d-0d04-0410-961f-82ee72b054a4 --- diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index 746011bd604..bd139b1d5c1 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,5 +1,9 @@ 2010-04-12 Jason Merrill + PR c++/43641 + * semantics.c (maybe_add_lambda_conv_op): Use build_call_a and tweak + return value directly. + * call.c (type_decays_to): Call cv_unqualified for non-class type. 2010-04-12 Fabien Chene diff --git a/gcc/cp/semantics.c b/gcc/cp/semantics.c index f89356ca26b..589241fd887 100644 --- a/gcc/cp/semantics.c +++ b/gcc/cp/semantics.c @@ -5959,9 +5959,12 @@ maybe_add_lambda_conv_op (tree type) VEC_quick_push (tree, argvec, arg); for (arg = DECL_ARGUMENTS (statfn); arg; arg = TREE_CHAIN (arg)) VEC_safe_push (tree, gc, argvec, arg); - call = build_cxx_call (callop, VEC_length (tree, argvec), - VEC_address (tree, argvec)); + call = build_call_a (callop, VEC_length (tree, argvec), + VEC_address (tree, argvec)); CALL_FROM_THUNK_P (call) = 1; + if (MAYBE_CLASS_TYPE_P (TREE_TYPE (call))) + call = build_cplus_new (TREE_TYPE (call), call); + call = convert_from_reference (call); finish_return_stmt (call); finish_compound_stmt (compound_stmt); diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index a091f0a9bf3..aeb80a1da5d 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,5 +1,8 @@ 2010-04-12 Jason Merrill + PR c++/43641 + * g++.dg/cpp0x/lambda/lambda-conv4.C: New. + * g++.dg/cpp0x/lambda/lambda-deduce2.C: New. 2010-04-12 Fabien Chene