diff mbox

[PR68001,CilkPlus] Fix for PR68001

Message ID 0EFAB2BDD0F67E4FB6CCC8B9F87D7569738AC2E7@IRSMSX101.ger.corp.intel.com
State New
Headers show

Commit Message

Zamyatin, Igor Nov. 30, 2015, 8:43 p.m. UTC
> 
> FAIL: obj-c++.dg/property/dotsyntax-11.mm -fgnu-runtime  (test for errors,
> line 51)
> FAIL: obj-c++.dg/property/dotsyntax-11.mm -fgnu-runtime  (test for errors,
> line 56)
> FAIL: obj-c++.dg/property/dotsyntax-11.mm -fgnu-runtime  (test for errors,
> line 59)
> 
> Andreas.

Here is the patch that properly limits GS_ERROR exit only in case of error in cilk spawn detection.

Bootstrapped and regtested on x86_64, ok for trunk?

Thanks,
Igor

cp/Changelog

2015-11-27  Igor Zamyatin  <igor.zamyatin@intel.com>

	PR c++/68001
	* cp-gimplify.c (cp_gimplify_expr): Limit GS_ERROR only in case of
	error in cilk spawn detection.

Comments

Tom de Vries Dec. 2, 2015, 7:48 a.m. UTC | #1
On 30/11/15 21:43, Zamyatin, Igor wrote:
>>
>> FAIL: obj-c++.dg/property/dotsyntax-11.mm -fgnu-runtime  (test for errors,
>> line 51)
>> FAIL: obj-c++.dg/property/dotsyntax-11.mm -fgnu-runtime  (test for errors,
>> line 56)
>> FAIL: obj-c++.dg/property/dotsyntax-11.mm -fgnu-runtime  (test for errors,
>> line 59)
>>
>> Andreas.
>
> Here is the patch that properly limits GS_ERROR exit only in case of error in cilk spawn detection.
>

Please add PR objc++/68511 to the ChangeLog entrie.

Thanks,
- Tom

> Bootstrapped and regtested on x86_64, ok for trunk?
>
> Thanks,
> Igor
>
> cp/Changelog
>
> 2015-11-27  Igor Zamyatin  <igor.zamyatin@intel.com>
>
> 	PR c++/68001
> 	* cp-gimplify.c (cp_gimplify_expr): Limit GS_ERROR only in case of
> 	error in cilk spawn detection.
>
>
>
> diff --git a/gcc/cp/cp-gimplify.c b/gcc/cp/cp-gimplify.c
> index 09ee5ff..3dbbd7f 100644
> --- a/gcc/cp/cp-gimplify.c
> +++ b/gcc/cp/cp-gimplify.c
> @@ -559,6 +559,7 @@ int
>   cp_gimplify_expr (tree *expr_p, gimple_seq *pre_p, gimple_seq *post_p)
>   {
>     int saved_stmts_are_full_exprs_p = 0;
> +  bool is_spawn_detected = true;
>     enum tree_code code = TREE_CODE (*expr_p);
>     enum gimplify_status ret;
>
> @@ -614,12 +615,12 @@ cp_gimplify_expr (tree *expr_p, gimple_seq *pre_p, gimple_seq *post_p)
>   	 25979.  */
>       case INIT_EXPR:
>         if (fn_contains_cilk_spawn_p (cfun)
> -	  && cilk_detect_spawn_and_unwrap (expr_p))
> +	  && (is_spawn_detected = cilk_detect_spawn_and_unwrap (expr_p)))
>   	{
>   	  cilk_cp_gimplify_call_params_in_spawned_fn (expr_p, pre_p, post_p);
>   	  return (enum gimplify_status) gimplify_cilk_spawn (expr_p);
>   	}
> -      if (seen_error ())
> +      if (!is_spawn_detected && seen_error ())
>   	return GS_ERROR;
>
>         cp_gimplify_init_expr (expr_p);
>
>
>
diff mbox

Patch

diff --git a/gcc/cp/cp-gimplify.c b/gcc/cp/cp-gimplify.c
index 09ee5ff..3dbbd7f 100644
--- a/gcc/cp/cp-gimplify.c
+++ b/gcc/cp/cp-gimplify.c
@@ -559,6 +559,7 @@  int
 cp_gimplify_expr (tree *expr_p, gimple_seq *pre_p, gimple_seq *post_p)
 {
   int saved_stmts_are_full_exprs_p = 0;
+  bool is_spawn_detected = true;
   enum tree_code code = TREE_CODE (*expr_p);
   enum gimplify_status ret;
 
@@ -614,12 +615,12 @@  cp_gimplify_expr (tree *expr_p, gimple_seq *pre_p, gimple_seq *post_p)
 	 25979.  */
     case INIT_EXPR:
       if (fn_contains_cilk_spawn_p (cfun)
-	  && cilk_detect_spawn_and_unwrap (expr_p))
+	  && (is_spawn_detected = cilk_detect_spawn_and_unwrap (expr_p)))
 	{
 	  cilk_cp_gimplify_call_params_in_spawned_fn (expr_p, pre_p, post_p);
 	  return (enum gimplify_status) gimplify_cilk_spawn (expr_p);
 	}
-      if (seen_error ())
+      if (!is_spawn_detected && seen_error ())
 	return GS_ERROR;
 
       cp_gimplify_init_expr (expr_p);