Hi!

This patch filters out another incorrect usage of Cilk_spawn keyword.

Bootstrapped/regtested on x86_64. Ok for trunk?


Thanks,
Igor

gcc/ChangeLog:

2014-04-10  Igor Zamyatin  <igor.zamya...@intel.com>

      PR middle-end/60467
      * c-family/cilk.c (cilk_set_spawn_marker): Remove FUNCTION_DECL
      as possible argument for Cilk_spawn.

gcc/testsuite/ChangeLog:

2014-04-10  Igor Zamyatin  <igor.zamya...@intel.com>

      PR middle-end/60467
      * c-c++-common/cilk-plus/CK/invalid_spawns.c: Add new invalid
      case to check.

diff --git a/gcc/c-family/cilk.c b/gcc/c-family/cilk.c
index 6a7bf4f..bf549ad 100644
--- a/gcc/c-family/cilk.c
+++ b/gcc/c-family/cilk.c
@@ -99,7 +99,6 @@ cilk_set_spawn_marker (location_t loc, tree fcall)
        it.  */
     return false; 
   else if (TREE_CODE (fcall) != CALL_EXPR
-          && TREE_CODE (fcall) != FUNCTION_DECL
           /* In C++, TARGET_EXPR is generated when we have an overloaded
              '=' operator.  */
           && TREE_CODE (fcall) != TARGET_EXPR)
diff --git a/gcc/testsuite/c-c++-common/cilk-plus/CK/invalid_spawns.c 
b/gcc/testsuite/c-c++-common/cilk-plus/CK/invalid_spawns.c
index ba9e619..5b43be7 100644
--- a/gcc/testsuite/c-c++-common/cilk-plus/CK/invalid_spawns.c
+++ b/gcc/testsuite/c-c++-common/cilk-plus/CK/invalid_spawns.c
@@ -8,6 +8,7 @@ int main (void)
 {
   int x; 
 
+  _Cilk_spawn foo; /* { dg-error "only function calls can be spawned" } */
   _Cilk_spawn x; /* { dg-error "only function calls can be spawned" } */
   return x;
 }

Reply via email to