This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
RE: PATCH: PR c/59309: FAIL: c-c++-common/cilk-plus/CK/spawnee_inline.c -g -fcilkplus (test for excess errors)
- From: "Iyer, Balaji V" <balaji dot v dot iyer at intel dot com>
- To: "H.J. Lu" <hjl dot tools at gmail dot com>, "gcc-patches at gcc dot gnu dot org" <gcc-patches at gcc dot gnu dot org>
- Date: Thu, 28 Nov 2013 16:50:11 +0000
- Subject: RE: PATCH: PR c/59309: FAIL: c-c++-common/cilk-plus/CK/spawnee_inline.c -g -fcilkplus (test for excess errors)
- Authentication-results: sourceware.org; auth=none
- References: <20131128160539 dot GA21530 at intel dot com>
> -----Original Message-----
> From: Lu, Hongjiu
> Sent: Thursday, November 28, 2013 11:06 AM
> To: gcc-patches@gcc.gnu.org
> Cc: Iyer, Balaji V
> Subject: PATCH: PR c/59309: FAIL: c-c++-common/cilk-
> plus/CK/spawnee_inline.c -g -fcilkplus (test for excess errors)
>
> Hi,
>
> For function without arguments, gimplify_cilk_spawn checks
>
> *arg_array == NULL_TREE
>
> But arg_array is a TREE vector of zero elements. This patch updates
> gimplify_cilk_spawn to properly handle function without arguments.
> Tested on Linux/x86-64 with GCC bootstraped using -fsanitize=address.
> OK to install?
>
> Thanks.
>
>
> H.J.
> ----
> 2013-11-28 H.J. Lu <hongjiu.lu@intel.com>
>
> PR c/59309
> * cilk.c (gimplify_cilk_spawn): Properly handle function without
> arguments.
>
> diff --git a/gcc/c-family/cilk.c b/gcc/c-family/cilk.c index c85b5f2..99d9c7e
> 100644
> --- a/gcc/c-family/cilk.c
> +++ b/gcc/c-family/cilk.c
> @@ -757,7 +757,10 @@ gimplify_cilk_spawn (tree *spawn_p, gimple_seq
> *before ATTRIBUTE_UNUSED,
>
> /* This should give the number of parameters. */
> total_args = list_length (new_args);
> - arg_array = XNEWVEC (tree, total_args);
> + if (total_args)
> + arg_array = XNEWVEC (tree, total_args); else
> + arg_array = NULL;
>
> ii_args = new_args;
> for (ii = 0; ii < total_args; ii++)
> @@ -771,7 +774,7 @@ gimplify_cilk_spawn (tree *spawn_p, gimple_seq
> *before ATTRIBUTE_UNUSED,
>
> call1 = cilk_call_setjmp (cfun->cilk_frame_decl);
>
> - if (*arg_array == NULL_TREE)
> + if (arg_array == NULL || *arg_array == NULL_TREE)
> call2 = build_call_expr (function, 0);
> else
> call2 = build_call_expr_loc_array (EXPR_LOCATION (*spawn_p), function,
Looks good to me.
-Balaji V. Iyer