Re: [C++ PING^3] Re: [PATCH 5/5] Add illegal cilk checks to C++ front.

2014-11-10 Thread Andi Kleen
Andi Kleen a...@firstfloor.org writes:

Ping!^3

 Andi Kleen a...@firstfloor.org writes:

 Ping!^2

 Andi Kleen a...@firstfloor.org writes:

 Ping!

 Can someone from the C++ side please approve this patch?
 That's the only patch not approved in this patch kit, but blocking
 the commit.

 -Andi

 From: Andi Kleen a...@linux.intel.com

 Add calls for several illegal Cilk cases to the C++ frontend.
 C++ usually doesn't ICE unlike C on illegal cilk, but it's
 better to match C in what is allowed and what is not.

 if (_Cilk_spawn ...) is still not errored, but at least it doesn't ICE.

 gcc/cp/:

 2014-09-30  Andi Kleen  a...@linux.intel.com

 * semantics.c (finish_goto_stmt): Call check_no_cilk.
 (finish_while_stmt_cond): Dito.
 (finish_do_stmt): Dito.
 (finish_for_cond): Dito.
 (finish_switch_cond): Dito.
 ---
  gcc/cp/semantics.c | 12 
  1 file changed, 12 insertions(+)

 diff --git a/gcc/cp/semantics.c b/gcc/cp/semantics.c
 index 7569826..9ca03be 100644
 --- a/gcc/cp/semantics.c
 +++ b/gcc/cp/semantics.c
 @@ -621,6 +621,8 @@ finish_goto_stmt (tree destination)
  TREE_USED (destination) = 1;
else
  {
 +  if (check_no_cilk (destination, as a computed goto expression))
 +   destination = error_mark_node;
destination = mark_rvalue_use (destination);
if (!processing_template_decl)
 {
 @@ -792,6 +794,8 @@ begin_while_stmt (void)
  void
  finish_while_stmt_cond (tree cond, tree while_stmt, bool ivdep)
  {
 +  if (check_no_cilk (cond, as a condition for while statement))
 +cond = error_mark_node;
cond = maybe_convert_cond (cond);
finish_cond (WHILE_COND (while_stmt), cond);
begin_maybe_infinite_loop (cond);
 @@ -847,6 +851,8 @@ finish_do_body (tree do_stmt)
  void
  finish_do_stmt (tree cond, tree do_stmt, bool ivdep)
  {
 +  if (check_no_cilk (cond, as a condition for a do-while statement))
 +cond = error_mark_node;
cond = maybe_convert_cond (cond);
end_maybe_infinite_loop (cond);
if (ivdep  cond != error_mark_node)
 @@ -956,6 +962,8 @@ finish_for_init_stmt (tree for_stmt)
  void
  finish_for_cond (tree cond, tree for_stmt, bool ivdep)
  {
 +  if (check_no_cilk (cond, in a condition for a for-loop))
 +cond = error_mark_node;
cond = maybe_convert_cond (cond);
finish_cond (FOR_COND (for_stmt), cond);
begin_maybe_infinite_loop (cond);
 @@ -1118,6 +1126,10 @@ void
  finish_switch_cond (tree cond, tree switch_stmt)
  {
tree orig_type = NULL;
 +
 +  if (check_no_cilk (cond, as a condition for switch statement))
 +cond = error_mark_node;
 +
if (!processing_template_decl)
  {
/* Convert the condition to an integer or enumeration type.  */

-- 
a...@linux.intel.com -- Speaking for myself only


Re: [PATCH 5/5] Add illegal cilk checks to C++ front.

2014-11-10 Thread Andi Kleen
On Sun, Nov 09, 2014 at 11:03:50PM -0600, Jason Merrill wrote:
 On 10/01/2014 11:26 PM, Andi Kleen wrote:
 +  if (check_no_cilk (cond, in a condition for a for-loop))
 
 Why is this one in while the others are as?

I think in was somewhere hard coded in the test suite
and I wanted to minimize test suite changes. So I tried
to keep the existing messages the same as before.

 The patch is OK in any case.
 
 Please ping me directly on C++ patches.

Ok.  Thanks.

-Andi

-- 
a...@linux.intel.com -- Speaking for myself only.


Re: [PATCH 5/5] Add illegal cilk checks to C++ front.

2014-11-09 Thread Jason Merrill

On 10/01/2014 11:26 PM, Andi Kleen wrote:

+  if (check_no_cilk (cond, in a condition for a for-loop))


Why is this one in while the others are as?

The patch is OK in any case.

Please ping me directly on C++ patches.

Thanks,
Jason




Re: [C++ PING^2] Re: [PATCH 5/5] Add illegal cilk checks to C++ front.

2014-11-03 Thread Andi Kleen
Andi Kleen a...@firstfloor.org writes:

Ping!^2

 Andi Kleen a...@firstfloor.org writes:

 Ping!

 Can someone from the C++ side please approve this patch?
 That's the only patch not approved in this patch kit, but blocking
 the commit.

 -Andi

 From: Andi Kleen a...@linux.intel.com

 Add calls for several illegal Cilk cases to the C++ frontend.
 C++ usually doesn't ICE unlike C on illegal cilk, but it's
 better to match C in what is allowed and what is not.

 if (_Cilk_spawn ...) is still not errored, but at least it doesn't ICE.

 gcc/cp/:

 2014-09-30  Andi Kleen  a...@linux.intel.com

  * semantics.c (finish_goto_stmt): Call check_no_cilk.
  (finish_while_stmt_cond): Dito.
  (finish_do_stmt): Dito.
  (finish_for_cond): Dito.
  (finish_switch_cond): Dito.
 ---
  gcc/cp/semantics.c | 12 
  1 file changed, 12 insertions(+)

 diff --git a/gcc/cp/semantics.c b/gcc/cp/semantics.c
 index 7569826..9ca03be 100644
 --- a/gcc/cp/semantics.c
 +++ b/gcc/cp/semantics.c
 @@ -621,6 +621,8 @@ finish_goto_stmt (tree destination)
  TREE_USED (destination) = 1;
else
  {
 +  if (check_no_cilk (destination, as a computed goto expression))
 +destination = error_mark_node;
destination = mark_rvalue_use (destination);
if (!processing_template_decl)
  {
 @@ -792,6 +794,8 @@ begin_while_stmt (void)
  void
  finish_while_stmt_cond (tree cond, tree while_stmt, bool ivdep)
  {
 +  if (check_no_cilk (cond, as a condition for while statement))
 +cond = error_mark_node;
cond = maybe_convert_cond (cond);
finish_cond (WHILE_COND (while_stmt), cond);
begin_maybe_infinite_loop (cond);
 @@ -847,6 +851,8 @@ finish_do_body (tree do_stmt)
  void
  finish_do_stmt (tree cond, tree do_stmt, bool ivdep)
  {
 +  if (check_no_cilk (cond, as a condition for a do-while statement))
 +cond = error_mark_node;
cond = maybe_convert_cond (cond);
end_maybe_infinite_loop (cond);
if (ivdep  cond != error_mark_node)
 @@ -956,6 +962,8 @@ finish_for_init_stmt (tree for_stmt)
  void
  finish_for_cond (tree cond, tree for_stmt, bool ivdep)
  {
 +  if (check_no_cilk (cond, in a condition for a for-loop))
 +cond = error_mark_node;
cond = maybe_convert_cond (cond);
finish_cond (FOR_COND (for_stmt), cond);
begin_maybe_infinite_loop (cond);
 @@ -1118,6 +1126,10 @@ void
  finish_switch_cond (tree cond, tree switch_stmt)
  {
tree orig_type = NULL;
 +
 +  if (check_no_cilk (cond, as a condition for switch statement))
 +cond = error_mark_node;
 +
if (!processing_template_decl)
  {
/* Convert the condition to an integer or enumeration type.  */

-- 
a...@linux.intel.com -- Speaking for myself only


[C++ PING] Re: [PATCH 5/5] Add illegal cilk checks to C++ front.

2014-10-26 Thread Andi Kleen
Andi Kleen a...@firstfloor.org writes:

Ping!

Can someone from the C++ side please approve this patch?
That's the only patch not approved in this patch kit, but blocking
the commit.

-Andi

 From: Andi Kleen a...@linux.intel.com

 Add calls for several illegal Cilk cases to the C++ frontend.
 C++ usually doesn't ICE unlike C on illegal cilk, but it's
 better to match C in what is allowed and what is not.

 if (_Cilk_spawn ...) is still not errored, but at least it doesn't ICE.

 gcc/cp/:

 2014-09-30  Andi Kleen  a...@linux.intel.com

   * semantics.c (finish_goto_stmt): Call check_no_cilk.
   (finish_while_stmt_cond): Dito.
   (finish_do_stmt): Dito.
   (finish_for_cond): Dito.
   (finish_switch_cond): Dito.
 ---
  gcc/cp/semantics.c | 12 
  1 file changed, 12 insertions(+)

 diff --git a/gcc/cp/semantics.c b/gcc/cp/semantics.c
 index 7569826..9ca03be 100644
 --- a/gcc/cp/semantics.c
 +++ b/gcc/cp/semantics.c
 @@ -621,6 +621,8 @@ finish_goto_stmt (tree destination)
  TREE_USED (destination) = 1;
else
  {
 +  if (check_no_cilk (destination, as a computed goto expression))
 + destination = error_mark_node;
destination = mark_rvalue_use (destination);
if (!processing_template_decl)
   {
 @@ -792,6 +794,8 @@ begin_while_stmt (void)
  void
  finish_while_stmt_cond (tree cond, tree while_stmt, bool ivdep)
  {
 +  if (check_no_cilk (cond, as a condition for while statement))
 +cond = error_mark_node;
cond = maybe_convert_cond (cond);
finish_cond (WHILE_COND (while_stmt), cond);
begin_maybe_infinite_loop (cond);
 @@ -847,6 +851,8 @@ finish_do_body (tree do_stmt)
  void
  finish_do_stmt (tree cond, tree do_stmt, bool ivdep)
  {
 +  if (check_no_cilk (cond, as a condition for a do-while statement))
 +cond = error_mark_node;
cond = maybe_convert_cond (cond);
end_maybe_infinite_loop (cond);
if (ivdep  cond != error_mark_node)
 @@ -956,6 +962,8 @@ finish_for_init_stmt (tree for_stmt)
  void
  finish_for_cond (tree cond, tree for_stmt, bool ivdep)
  {
 +  if (check_no_cilk (cond, in a condition for a for-loop))
 +cond = error_mark_node;
cond = maybe_convert_cond (cond);
finish_cond (FOR_COND (for_stmt), cond);
begin_maybe_infinite_loop (cond);
 @@ -1118,6 +1126,10 @@ void
  finish_switch_cond (tree cond, tree switch_stmt)
  {
tree orig_type = NULL;
 +
 +  if (check_no_cilk (cond, as a condition for switch statement))
 +cond = error_mark_node;
 +
if (!processing_template_decl)
  {
/* Convert the condition to an integer or enumeration type.  */

-- 
a...@linux.intel.com -- Speaking for myself only


[PATCH 5/5] Add illegal cilk checks to C++ front.

2014-10-01 Thread Andi Kleen
From: Andi Kleen a...@linux.intel.com

Add calls for several illegal Cilk cases to the C++ frontend.
C++ usually doesn't ICE unlike C on illegal cilk, but it's
better to match C in what is allowed and what is not.

if (_Cilk_spawn ...) is still not errored, but at least it doesn't ICE.

gcc/cp/:

2014-09-30  Andi Kleen  a...@linux.intel.com

* semantics.c (finish_goto_stmt): Call check_no_cilk.
(finish_while_stmt_cond): Dito.
(finish_do_stmt): Dito.
(finish_for_cond): Dito.
(finish_switch_cond): Dito.
---
 gcc/cp/semantics.c | 12 
 1 file changed, 12 insertions(+)

diff --git a/gcc/cp/semantics.c b/gcc/cp/semantics.c
index 7569826..9ca03be 100644
--- a/gcc/cp/semantics.c
+++ b/gcc/cp/semantics.c
@@ -621,6 +621,8 @@ finish_goto_stmt (tree destination)
 TREE_USED (destination) = 1;
   else
 {
+  if (check_no_cilk (destination, as a computed goto expression))
+   destination = error_mark_node;
   destination = mark_rvalue_use (destination);
   if (!processing_template_decl)
{
@@ -792,6 +794,8 @@ begin_while_stmt (void)
 void
 finish_while_stmt_cond (tree cond, tree while_stmt, bool ivdep)
 {
+  if (check_no_cilk (cond, as a condition for while statement))
+cond = error_mark_node;
   cond = maybe_convert_cond (cond);
   finish_cond (WHILE_COND (while_stmt), cond);
   begin_maybe_infinite_loop (cond);
@@ -847,6 +851,8 @@ finish_do_body (tree do_stmt)
 void
 finish_do_stmt (tree cond, tree do_stmt, bool ivdep)
 {
+  if (check_no_cilk (cond, as a condition for a do-while statement))
+cond = error_mark_node;
   cond = maybe_convert_cond (cond);
   end_maybe_infinite_loop (cond);
   if (ivdep  cond != error_mark_node)
@@ -956,6 +962,8 @@ finish_for_init_stmt (tree for_stmt)
 void
 finish_for_cond (tree cond, tree for_stmt, bool ivdep)
 {
+  if (check_no_cilk (cond, in a condition for a for-loop))
+cond = error_mark_node;
   cond = maybe_convert_cond (cond);
   finish_cond (FOR_COND (for_stmt), cond);
   begin_maybe_infinite_loop (cond);
@@ -1118,6 +1126,10 @@ void
 finish_switch_cond (tree cond, tree switch_stmt)
 {
   tree orig_type = NULL;
+
+  if (check_no_cilk (cond, as a condition for switch statement))
+cond = error_mark_node;
+
   if (!processing_template_decl)
 {
   /* Convert the condition to an integer or enumeration type.  */
-- 
2.1.1