This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

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


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.

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


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]