diff mbox

[PR60467,Cilk+] Fix for ICE with incorrect Cilk_spawn usage

Message ID 0EFAB2BDD0F67E4FB6CCC8B9F87D7569429DBFD8@IRSMSX103.ger.corp.intel.com
State New
Headers show

Commit Message

Zamyatin, Igor April 10, 2014, 1:55 p.m. UTC
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.zamyatin@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.zamyatin@intel.com>

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

Comments

Rainer Orth April 10, 2014, 2:02 p.m. UTC | #1
"Zamyatin, Igor" <igor.zamyatin@intel.com> writes:

> gcc/ChangeLog:
>
> 2014-04-10  Igor Zamyatin  <igor.zamyatin@intel.com>
>
>       PR middle-end/60467
>       * c-family/cilk.c (cilk_set_spawn_marker): Remove FUNCTION_DECL
>       as possible argument for Cilk_spawn.

Both c-family (and cp in your other patch) have their own ChangeLog
files.

	Rainer
diff mbox

Patch

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;
 }