Index: gcc/c/c-parser.c =================================================================== --- gcc/c/c-parser.c (revision 206392) +++ gcc/c/c-parser.c (working copy) @@ -7500,7 +7500,7 @@ 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"); Index: gcc/testsuite/gcc.dg/cilk-plus/cilk-plus.exp =================================================================== --- gcc/testsuite/gcc.dg/cilk-plus/cilk-plus.exp (revision 206392) +++ gcc/testsuite/gcc.dg/cilk-plus/cilk-plus.exp (working copy) @@ -51,13 +51,13 @@ 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" " " Index: gcc/testsuite/g++.dg/cilk-plus/cilk-plus.exp =================================================================== --- gcc/testsuite/g++.dg/cilk-plus/cilk-plus.exp (revision 206392) +++ gcc/testsuite/g++.dg/cilk-plus/cilk-plus.exp (working copy) @@ -74,12 +74,12 @@ 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 Index: gcc/testsuite/c-c++-common/cilk-plus/CK/spawnee_inline.c =================================================================== --- gcc/testsuite/c-c++-common/cilk-plus/CK/spawnee_inline.c (revision 206392) +++ gcc/testsuite/c-c++-common/cilk-plus/CK/spawnee_inline.c (working copy) @@ -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 Index: gcc/testsuite/c-c++-common/cilk-plus/CK/varargs_test.c =================================================================== --- gcc/testsuite/c-c++-common/cilk-plus/CK/varargs_test.c (revision 206392) +++ gcc/testsuite/c-c++-common/cilk-plus/CK/varargs_test.c (working copy) @@ -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 Index: gcc/testsuite/c-c++-common/cilk-plus/CK/steal_check.c =================================================================== --- gcc/testsuite/c-c++-common/cilk-plus/CK/steal_check.c (revision 206392) +++ gcc/testsuite/c-c++-common/cilk-plus/CK/steal_check.c (working copy) @@ -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 *); Index: gcc/testsuite/c-c++-common/cilk-plus/CK/spawner_inline.c =================================================================== --- gcc/testsuite/c-c++-common/cilk-plus/CK/spawner_inline.c (revision 206392) +++ gcc/testsuite/c-c++-common/cilk-plus/CK/spawner_inline.c (working copy) @@ -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 Index: gcc/testsuite/c-c++-common/cilk-plus/CK/spawning_arg.c =================================================================== --- gcc/testsuite/c-c++-common/cilk-plus/CK/spawning_arg.c (revision 206392) +++ gcc/testsuite/c-c++-common/cilk-plus/CK/spawning_arg.c (working copy) @@ -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) { Index: gcc/testsuite/c-c++-common/cilk-plus/CK/invalid_spawns.c =================================================================== --- gcc/testsuite/c-c++-common/cilk-plus/CK/invalid_spawns.c (revision 206392) +++ gcc/testsuite/c-c++-common/cilk-plus/CK/invalid_spawns.c (working copy) @@ -1,3 +1,5 @@ +/* { dg-options "-fcilkplus" } */ + extern int foo (); int bar = _Cilk_spawn foo (); /* { dg-error "may only be used inside a function" } */ Index: gcc/testsuite/c-c++-common/cilk-plus/CK/pr59631.c =================================================================== --- gcc/testsuite/c-c++-common/cilk-plus/CK/pr59631.c (revision 0) +++ gcc/testsuite/c-c++-common/cilk-plus/CK/pr59631.c (revision 0) @@ -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" } */ +} Index: gcc/cp/parser.c =================================================================== --- gcc/cp/parser.c (revision 206392) +++ gcc/cp/parser.c (working copy) @@ -5803,8 +5803,14 @@ 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"); postfix_expression = error_mark_node; @@ -5830,8 +5836,8 @@ 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;