From 9a74f20cd7ebc15e926de399d133103466e68c78 Mon Sep 17 00:00:00 2001 From: "Balaji V. Iyer" Date: Thu, 9 Jan 2014 13:37:41 +0000 Subject: [PATCH] re PR c++/59631 (ICE using _Cilk_spawn without -fcilkplus) Fix for PR c++/59631. +++ gcc/cp/ChangeLog +2014-01-09 Balaji V. Iyer + + 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 + + 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 + + PR c++/59631 + * c-parser.c (c_parser_postfix_expression): Replaced consecutive if + statements with if-elseif statements. + From-SVN: r206463 --- gcc/c/ChangeLog | 6 ++++++ gcc/c/c-parser.c | 2 +- gcc/cp/ChangeLog | 8 ++++++++ gcc/cp/parser.c | 12 +++++++++--- gcc/testsuite/ChangeLog | 14 ++++++++++++++ gcc/testsuite/c-c++-common/cilk-plus/CK/invalid_spawns.c | 2 ++ gcc/testsuite/c-c++-common/cilk-plus/CK/pr59631.c | 15 +++++++++++++++ gcc/testsuite/c-c++-common/cilk-plus/CK/spawnee_inline.c | 2 +- gcc/testsuite/c-c++-common/cilk-plus/CK/spawner_inline.c | 2 +- gcc/testsuite/c-c++-common/cilk-plus/CK/spawning_arg.c | 2 +- gcc/testsuite/c-c++-common/cilk-plus/CK/steal_check.c | 2 +- gcc/testsuite/c-c++-common/cilk-plus/CK/varargs_test.c | 2 +- gcc/testsuite/g++.dg/cilk-plus/cilk-plus.exp | 14 +++++++------- gcc/testsuite/gcc.dg/cilk-plus/cilk-plus.exp | 12 ++++++------ 14 files changed, 73 insertions(+), 22 deletions(-) create mode 100644 gcc/testsuite/c-c++-common/cilk-plus/CK/pr59631.c diff --git a/gcc/c/ChangeLog b/gcc/c/ChangeLog index 917453b..d3b338a 100644 --- a/gcc/c/ChangeLog +++ b/gcc/c/ChangeLog @@ -1,3 +1,9 @@ +2014-01-09 Balaji V. Iyer + + PR c++/59631 + * c-parser.c (c_parser_postfix_expression): Replaced consecutive if + statements with if-elseif statements. + 2014-01-06 Marek Polacek PR c/57773 diff --git a/gcc/c/c-parser.c b/gcc/c/c-parser.c index f73df08..4490210 100644 --- a/gcc/c/c-parser.c +++ b/gcc/c/c-parser.c @@ -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"); diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index b6ee875..9213de7 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,3 +1,11 @@ +2014-01-09 Balaji V. Iyer + + 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 PR c++/59614 diff --git a/gcc/cp/parser.c b/gcc/cp/parser.c index 8c61520..c3016bc 100644 --- a/gcc/cp/parser.c +++ b/gcc/cp/parser.c @@ -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; diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index de7990b..52d55b8 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,17 @@ +2014-01-09 Balaji V. Iyer + + 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 PR tree-optimization/59715 diff --git a/gcc/testsuite/c-c++-common/cilk-plus/CK/invalid_spawns.c b/gcc/testsuite/c-c++-common/cilk-plus/CK/invalid_spawns.c index 90dd5c1..ba9e619 100644 --- a/gcc/testsuite/c-c++-common/cilk-plus/CK/invalid_spawns.c +++ b/gcc/testsuite/c-c++-common/cilk-plus/CK/invalid_spawns.c @@ -1,3 +1,5 @@ +/* { dg-options "-fcilkplus" } */ + extern int foo (); int bar = _Cilk_spawn foo (); /* { dg-error "may only be used inside a function" } */ diff --git a/gcc/testsuite/c-c++-common/cilk-plus/CK/pr59631.c b/gcc/testsuite/c-c++-common/cilk-plus/CK/pr59631.c new file mode 100644 index 0000000..389ee7c --- /dev/null +++ b/gcc/testsuite/c-c++-common/cilk-plus/CK/pr59631.c @@ -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" } */ +} diff --git a/gcc/testsuite/c-c++-common/cilk-plus/CK/spawnee_inline.c b/gcc/testsuite/c-c++-common/cilk-plus/CK/spawnee_inline.c index 8060c6c..233a371 100644 --- a/gcc/testsuite/c-c++-common/cilk-plus/CK/spawnee_inline.c +++ b/gcc/testsuite/c-c++-common/cilk-plus/CK/spawnee_inline.c @@ -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 #include diff --git a/gcc/testsuite/c-c++-common/cilk-plus/CK/spawner_inline.c b/gcc/testsuite/c-c++-common/cilk-plus/CK/spawner_inline.c index eab9e42..55ec223 100644 --- a/gcc/testsuite/c-c++-common/cilk-plus/CK/spawner_inline.c +++ b/gcc/testsuite/c-c++-common/cilk-plus/CK/spawner_inline.c @@ -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 #define DEFAULT_VALUE 30 diff --git a/gcc/testsuite/c-c++-common/cilk-plus/CK/spawning_arg.c b/gcc/testsuite/c-c++-common/cilk-plus/CK/spawning_arg.c index ac37952..95e6cab 100644 --- a/gcc/testsuite/c-c++-common/cilk-plus/CK/spawning_arg.c +++ b/gcc/testsuite/c-c++-common/cilk-plus/CK/spawning_arg.c @@ -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) { diff --git a/gcc/testsuite/c-c++-common/cilk-plus/CK/steal_check.c b/gcc/testsuite/c-c++-common/cilk-plus/CK/steal_check.c index 21d6797..6e28765 100644 --- a/gcc/testsuite/c-c++-common/cilk-plus/CK/steal_check.c +++ b/gcc/testsuite/c-c++-common/cilk-plus/CK/steal_check.c @@ -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 extern void __cilkrts_set_param (char *, char *); diff --git a/gcc/testsuite/c-c++-common/cilk-plus/CK/varargs_test.c b/gcc/testsuite/c-c++-common/cilk-plus/CK/varargs_test.c index ab5d63a..2714600 100644 --- a/gcc/testsuite/c-c++-common/cilk-plus/CK/varargs_test.c +++ b/gcc/testsuite/c-c++-common/cilk-plus/CK/varargs_test.c @@ -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 #include diff --git a/gcc/testsuite/g++.dg/cilk-plus/cilk-plus.exp b/gcc/testsuite/g++.dg/cilk-plus/cilk-plus.exp index e201fd2..fc353f5 100644 --- a/gcc/testsuite/g++.dg/cilk-plus/cilk-plus.exp +++ b/gcc/testsuite/g++.dg/cilk-plus/cilk-plus.exp @@ -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 diff --git a/gcc/testsuite/gcc.dg/cilk-plus/cilk-plus.exp b/gcc/testsuite/gcc.dg/cilk-plus/cilk-plus.exp index c370ec6..c80baf9 100644 --- a/gcc/testsuite/gcc.dg/cilk-plus/cilk-plus.exp +++ b/gcc/testsuite/gcc.dg/cilk-plus/cilk-plus.exp @@ -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" " " -- 2.7.4