diff mbox

c/61271 fix ICE for invalid cilkplus array notation

Message ID 20140521154358.GE6953@redhat.com
State New
Headers show

Commit Message

Jonathan Wakely May 21, 2014, 3:43 p.m. UTC
This is only one of several cases in the PR, but one that's simple
enough for me to write a test for and fix.

Tested x86_64-linux, OK for trunk?

Comments

Jonathan Wakely May 21, 2014, 4:19 p.m. UTC | #1
On 21/05/14 16:43 +0100, Jonathan Wakely wrote:
>This is only one of several cases in the PR, but one that's simple
>enough for me to write a test for and fix.
>
>Tested x86_64-linux, OK for trunk?

There's a separate PR for this one now:
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=61276

So I'll update the ChangeLog entries to c++/61276 if it's approved.


>commit 3ddcc29423746afb348c15160d33d3b1eec6fe12
>Author: Jonathan Wakely <jwakely@redhat.com>
>Date:   Wed May 21 16:20:25 2014 +0100
>
>    cp:
>    	PR c/61271
>    	* cp-array-notation.c (cilkplus_an_triplet_types_ok_p): Fix condition.
>    
>    testsuite:
>    	PR c/61271
>    	* g++.dg/cilk-plus/AN/array_function.cc: New.
>
>diff --git a/gcc/cp/cp-array-notation.c b/gcc/cp/cp-array-notation.c
>index 0ff0967..ff82dee 100644
>--- a/gcc/cp/cp-array-notation.c
>+++ b/gcc/cp/cp-array-notation.c
>@@ -26,7 +26,7 @@
>    An array notation expression has 4 major components:
>    1. The array name
>    2. Start Index
>-   3. Number of elements we need to acess (we call it length)
>+   3. Number of elements we need to access (we call it length)
>    4. Stride
> 
>    So, if we have something like A[0:5:2], we are accessing A[0], A[2], A[4],
>@@ -1418,7 +1418,7 @@ cilkplus_an_triplet_types_ok_p (location_t loc, tree start_index, tree length,
>       error_at (loc, "stride of array notation triplet is not an integer");
>       return false;
>     }
>-  if (!TREE_CODE (type) == FUNCTION_TYPE)
>+  if (TREE_CODE (type) == FUNCTION_TYPE)
>     {
>       error_at (loc, "array notation cannot be used with function type");
>       return false;
>diff --git a/gcc/testsuite/g++.dg/cilk-plus/AN/array_function.cc b/gcc/testsuite/g++.dg/cilk-plus/AN/array_function.cc
>new file mode 100644
>index 0000000..b111e21
>--- /dev/null
>+++ b/gcc/testsuite/g++.dg/cilk-plus/AN/array_function.cc
>@@ -0,0 +1,8 @@
>+/* { dg-do compile } */
>+/* { dg-options "-fcilkplus" } */
>+
>+void f() { }
>+int main()
>+{
>+  f[0:1:1];  // { dg-error "function type" }
>+}
Richard Biener May 22, 2014, 7:51 a.m. UTC | #2
On Wed, May 21, 2014 at 5:43 PM, Jonathan Wakely <jwakely@redhat.com> wrote:
> This is only one of several cases in the PR, but one that's simple
> enough for me to write a test for and fix.
>
> Tested x86_64-linux, OK for trunk?

Ok.

Thanks,
Richard.
diff mbox

Patch

commit 3ddcc29423746afb348c15160d33d3b1eec6fe12
Author: Jonathan Wakely <jwakely@redhat.com>
Date:   Wed May 21 16:20:25 2014 +0100

    cp:
    	PR c/61271
    	* cp-array-notation.c (cilkplus_an_triplet_types_ok_p): Fix condition.
    
    testsuite:
    	PR c/61271
    	* g++.dg/cilk-plus/AN/array_function.cc: New.

diff --git a/gcc/cp/cp-array-notation.c b/gcc/cp/cp-array-notation.c
index 0ff0967..ff82dee 100644
--- a/gcc/cp/cp-array-notation.c
+++ b/gcc/cp/cp-array-notation.c
@@ -26,7 +26,7 @@ 
    An array notation expression has 4 major components:
    1. The array name
    2. Start Index
-   3. Number of elements we need to acess (we call it length)
+   3. Number of elements we need to access (we call it length)
    4. Stride
 
    So, if we have something like A[0:5:2], we are accessing A[0], A[2], A[4],
@@ -1418,7 +1418,7 @@  cilkplus_an_triplet_types_ok_p (location_t loc, tree start_index, tree length,
       error_at (loc, "stride of array notation triplet is not an integer");
       return false;
     }
-  if (!TREE_CODE (type) == FUNCTION_TYPE)
+  if (TREE_CODE (type) == FUNCTION_TYPE)
     {
       error_at (loc, "array notation cannot be used with function type");
       return false;
diff --git a/gcc/testsuite/g++.dg/cilk-plus/AN/array_function.cc b/gcc/testsuite/g++.dg/cilk-plus/AN/array_function.cc
new file mode 100644
index 0000000..b111e21
--- /dev/null
+++ b/gcc/testsuite/g++.dg/cilk-plus/AN/array_function.cc
@@ -0,0 +1,8 @@ 
+/* { dg-do compile } */
+/* { dg-options "-fcilkplus" } */
+
+void f() { }
+int main()
+{
+  f[0:1:1];  // { dg-error "function type" }
+}