re PR c++/59631 (ICE using _Cilk_spawn without -fcilkplus)

Fix for PR c++/59631.
+++ gcc/cp/ChangeLog
+2014-01-09  Balaji V. Iyer  <balaji.v.iyer@intel.com>
+
+       PR c++/59631
+       * parser.c (cp_parser_postfix_expression): Added a new if-statement
+       and replaced an existing if-statement with else-if statement.
+       Changed an existing error message wording to match the one from the C
+       parser.
+

+++ gcc/testsuite/ChangeLog 
+2014-01-09  Balaji V. Iyer  <balaji.v.iyer@intel.com>
+
+       PR c++/59631
+       * gcc.dg/cilk-plus/cilk-plus.exp: Removed "-fcilkplus" from flags list.
+       * g++.dg/cilk-plus/cilk-plus.exp: Likewise.
+       * c-c++-common/cilk-plus/CK/spawnee_inline.c: Replaced second dg-option
+       with dg-additional-options.
+       * c-c++-common/cilk-plus/CK/varargs_test.c: Likewise.
+       * c-c++-common/cilk-plus/CK/steal_check.c: Likewise.
+       * c-c++-common/cilk-plus/CK/spawner_inline.c: Likewise.
+       * c-c++-common/cilk-plus/CK/spawning_arg.c: Likewise.
+       * c-c++-common/cilk-plus/CK/invalid_spawns.c: Added a dg-options tag.
+       * c-c++-common/cilk-plus/CK/pr59631.c: New testcase.
+

gcc/c/ChangeLog
+2014-01-09  Balaji V. Iyer  <balaji.v.iyer@intel.com>
+
+       PR c++/59631
+       * c-parser.c (c_parser_postfix_expression): Replaced consecutive if
+       statements with if-elseif statements.
+

From-SVN: r206463
This commit is contained in:
Balaji V. Iyer 2014-01-09 13:37:41 +00:00 committed by Balaji V. Iyer
parent 63124c486d
commit 9a74f20cd7
14 changed files with 73 additions and 22 deletions

View file

@ -1,3 +1,9 @@
2014-01-09 Balaji V. Iyer <balaji.v.iyer@intel.com>
PR c++/59631
* c-parser.c (c_parser_postfix_expression): Replaced consecutive if
statements with if-elseif statements.
2014-01-06 Marek Polacek <polacek@redhat.com>
PR c/57773

View file

@ -7500,7 +7500,7 @@ c_parser_postfix_expression (c_parser *parser)
expr = c_parser_postfix_expression (parser);
expr.value = error_mark_node;
}
if (c_parser_peek_token (parser)->keyword == RID_CILK_SPAWN)
else if (c_parser_peek_token (parser)->keyword == RID_CILK_SPAWN)
{
error_at (loc, "consecutive %<_Cilk_spawn%> keywords "
"are not permitted");

View file

@ -1,3 +1,11 @@
2014-01-09 Balaji V. Iyer <balaji.v.iyer@intel.com>
PR c++/59631
* parser.c (cp_parser_postfix_expression): Added a new if-statement
and replaced an existing if-statement with else-if statement.
Changed an existing error message wording to match the one from the C
parser.
2014-01-08 Jason Merrill <jason@redhat.com>
PR c++/59614

View file

@ -5803,7 +5803,13 @@ cp_parser_postfix_expression (cp_parser *parser, bool address_p, bool cast_p,
postfix_expression =
cp_parser_postfix_expression (parser, false, false,
false, false, &idk);
if (saved_in_statement & IN_CILK_SPAWN)
if (!flag_enable_cilkplus)
{
error_at (token->location, "-fcilkplus must be enabled to use"
" %<_Cilk_spawn%>");
cfun->calls_cilk_spawn = 0;
}
else if (saved_in_statement & IN_CILK_SPAWN)
{
error_at (token->location, "consecutive %<_Cilk_spawn%> keywords "
"are not permitted");
@ -5830,8 +5836,8 @@ cp_parser_postfix_expression (cp_parser *parser, bool address_p, bool cast_p,
finish_expr_stmt (sync_expr);
}
else
error_at (input_location, "_Cilk_sync cannot be used without enabling "
"Cilk Plus");
error_at (token->location, "-fcilkplus must be enabled to use"
" %<_Cilk_sync%>");
cp_lexer_consume_token (parser->lexer);
break;

View file

@ -1,3 +1,17 @@
2014-01-09 Balaji V. Iyer <balaji.v.iyer@intel.com>
PR c++/59631
* gcc.dg/cilk-plus/cilk-plus.exp: Removed "-fcilkplus" from flags list.
* g++.dg/cilk-plus/cilk-plus.exp: Likewise.
* c-c++-common/cilk-plus/CK/spawnee_inline.c: Replaced second dg-option
with dg-additional-options.
* c-c++-common/cilk-plus/CK/varargs_test.c: Likewise.
* c-c++-common/cilk-plus/CK/steal_check.c: Likewise.
* c-c++-common/cilk-plus/CK/spawner_inline.c: Likewise.
* c-c++-common/cilk-plus/CK/spawning_arg.c: Likewise.
* c-c++-common/cilk-plus/CK/invalid_spawns.c: Added a dg-options tag.
* c-c++-common/cilk-plus/CK/pr59631.c: New testcase.
2014-01-09 Richard Biener <rguenther@suse.de>
PR tree-optimization/59715

View file

@ -1,3 +1,5 @@
/* { dg-options "-fcilkplus" } */
extern int foo ();
int bar = _Cilk_spawn foo (); /* { dg-error "may only be used inside a function" } */

View file

@ -0,0 +1,15 @@
/* { dg-do compile } */
/* { dg-options " " } */
/* Tests the errors when Cilk keywords are used without -fcilkplus. */
void foo()
{
_Cilk_spawn foo(); /* { dg-error "must be enabled to use" } */
}
void foo2 ()
{
_Cilk_spawn foo (); /* { dg-error "must be enabled to use" } */
_Cilk_sync; /* { dg-error "must be enabled to use" } */
}

View file

@ -1,6 +1,6 @@
/* { dg-do run { target { i?86-*-* x86_64-*-* } } } */
/* { dg-options "-fcilkplus -w" } */
/* { dg-options "-lcilkrts" { target { i?86-*-* x86_64-*-* } } } */
/* { dg-additional-options "-lcilkrts" { target { i?86-*-* x86_64-*-* } } } */
#include <stdio.h>
#include <stdlib.h>

View file

@ -1,6 +1,6 @@
/* { dg-do run { target { i?86-*-* x86_64-*-* } } } */
/* { dg-options "-fcilkplus" } */
/* { dg-options "-lcilkrts" { target { i?86-*-* x86_64-*-* } } } */
/* { dg-additional-options "-lcilkrts" { target { i?86-*-* x86_64-*-* } } } */
#include <stdlib.h>
#define DEFAULT_VALUE 30

View file

@ -1,6 +1,6 @@
/* { dg-do run { target { i?86-*-* x86_64-*-* } } } */
/* { dg-options "-fcilkplus" } */
/* { dg-options "-lcilkrts" { target { i?86-*-* x86_64-*-* } } } */
/* { dg-additional-options "-lcilkrts" { target { i?86-*-* x86_64-*-* } } } */
void f0(volatile int *steal_flag)
{

View file

@ -1,6 +1,6 @@
/* { dg-do run { target { i?86-*-* x86_64-*-* } } } */
/* { dg-options "-fcilkplus" } */
/* { dg-options "-lcilkrts" { target { i?86-*-* x86_64-*-* } } } */
/* { dg-additional-options "-lcilkrts" { target { i?86-*-* x86_64-*-* } } } */
// #include <cilk/cilk_api.h>
extern void __cilkrts_set_param (char *, char *);

View file

@ -1,6 +1,6 @@
/* { dg-do run { target { i?86-*-* x86_64-*-* } } } */
/* { dg-options "-fcilkplus" } */
/* { dg-options "-lcilkrts" { target { i?86-*-* x86_64-*-* } } } */
/* { dg-additional-options "-lcilkrts" { target { i?86-*-* x86_64-*-* } } } */
#include <stdarg.h>
#include <stdlib.h>

View file

@ -74,12 +74,12 @@ dg-runtest [lsort [glob -nocomplain $srcdir/g++.dg/cilk-plus/CK/*.cc]] " -g -O3
dg-finish
dg-init
dg-runtest [lsort [glob -nocomplain $srcdir/c-c++-common/cilk-plus/CK/*.c]] " -fcilkplus" " "
dg-runtest [lsort [glob -nocomplain $srcdir/c-c++-common/cilk-plus/CK/*.c]] " -O1 -fcilkplus" " "
dg-runtest [lsort [glob -nocomplain $srcdir/c-c++-common/cilk-plus/CK/*.c]] " -O2 -fcilkplus" " "
dg-runtest [lsort [glob -nocomplain $srcdir/c-c++-common/cilk-plus/CK/*.c]] " -O3 -fcilkplus" " "
dg-runtest [lsort [glob -nocomplain $srcdir/c-c++-common/cilk-plus/CK/*.c]] " -g -fcilkplus" " "
dg-runtest [lsort [glob -nocomplain $srcdir/c-c++-common/cilk-plus/CK/*.c]] " -g -O2 -fcilkplus" " "
dg-runtest [lsort [glob -nocomplain $srcdir/c-c++-common/cilk-plus/CK/*.c]] " -g -O3 -fcilkplus" " "
dg-runtest [lsort [glob -nocomplain $srcdir/c-c++-common/cilk-plus/CK/*.c]] " " " "
dg-runtest [lsort [glob -nocomplain $srcdir/c-c++-common/cilk-plus/CK/*.c]] " -O1 " " "
dg-runtest [lsort [glob -nocomplain $srcdir/c-c++-common/cilk-plus/CK/*.c]] " -O2 " " "
dg-runtest [lsort [glob -nocomplain $srcdir/c-c++-common/cilk-plus/CK/*.c]] " -O3 " " "
dg-runtest [lsort [glob -nocomplain $srcdir/c-c++-common/cilk-plus/CK/*.c]] " -g " " "
dg-runtest [lsort [glob -nocomplain $srcdir/c-c++-common/cilk-plus/CK/*.c]] " -g -O2 " " "
dg-runtest [lsort [glob -nocomplain $srcdir/c-c++-common/cilk-plus/CK/*.c]] " -g -O3 " " "
dg-finish
unset TEST_EXTRA_LIBS

View file

@ -51,13 +51,13 @@ dg-runtest [lsort [glob -nocomplain $srcdir/c-c++-common/cilk-plus/AN/*.c]] " -f
dg-runtest [lsort [glob -nocomplain $srcdir/c-c++-common/cilk-plus/AN/*.c]] " -fcilkplus -O3 -std=c99" " "
dg-runtest [lsort [glob -nocomplain $srcdir/c-c++-common/cilk-plus/AN/*.c]] " -fcilkplus -g -O0 -std=c99" " "
dg-runtest [lsort [glob -nocomplain $srcdir/c-c++-common/cilk-plus/CK/*.c]] " -g -fcilkplus" " "
dg-runtest [lsort [glob -nocomplain $srcdir/c-c++-common/cilk-plus/CK/*.c]] " -O1 -fcilkplus" " "
dg-runtest [lsort [glob -nocomplain $srcdir/c-c++-common/cilk-plus/CK/*.c]] " -O2 -std=c99 -fcilkplus" " "
dg-runtest [lsort [glob -nocomplain $srcdir/c-c++-common/cilk-plus/CK/*.c]] " -O2 -ftree-vectorize -fcilkplus" " "
dg-runtest [lsort [glob -nocomplain $srcdir/c-c++-common/cilk-plus/CK/*.c]] " -O3 -g -fcilkplus" " "
dg-runtest [lsort [glob -nocomplain $srcdir/c-c++-common/cilk-plus/CK/*.c]] " -g " " "
dg-runtest [lsort [glob -nocomplain $srcdir/c-c++-common/cilk-plus/CK/*.c]] " -O1 " " "
dg-runtest [lsort [glob -nocomplain $srcdir/c-c++-common/cilk-plus/CK/*.c]] " -O2 -std=c99 " " "
dg-runtest [lsort [glob -nocomplain $srcdir/c-c++-common/cilk-plus/CK/*.c]] " -O2 -ftree-vectorize " " "
dg-runtest [lsort [glob -nocomplain $srcdir/c-c++-common/cilk-plus/CK/*.c]] " -O3 -g " " "
if { [check_effective_target_lto] } {
dg-runtest [lsort [glob -nocomplain $srcdir/c-c++-common/cilk-plus/CK/*.c]] " -O3 -flto -g -fcilkplus" " "
dg-runtest [lsort [glob -nocomplain $srcdir/c-c++-common/cilk-plus/CK/*.c]] " -O3 -flto -g " " "
}
dg-runtest [lsort [glob -nocomplain $srcdir/c-c++-common/cilk-plus/SE/*.c]] " -g" " "