mirror of
git://gcc.gnu.org/git/gcc.git
synced 2025-01-10 16:55:21 +08:00
Add OMP_STANDALONE_CLAUSES.
gcc/ * tree.h (OMP_STANDALONE_CLAUSES): New macro. * gimplify.c (gimplify_omp_workshare): Use it. gcc/c/ * c-parser.c (c_parser_oacc_enter_exit_data): Use OMP_STANDALONE_CLAUSES. gcc/cp/ * parser.c (cp_parser_oacc_enter_exit_data): Use OMP_STANDALONE_CLAUSES. From-SVN: r222580
This commit is contained in:
parent
f970a17d6f
commit
b811915de1
@ -1,3 +1,8 @@
|
||||
2015-04-29 Thomas Schwinge <thomas@codesourcery.com>
|
||||
|
||||
* tree.h (OMP_STANDALONE_CLAUSES): New macro.
|
||||
* gimplify.c (gimplify_omp_workshare): Use it.
|
||||
|
||||
2015-04-29 Richard Sandiford <richard.sandiford@arm.com>
|
||||
|
||||
* Makefile.in (build/genrecog.o): Depend on inchash.h.
|
||||
|
@ -1,3 +1,8 @@
|
||||
2015-04-29 Thomas Schwinge <thomas@codesourcery.com>
|
||||
|
||||
* c-parser.c (c_parser_oacc_enter_exit_data): Use
|
||||
OMP_STANDALONE_CLAUSES.
|
||||
|
||||
2015-04-28 Marek Polacek <polacek@redhat.com>
|
||||
|
||||
* c-parser.c (c_parser_binary_expression): Remove duplicate line.
|
||||
|
@ -12154,10 +12154,7 @@ c_parser_oacc_enter_exit_data (c_parser *parser, bool enter)
|
||||
|
||||
stmt = enter ? make_node (OACC_ENTER_DATA) : make_node (OACC_EXIT_DATA);
|
||||
TREE_TYPE (stmt) = void_type_node;
|
||||
if (enter)
|
||||
OACC_ENTER_DATA_CLAUSES (stmt) = clauses;
|
||||
else
|
||||
OACC_EXIT_DATA_CLAUSES (stmt) = clauses;
|
||||
OMP_STANDALONE_CLAUSES (stmt) = clauses;
|
||||
SET_EXPR_LOCATION (stmt, loc);
|
||||
add_stmt (stmt);
|
||||
}
|
||||
|
@ -1,3 +1,8 @@
|
||||
2015-04-29 Thomas Schwinge <thomas@codesourcery.com>
|
||||
|
||||
* parser.c (cp_parser_oacc_enter_exit_data): Use
|
||||
OMP_STANDALONE_CLAUSES.
|
||||
|
||||
2015-04-29 Paolo Carlini <paolo.carlini@oracle.com>
|
||||
|
||||
PR c++/64667
|
||||
|
@ -31606,10 +31606,7 @@ cp_parser_oacc_enter_exit_data (cp_parser *parser, cp_token *pragma_tok,
|
||||
|
||||
stmt = enter ? make_node (OACC_ENTER_DATA) : make_node (OACC_EXIT_DATA);
|
||||
TREE_TYPE (stmt) = void_type_node;
|
||||
if (enter)
|
||||
OACC_ENTER_DATA_CLAUSES (stmt) = clauses;
|
||||
else
|
||||
OACC_EXIT_DATA_CLAUSES (stmt) = clauses;
|
||||
OMP_STANDALONE_CLAUSES (stmt) = clauses;
|
||||
SET_EXPR_LOCATION (stmt, pragma_tok->location);
|
||||
add_stmt (stmt);
|
||||
return stmt;
|
||||
|
@ -7411,34 +7411,31 @@ gimplify_omp_workshare (tree *expr_p, gimple_seq *pre_p)
|
||||
static void
|
||||
gimplify_omp_target_update (tree *expr_p, gimple_seq *pre_p)
|
||||
{
|
||||
tree expr = *expr_p, clauses;
|
||||
tree expr = *expr_p;
|
||||
int kind;
|
||||
gomp_target *stmt;
|
||||
|
||||
switch (TREE_CODE (expr))
|
||||
{
|
||||
case OACC_ENTER_DATA:
|
||||
clauses = OACC_ENTER_DATA_CLAUSES (expr);
|
||||
kind = GF_OMP_TARGET_KIND_OACC_ENTER_EXIT_DATA;
|
||||
break;
|
||||
case OACC_EXIT_DATA:
|
||||
clauses = OACC_EXIT_DATA_CLAUSES (expr);
|
||||
kind = GF_OMP_TARGET_KIND_OACC_ENTER_EXIT_DATA;
|
||||
break;
|
||||
case OACC_UPDATE:
|
||||
clauses = OACC_UPDATE_CLAUSES (expr);
|
||||
kind = GF_OMP_TARGET_KIND_OACC_UPDATE;
|
||||
break;
|
||||
case OMP_TARGET_UPDATE:
|
||||
clauses = OMP_TARGET_UPDATE_CLAUSES (expr);
|
||||
kind = GF_OMP_TARGET_KIND_UPDATE;
|
||||
break;
|
||||
default:
|
||||
gcc_unreachable ();
|
||||
}
|
||||
gimplify_scan_omp_clauses (&clauses, pre_p, ORT_WORKSHARE);
|
||||
gimplify_adjust_omp_clauses (pre_p, &clauses);
|
||||
stmt = gimple_build_omp_target (NULL, kind, clauses);
|
||||
gimplify_scan_omp_clauses (&OMP_STANDALONE_CLAUSES (expr), pre_p,
|
||||
ORT_WORKSHARE);
|
||||
gimplify_adjust_omp_clauses (pre_p, &OMP_STANDALONE_CLAUSES (expr));
|
||||
stmt = gimple_build_omp_target (NULL, kind, OMP_STANDALONE_CLAUSES (expr));
|
||||
|
||||
gimplify_seq_add_stmt (pre_p, stmt);
|
||||
*expr_p = NULL_TREE;
|
||||
|
@ -1197,11 +1197,17 @@ extern void protected_set_expr_location (tree, location_t);
|
||||
|
||||
/* OpenMP and OpenACC directive and clause accessors. */
|
||||
|
||||
/* Generic accessors for OMP nodes that keep the body as operand 0, and clauses
|
||||
as operand 1. */
|
||||
#define OMP_BODY(NODE) \
|
||||
TREE_OPERAND (TREE_RANGE_CHECK (NODE, OACC_PARALLEL, OMP_CRITICAL), 0)
|
||||
#define OMP_CLAUSES(NODE) \
|
||||
TREE_OPERAND (TREE_RANGE_CHECK (NODE, OACC_PARALLEL, OMP_SINGLE), 1)
|
||||
|
||||
/* Generic accessors for OMP nodes that keep clauses as operand 0. */
|
||||
#define OMP_STANDALONE_CLAUSES(NODE) \
|
||||
TREE_OPERAND (TREE_RANGE_CHECK (NODE, OACC_CACHE, OMP_TARGET_UPDATE), 0)
|
||||
|
||||
#define OACC_PARALLEL_BODY(NODE) \
|
||||
TREE_OPERAND (OACC_PARALLEL_CHECK (NODE), 0)
|
||||
#define OACC_PARALLEL_CLAUSES(NODE) \
|
||||
|
Loading…
Reference in New Issue
Block a user