This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
[PATCH, PR60467, Cilk+] Fix for ICE with incorrect Cilk_spawn usage
- From: "Zamyatin, Igor" <igor dot zamyatin at intel dot com>
- To: "GCC Patches (gcc-patches at gcc dot gnu dot org)" <gcc-patches at gcc dot gnu dot org>
- Cc: "Iyer, Balaji V" <balaji dot v dot iyer at intel dot com>, "Jakub Jelinek (jakub at redhat dot com)" <jakub at redhat dot com>
- Date: Thu, 10 Apr 2014 13:55:09 +0000
- Subject: [PATCH, PR60467, Cilk+] Fix for ICE with incorrect Cilk_spawn usage
- Authentication-results: sourceware.org; auth=none
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;
}