aboutsummaryrefslogtreecommitdiff
path: root/gcc/cp/parser.c
diff options
context:
space:
mode:
Diffstat (limited to 'gcc/cp/parser.c')
-rw-r--r--gcc/cp/parser.c62
1 files changed, 37 insertions, 25 deletions
diff --git a/gcc/cp/parser.c b/gcc/cp/parser.c
index 9de72f8..8f2d0fc 100644
--- a/gcc/cp/parser.c
+++ b/gcc/cp/parser.c
@@ -42137,7 +42137,7 @@ cp_parser_omp_ordered (cp_parser *parser, cp_token *pragma_tok,
"%<depend%> clause may only be used in compound "
"statements");
cp_parser_skip_to_pragma_eol (parser, pragma_tok);
- return false;
+ return true;
}
tree clauses
= cp_parser_omp_all_clauses (parser,
@@ -42661,7 +42661,7 @@ cp_parser_omp_cancel (cp_parser *parser, cp_token *pragma_tok)
| (OMP_CLAUSE_MASK_1 << PRAGMA_OMP_CLAUSE_SECTIONS) \
| (OMP_CLAUSE_MASK_1 << PRAGMA_OMP_CLAUSE_TASKGROUP))
-static void
+static bool
cp_parser_omp_cancellation_point (cp_parser *parser, cp_token *pragma_tok,
enum pragma_context context)
{
@@ -42683,7 +42683,7 @@ cp_parser_omp_cancellation_point (cp_parser *parser, cp_token *pragma_tok,
{
cp_parser_error (parser, "expected %<point%>");
cp_parser_skip_to_pragma_eol (parser, pragma_tok);
- return;
+ return false;
}
if (context != pragma_compound)
@@ -42695,7 +42695,7 @@ cp_parser_omp_cancellation_point (cp_parser *parser, cp_token *pragma_tok,
else
cp_parser_error (parser, "expected declaration specifiers");
cp_parser_skip_to_pragma_eol (parser, pragma_tok);
- return;
+ return true;
}
clauses = cp_parser_omp_all_clauses (parser,
@@ -42703,6 +42703,7 @@ cp_parser_omp_cancellation_point (cp_parser *parser, cp_token *pragma_tok,
"#pragma omp cancellation point",
pragma_tok);
finish_omp_cancellation_point (clauses);
+ return true;
}
/* OpenMP 4.0:
@@ -42998,7 +42999,7 @@ cp_parser_omp_target_data (cp_parser *parser, cp_token *pragma_tok, bool *if_p)
| (OMP_CLAUSE_MASK_1 << PRAGMA_OMP_CLAUSE_DEPEND) \
| (OMP_CLAUSE_MASK_1 << PRAGMA_OMP_CLAUSE_NOWAIT))
-static tree
+static bool
cp_parser_omp_target_enter_data (cp_parser *parser, cp_token *pragma_tok,
enum pragma_context context)
{
@@ -43018,7 +43019,7 @@ cp_parser_omp_target_enter_data (cp_parser *parser, cp_token *pragma_tok,
{
cp_parser_error (parser, "expected %<data%>");
cp_parser_skip_to_pragma_eol (parser, pragma_tok);
- return NULL_TREE;
+ return false;
}
if (context == pragma_stmt)
@@ -43027,7 +43028,7 @@ cp_parser_omp_target_enter_data (cp_parser *parser, cp_token *pragma_tok,
"%<#pragma %s%> may only be used in compound statements",
"omp target enter data");
cp_parser_skip_to_pragma_eol (parser, pragma_tok);
- return NULL_TREE;
+ return true;
}
tree clauses
@@ -43067,14 +43068,15 @@ cp_parser_omp_target_enter_data (cp_parser *parser, cp_token *pragma_tok,
error_at (pragma_tok->location,
"%<#pragma omp target enter data%> must contain at least "
"one %<map%> clause");
- return NULL_TREE;
+ return true;
}
tree stmt = make_node (OMP_TARGET_ENTER_DATA);
TREE_TYPE (stmt) = void_type_node;
OMP_TARGET_ENTER_DATA_CLAUSES (stmt) = clauses;
SET_EXPR_LOCATION (stmt, pragma_tok->location);
- return add_stmt (stmt);
+ add_stmt (stmt);
+ return true;
}
/* OpenMP 4.5:
@@ -43088,7 +43090,7 @@ cp_parser_omp_target_enter_data (cp_parser *parser, cp_token *pragma_tok,
| (OMP_CLAUSE_MASK_1 << PRAGMA_OMP_CLAUSE_DEPEND) \
| (OMP_CLAUSE_MASK_1 << PRAGMA_OMP_CLAUSE_NOWAIT))
-static tree
+static bool
cp_parser_omp_target_exit_data (cp_parser *parser, cp_token *pragma_tok,
enum pragma_context context)
{
@@ -43108,7 +43110,7 @@ cp_parser_omp_target_exit_data (cp_parser *parser, cp_token *pragma_tok,
{
cp_parser_error (parser, "expected %<data%>");
cp_parser_skip_to_pragma_eol (parser, pragma_tok);
- return NULL_TREE;
+ return false;
}
if (context == pragma_stmt)
@@ -43117,7 +43119,7 @@ cp_parser_omp_target_exit_data (cp_parser *parser, cp_token *pragma_tok,
"%<#pragma %s%> may only be used in compound statements",
"omp target exit data");
cp_parser_skip_to_pragma_eol (parser, pragma_tok);
- return NULL_TREE;
+ return true;
}
tree clauses
@@ -43159,14 +43161,15 @@ cp_parser_omp_target_exit_data (cp_parser *parser, cp_token *pragma_tok,
error_at (pragma_tok->location,
"%<#pragma omp target exit data%> must contain at least "
"one %<map%> clause");
- return NULL_TREE;
+ return true;
}
tree stmt = make_node (OMP_TARGET_EXIT_DATA);
TREE_TYPE (stmt) = void_type_node;
OMP_TARGET_EXIT_DATA_CLAUSES (stmt) = clauses;
SET_EXPR_LOCATION (stmt, pragma_tok->location);
- return add_stmt (stmt);
+ add_stmt (stmt);
+ return true;
}
/* OpenMP 4.0:
@@ -43190,7 +43193,7 @@ cp_parser_omp_target_update (cp_parser *parser, cp_token *pragma_tok,
"%<#pragma %s%> may only be used in compound statements",
"omp target update");
cp_parser_skip_to_pragma_eol (parser, pragma_tok);
- return false;
+ return true;
}
tree clauses
@@ -43202,7 +43205,7 @@ cp_parser_omp_target_update (cp_parser *parser, cp_token *pragma_tok,
error_at (pragma_tok->location,
"%<#pragma omp target update%> must contain at least one "
"%<from%> or %<to%> clauses");
- return false;
+ return true;
}
tree stmt = make_node (OMP_TARGET_UPDATE);
@@ -43210,7 +43213,7 @@ cp_parser_omp_target_update (cp_parser *parser, cp_token *pragma_tok,
OMP_TARGET_UPDATE_CLAUSES (stmt) = clauses;
SET_EXPR_LOCATION (stmt, pragma_tok->location);
add_stmt (stmt);
- return false;
+ return true;
}
/* OpenMP 4.0:
@@ -43364,14 +43367,12 @@ cp_parser_omp_target (cp_parser *parser, cp_token *pragma_tok,
else if (strcmp (p, "enter") == 0)
{
cp_lexer_consume_token (parser->lexer);
- cp_parser_omp_target_enter_data (parser, pragma_tok, context);
- return false;
+ return cp_parser_omp_target_enter_data (parser, pragma_tok, context);
}
else if (strcmp (p, "exit") == 0)
{
cp_lexer_consume_token (parser->lexer);
- cp_parser_omp_target_exit_data (parser, pragma_tok, context);
- return false;
+ return cp_parser_omp_target_exit_data (parser, pragma_tok, context);
}
else if (strcmp (p, "update") == 0)
{
@@ -46432,7 +46433,7 @@ cp_parser_pragma (cp_parser *parser, enum pragma_context context, bool *if_p)
cp_token *pragma_tok;
unsigned int id;
tree stmt;
- bool ret;
+ bool ret = false;
pragma_tok = cp_lexer_consume_token (parser->lexer);
gcc_assert (pragma_tok->type == CPP_PRAGMA);
@@ -46457,6 +46458,7 @@ cp_parser_pragma (cp_parser *parser, enum pragma_context context, bool *if_p)
case pragma_stmt:
error_at (pragma_tok->location, "%<#pragma %s%> may only be "
"used in compound statements", "omp barrier");
+ ret = true;
break;
default:
goto bad_stmt;
@@ -46472,6 +46474,7 @@ cp_parser_pragma (cp_parser *parser, enum pragma_context context, bool *if_p)
case pragma_stmt:
error_at (pragma_tok->location, "%<#pragma %s%> may only be "
"used in compound statements", "omp depobj");
+ ret = true;
break;
default:
goto bad_stmt;
@@ -46487,6 +46490,7 @@ cp_parser_pragma (cp_parser *parser, enum pragma_context context, bool *if_p)
case pragma_stmt:
error_at (pragma_tok->location, "%<#pragma %s%> may only be "
"used in compound statements", "omp flush");
+ ret = true;
break;
default:
goto bad_stmt;
@@ -46503,6 +46507,7 @@ cp_parser_pragma (cp_parser *parser, enum pragma_context context, bool *if_p)
error_at (pragma_tok->location,
"%<#pragma %s%> may only be used in compound statements",
"omp taskwait");
+ ret = true;
break;
default:
goto bad_stmt;
@@ -46519,6 +46524,7 @@ cp_parser_pragma (cp_parser *parser, enum pragma_context context, bool *if_p)
error_at (pragma_tok->location,
"%<#pragma %s%> may only be used in compound statements",
"omp taskyield");
+ ret = true;
break;
default:
goto bad_stmt;
@@ -46535,6 +46541,7 @@ cp_parser_pragma (cp_parser *parser, enum pragma_context context, bool *if_p)
error_at (pragma_tok->location,
"%<#pragma %s%> may only be used in compound statements",
"omp cancel");
+ ret = true;
break;
default:
goto bad_stmt;
@@ -46542,8 +46549,7 @@ cp_parser_pragma (cp_parser *parser, enum pragma_context context, bool *if_p)
break;
case PRAGMA_OMP_CANCELLATION_POINT:
- cp_parser_omp_cancellation_point (parser, pragma_tok, context);
- return false;
+ return cp_parser_omp_cancellation_point (parser, pragma_tok, context);
case PRAGMA_OMP_THREADPRIVATE:
cp_parser_omp_threadprivate (parser, pragma_tok);
@@ -46562,6 +46568,7 @@ cp_parser_pragma (cp_parser *parser, enum pragma_context context, bool *if_p)
error_at (pragma_tok->location,
"%<#pragma %s%> may only be used in compound statements",
"acc enter data");
+ ret = true;
break;
}
else if (context != pragma_compound)
@@ -46575,6 +46582,7 @@ cp_parser_pragma (cp_parser *parser, enum pragma_context context, bool *if_p)
error_at (pragma_tok->location,
"%<#pragma %s%> may only be used in compound statements",
"acc exit data");
+ ret = true;
break;
}
else if (context != pragma_compound)
@@ -46587,6 +46595,7 @@ cp_parser_pragma (cp_parser *parser, enum pragma_context context, bool *if_p)
{
error_at (pragma_tok->location,
"%<#pragma acc routine%> must be at file scope");
+ ret = true;
break;
}
cp_parser_oacc_routine (parser, pragma_tok, context);
@@ -46598,6 +46607,7 @@ cp_parser_pragma (cp_parser *parser, enum pragma_context context, bool *if_p)
error_at (pragma_tok->location,
"%<#pragma %s%> may only be used in compound statements",
"acc update");
+ ret = true;
break;
}
else if (context != pragma_compound)
@@ -46611,6 +46621,7 @@ cp_parser_pragma (cp_parser *parser, enum pragma_context context, bool *if_p)
error_at (pragma_tok->location,
"%<#pragma %s%> may only be used in compound statements",
"acc wait");
+ ret = true;
break;
}
else if (context != pragma_compound)
@@ -46657,6 +46668,7 @@ cp_parser_pragma (cp_parser *parser, enum pragma_context context, bool *if_p)
error_at (pragma_tok->location,
"%<#pragma omp requires%> may only be used at file or "
"namespace scope");
+ ret = true;
break;
}
return cp_parser_omp_requires (parser, pragma_tok);
@@ -46769,7 +46781,7 @@ cp_parser_pragma (cp_parser *parser, enum pragma_context context, bool *if_p)
}
cp_parser_skip_to_pragma_eol (parser, pragma_tok);
- return false;
+ return ret;
}
/* The interface the pragma parsers have to the lexer. */