re PR c++/60189 (ICE with invalid use of _Cilk_sync)
gcc/cp PR c/60189 * parser.c (cp_parser_postfix_expression): Move handling of cilk_sync from here to... (cp_parser_statement): ...here. Make sure only semicolon can go after Cilk_sync. gcc/testsuite PR c++/60189 * c-c++-common/cilk-plus/CK/invalid_sync.cÑ: New test. From-SVN: r210678
This commit is contained in:
parent
3aaf05290a
commit
c3d96270fc
@ -1,3 +1,11 @@
|
|||||||
|
2014-05-21 Igor Zamyatin <igor.zamyatin@intel.com>
|
||||||
|
|
||||||
|
PR c/60189
|
||||||
|
* parser.c (cp_parser_postfix_expression): Move handling of cilk_sync
|
||||||
|
from here to...
|
||||||
|
(cp_parser_statement): ...here. Make sure only semicolon can go after
|
||||||
|
Cilk_sync.
|
||||||
|
|
||||||
2014-05-20 Paolo Carlini <paolo.carlini@oracle.com>
|
2014-05-20 Paolo Carlini <paolo.carlini@oracle.com>
|
||||||
|
|
||||||
PR c++/58753
|
PR c++/58753
|
||||||
|
@ -5845,20 +5845,6 @@ cp_parser_postfix_expression (cp_parser *parser, bool address_p, bool cast_p,
|
|||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
case RID_CILK_SYNC:
|
|
||||||
if (flag_cilkplus)
|
|
||||||
{
|
|
||||||
tree sync_expr = build_cilk_sync ();
|
|
||||||
SET_EXPR_LOCATION (sync_expr,
|
|
||||||
cp_lexer_peek_token (parser->lexer)->location);
|
|
||||||
finish_expr_stmt (sync_expr);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
error_at (token->location, "-fcilkplus must be enabled to use"
|
|
||||||
" %<_Cilk_sync%>");
|
|
||||||
cp_lexer_consume_token (parser->lexer);
|
|
||||||
break;
|
|
||||||
|
|
||||||
case RID_BUILTIN_SHUFFLE:
|
case RID_BUILTIN_SHUFFLE:
|
||||||
{
|
{
|
||||||
@ -9414,6 +9400,24 @@ cp_parser_statement (cp_parser* parser, tree in_statement_expr,
|
|||||||
statement = cp_parser_jump_statement (parser);
|
statement = cp_parser_jump_statement (parser);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case RID_CILK_SYNC:
|
||||||
|
cp_lexer_consume_token (parser->lexer);
|
||||||
|
if (flag_cilkplus)
|
||||||
|
{
|
||||||
|
tree sync_expr = build_cilk_sync ();
|
||||||
|
SET_EXPR_LOCATION (sync_expr,
|
||||||
|
token->location);
|
||||||
|
statement = finish_expr_stmt (sync_expr);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
error_at (token->location, "-fcilkplus must be enabled to use"
|
||||||
|
" %<_Cilk_sync%>");
|
||||||
|
statement = error_mark_node;
|
||||||
|
}
|
||||||
|
cp_parser_require (parser, CPP_SEMICOLON, RT_SEMICOLON);
|
||||||
|
break;
|
||||||
|
|
||||||
/* Objective-C++ exception-handling constructs. */
|
/* Objective-C++ exception-handling constructs. */
|
||||||
case RID_AT_TRY:
|
case RID_AT_TRY:
|
||||||
case RID_AT_CATCH:
|
case RID_AT_CATCH:
|
||||||
|
@ -1,3 +1,8 @@
|
|||||||
|
2014-05-21 Igor Zamyatin <igor.zamyatin@intel.com>
|
||||||
|
|
||||||
|
PR c++/60189
|
||||||
|
* c-c++-common/cilk-plus/CK/invalid_sync.cÑ: New test.
|
||||||
|
|
||||||
2014-05-20 Jan Hubicka <hubicka@ucw.cz>
|
2014-05-20 Jan Hubicka <hubicka@ucw.cz>
|
||||||
|
|
||||||
PR tree-optimization/60899
|
PR tree-optimization/60899
|
||||||
|
9
gcc/testsuite/c-c++-common/cilk-plus/CK/invalid_sync.cc
Normal file
9
gcc/testsuite/c-c++-common/cilk-plus/CK/invalid_sync.cc
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
/* PR c/60189 */
|
||||||
|
/* { dg-do compile } */
|
||||||
|
/* { dg-options "-fcilkplus" } */
|
||||||
|
|
||||||
|
int main (void)
|
||||||
|
{
|
||||||
|
_Cilk_sync return; /* { dg-error " expected ';' before 'return'" } */
|
||||||
|
return 0;
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user