aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorJason Merrill <jason@redhat.com>2016-07-08 17:31:59 -0400
committerJason Merrill <jason@gcc.gnu.org>2016-07-08 17:31:59 -0400
commit0596c4485c684abe3ad34d81c8cbc79d2787c42b (patch)
tree29a4c9dc0259d5b83217d2467644b8e8c180be4d /gcc
parentd13835b668ac64ae062fa0c765476d229b6b2c22 (diff)
downloadgcc-0596c4485c684abe3ad34d81c8cbc79d2787c42b.zip
gcc-0596c4485c684abe3ad34d81c8cbc79d2787c42b.tar.gz
gcc-0596c4485c684abe3ad34d81c8cbc79d2787c42b.tar.bz2
* lambda.c (maybe_add_lambda_conv_op): Fix null object argument.
From-SVN: r238180
Diffstat (limited to 'gcc')
-rw-r--r--gcc/cp/ChangeLog2
-rw-r--r--gcc/cp/lambda.c9
2 files changed, 7 insertions, 4 deletions
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog
index 0d6ce94..d6f9914 100644
--- a/gcc/cp/ChangeLog
+++ b/gcc/cp/ChangeLog
@@ -1,5 +1,7 @@
2016-07-08 Jason Merrill <jason@redhat.com>
+ * lambda.c (maybe_add_lambda_conv_op): Fix null object argument.
+
P0145R2: Refining Expression Order for C++.
* cp-gimplify.c (lvalue_has_side_effects): New.
(cp_gimplify_expr): Implement assignment ordering.
diff --git a/gcc/cp/lambda.c b/gcc/cp/lambda.c
index 85ad9f8..3822882 100644
--- a/gcc/cp/lambda.c
+++ b/gcc/cp/lambda.c
@@ -904,6 +904,8 @@ maybe_add_lambda_conv_op (tree type)
tree optype = TREE_TYPE (callop);
tree fn_result = TREE_TYPE (optype);
+ tree thisarg = build_nop (TREE_TYPE (DECL_ARGUMENTS (callop)),
+ null_pointer_node);
if (generic_lambda_p)
{
/* Prepare the dependent member call for the static member function
@@ -911,7 +913,8 @@ maybe_add_lambda_conv_op (tree type)
return expression for a deduced return call op to allow for simple
implementation of the conversion operator. */
- tree instance = build_nop (type, null_pointer_node);
+ tree instance = cp_build_indirect_ref (thisarg, RO_NULL,
+ tf_warning_or_error);
tree objfn = build_min (COMPONENT_REF, NULL_TREE,
instance, DECL_NAME (callop), NULL_TREE);
int nargs = list_length (DECL_ARGUMENTS (callop)) - 1;
@@ -923,9 +926,7 @@ maybe_add_lambda_conv_op (tree type)
else
{
direct_argvec = make_tree_vector ();
- direct_argvec->quick_push (build1 (NOP_EXPR,
- TREE_TYPE (DECL_ARGUMENTS (callop)),
- null_pointer_node));
+ direct_argvec->quick_push (thisarg);
}
/* Copy CALLOP's argument list (as per 'copy_list') as FN_ARGS in order to