diff options
author | Jason Merrill <jason@redhat.com> | 2016-07-08 17:31:59 -0400 |
---|---|---|
committer | Jason Merrill <jason@gcc.gnu.org> | 2016-07-08 17:31:59 -0400 |
commit | 0596c4485c684abe3ad34d81c8cbc79d2787c42b (patch) | |
tree | 29a4c9dc0259d5b83217d2467644b8e8c180be4d /gcc/cp/lambda.c | |
parent | d13835b668ac64ae062fa0c765476d229b6b2c22 (diff) | |
download | gcc-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/cp/lambda.c')
-rw-r--r-- | gcc/cp/lambda.c | 9 |
1 files changed, 5 insertions, 4 deletions
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 |