diff options
Diffstat (limited to 'gcc/c-typeck.c')
-rw-r--r-- | gcc/c-typeck.c | 34 |
1 files changed, 34 insertions, 0 deletions
diff --git a/gcc/c-typeck.c b/gcc/c-typeck.c index b52a349ac6f..23880d16a43 100644 --- a/gcc/c-typeck.c +++ b/gcc/c-typeck.c @@ -8681,6 +8681,8 @@ c_begin_omp_parallel (void) return block; } +/* Generate OMP_PARALLEL, with CLAUSES and BLOCK as its compound statement. */ + tree c_finish_omp_parallel (tree clauses, tree block) { @@ -8696,6 +8698,36 @@ c_finish_omp_parallel (tree clauses, tree block) return add_stmt (stmt); } +/* Like c_begin_compound_stmt, except force the retention of the BLOCK. */ + +tree +c_begin_omp_task (void) +{ + tree block; + + keep_next_level (); + block = c_begin_compound_stmt (true); + + return block; +} + +/* Generate OMP_TASK, with CLAUSES and BLOCK as its compound statement. */ + +tree +c_finish_omp_task (tree clauses, tree block) +{ + tree stmt; + + block = c_end_compound_stmt (block, true); + + stmt = make_node (OMP_TASK); + TREE_TYPE (stmt) = void_type_node; + OMP_TASK_CLAUSES (stmt) = clauses; + OMP_TASK_BODY (stmt) = block; + + return add_stmt (stmt); +} + /* For all elements of CLAUSES, validate them vs OpenMP constraints. Remove any elements from the list that are invalid. */ @@ -8856,6 +8888,8 @@ c_finish_omp_clauses (tree clauses) case OMP_CLAUSE_NOWAIT: case OMP_CLAUSE_ORDERED: case OMP_CLAUSE_DEFAULT: + case OMP_CLAUSE_UNTIED: + case OMP_CLAUSE_COLLAPSE: pc = &OMP_CLAUSE_CHAIN (c); continue; |