Please see the patch with the testcase Thanks, Igor
gcc/c/ChangeLog: 2014-05-20 Igor Zamyatin <igor.zamya...@intel.com> PR c/61191 * c-array-notation.c (fix_builtin_array_notation_fn): Check invalid function parameters. gcc/testsuite/ChangeLog 2014-05-20 Igor Zamyatin <igor.zamya...@intel.com> PR c/61191 * c-c++-common/cilk-plus/AN/pr61191.c: Check for correct handling of the case with syntax error. diff --git a/gcc/c/c-array-notation.c b/gcc/c/c-array-notation.c index 0ac6ba8..127f9a1 100644 --- a/gcc/c/c-array-notation.c +++ b/gcc/c/c-array-notation.c @@ -229,6 +229,8 @@ fix_builtin_array_notation_fn (tree an_builtin_fn, tree *new_var) /* Fully fold any EXCESSIVE_PRECISION EXPR that can occur in the function parameter. */ func_parm = c_fully_fold (func_parm, false, NULL); + if (func_parm == error_mark_node) + return error_mark_node; location = EXPR_LOCATION (an_builtin_fn); diff --git a/gcc/testsuite/c-c++-common/cilk-plus/AN/pr61191.c b/gcc/testsuite/c-c++-common/cilk-plus/AN/pr61191.c new file mode 100644 index 0000000..e27819b --- /dev/null +++ b/gcc/testsuite/c-c++-common/cilk-plus/AN/pr61191.c @@ -0,0 +1,10 @@ +/* PR c/61191 */ +/* { dg-do compile } */ +/* { dg-options "-fcilkplus" } */ + +double f(double * A, double * B) +{ + return __sec_reduce_add((B[0:500])(; +/* { dg-error "expected expression before ';' token" "" {target *-*-*} 7 } */ +/* { dg-error "called object" "" {target *-*-*} 7 } */ +} /* { dg-error "expected" } */ > -----Original Message----- > From: Jeff Law [mailto:l...@redhat.com] > Sent: Tuesday, May 20, 2014 8:36 PM > To: H.J. Lu; Zamyatin, Igor > Cc: GCC Patches (gcc-patches@gcc.gnu.org) > Subject: Re: [PATCH, PR61191, Cilk+] Fix ICE on syntax error > > On 05/20/14 09:27, H.J. Lu wrote: > > On Tue, May 20, 2014 at 7:31 AM, Zamyatin, Igor > <igor.zamya...@intel.com> wrote: > >> Hi all! > >> > >> The following patch fixes the ICE for the cilk code with syntax error. > >> > >> Regtested on x86_64. > >> Ok for trunk and 4.9? > >> > >> Thanks, > >> Igor > >> > >> > >> gcc/c/ChangeLog: > >> > >> 2014-05-20 Igor Zamyatin <igor.zamya...@intel.com> > >> > >> * c-array-notation.c (fix_builtin_array_notation_fn): Check invalid > >> function parameters. > >> > >> > >> diff --git a/gcc/c/c-array-notation.c b/gcc/c/c-array-notation.c > >> index 0ac6ba8..127f9a1 100644 > >> --- a/gcc/c/c-array-notation.c > >> +++ b/gcc/c/c-array-notation.c > >> @@ -229,6 +229,8 @@ fix_builtin_array_notation_fn (tree an_builtin_fn, > tree *new_var) > >> /* Fully fold any EXCESSIVE_PRECISION EXPR that can occur in the > function > >> parameter. */ > >> func_parm = c_fully_fold (func_parm, false, NULL); > >> + if (func_parm == error_mark_node) > >> + return error_mark_node; > >> > >> location = EXPR_LOCATION (an_builtin_fn); > >> > > > > You should include a testcase. > Agreed. This definitely should include a testcase. > > jeff