Commit 9a74f20c by Balaji V. Iyer Committed by Balaji V. Iyer

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
parent 63124c48
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> 2014-01-06 Marek Polacek <polacek@redhat.com>
PR c/57773 PR c/57773
......
...@@ -7500,7 +7500,7 @@ c_parser_postfix_expression (c_parser *parser) ...@@ -7500,7 +7500,7 @@ c_parser_postfix_expression (c_parser *parser)
expr = c_parser_postfix_expression (parser); expr = c_parser_postfix_expression (parser);
expr.value = error_mark_node; 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 " error_at (loc, "consecutive %<_Cilk_spawn%> keywords "
"are not permitted"); "are not permitted");
......
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> 2014-01-08 Jason Merrill <jason@redhat.com>
PR c++/59614 PR c++/59614
......
...@@ -5803,7 +5803,13 @@ cp_parser_postfix_expression (cp_parser *parser, bool address_p, bool cast_p, ...@@ -5803,7 +5803,13 @@ cp_parser_postfix_expression (cp_parser *parser, bool address_p, bool cast_p,
postfix_expression = postfix_expression =
cp_parser_postfix_expression (parser, false, false, cp_parser_postfix_expression (parser, false, false,
false, false, &idk); 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 " error_at (token->location, "consecutive %<_Cilk_spawn%> keywords "
"are not permitted"); "are not permitted");
...@@ -5830,8 +5836,8 @@ cp_parser_postfix_expression (cp_parser *parser, bool address_p, bool cast_p, ...@@ -5830,8 +5836,8 @@ cp_parser_postfix_expression (cp_parser *parser, bool address_p, bool cast_p,
finish_expr_stmt (sync_expr); finish_expr_stmt (sync_expr);
} }
else else
error_at (input_location, "_Cilk_sync cannot be used without enabling " error_at (token->location, "-fcilkplus must be enabled to use"
"Cilk Plus"); " %<_Cilk_sync%>");
cp_lexer_consume_token (parser->lexer); cp_lexer_consume_token (parser->lexer);
break; break;
......
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> 2014-01-09 Richard Biener <rguenther@suse.de>
PR tree-optimization/59715 PR tree-optimization/59715
......
/* { dg-options "-fcilkplus" } */
extern int foo (); extern int foo ();
int bar = _Cilk_spawn foo (); /* { dg-error "may only be used inside a function" } */ int bar = _Cilk_spawn foo (); /* { dg-error "may only be used inside a function" } */
......
/* { 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" } */
}
/* { dg-do run { target { i?86-*-* x86_64-*-* } } } */ /* { dg-do run { target { i?86-*-* x86_64-*-* } } } */
/* { dg-options "-fcilkplus -w" } */ /* { 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 <stdio.h>
#include <stdlib.h> #include <stdlib.h>
......
/* { dg-do run { target { i?86-*-* x86_64-*-* } } } */ /* { dg-do run { target { i?86-*-* x86_64-*-* } } } */
/* { dg-options "-fcilkplus" } */ /* { dg-options "-fcilkplus" } */
/* { dg-options "-lcilkrts" { target { i?86-*-* x86_64-*-* } } } */ /* { dg-additional-options "-lcilkrts" { target { i?86-*-* x86_64-*-* } } } */
#include <stdlib.h> #include <stdlib.h>
#define DEFAULT_VALUE 30 #define DEFAULT_VALUE 30
......
/* { dg-do run { target { i?86-*-* x86_64-*-* } } } */ /* { dg-do run { target { i?86-*-* x86_64-*-* } } } */
/* { dg-options "-fcilkplus" } */ /* { 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) void f0(volatile int *steal_flag)
{ {
......
/* { dg-do run { target { i?86-*-* x86_64-*-* } } } */ /* { dg-do run { target { i?86-*-* x86_64-*-* } } } */
/* { dg-options "-fcilkplus" } */ /* { 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> // #include <cilk/cilk_api.h>
extern void __cilkrts_set_param (char *, char *); extern void __cilkrts_set_param (char *, char *);
......
/* { dg-do run { target { i?86-*-* x86_64-*-* } } } */ /* { dg-do run { target { i?86-*-* x86_64-*-* } } } */
/* { dg-options "-fcilkplus" } */ /* { dg-options "-fcilkplus" } */
/* { dg-options "-lcilkrts" { target { i?86-*-* x86_64-*-* } } } */ /* { dg-additional-options "-lcilkrts" { target { i?86-*-* x86_64-*-* } } } */
#include <stdarg.h> #include <stdarg.h>
#include <stdlib.h> #include <stdlib.h>
......
...@@ -74,12 +74,12 @@ dg-runtest [lsort [glob -nocomplain $srcdir/g++.dg/cilk-plus/CK/*.cc]] " -g -O3 ...@@ -74,12 +74,12 @@ dg-runtest [lsort [glob -nocomplain $srcdir/g++.dg/cilk-plus/CK/*.cc]] " -g -O3
dg-finish dg-finish
dg-init 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]] " " " "
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]] " -O1 " " "
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]] " -O2 " " "
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]] " -O3 " " "
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 " " "
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 -O2 " " "
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]] " -g -O3 " " "
dg-finish dg-finish
unset TEST_EXTRA_LIBS unset TEST_EXTRA_LIBS
...@@ -51,13 +51,13 @@ dg-runtest [lsort [glob -nocomplain $srcdir/c-c++-common/cilk-plus/AN/*.c]] " -f ...@@ -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 -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/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]] " -g " " "
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]] " -O1 " " "
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 -std=c99 " " "
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]] " -O2 -ftree-vectorize " " "
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]] " -O3 -g " " "
if { [check_effective_target_lto] } { 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" " " dg-runtest [lsort [glob -nocomplain $srcdir/c-c++-common/cilk-plus/SE/*.c]] " -g" " "
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment