aboutsummaryrefslogtreecommitdiff
path: root/gcc/omp-expand.c
diff options
context:
space:
mode:
authorThomas Schwinge <thomas@codesourcery.com>2020-11-20 10:41:46 +0100
committerThomas Schwinge <thomas@codesourcery.com>2020-11-24 10:28:04 +0100
commit8c3aa359ce33732273bbd61c5f9a2c607779b32e (patch)
treebc9415c3a4c19cd2bd319adab417d98203c9f571 /gcc/omp-expand.c
parentf72175357d04b0e71d2043be48551d7904a233b6 (diff)
downloadgcc-8c3aa359ce33732273bbd61c5f9a2c607779b32e.zip
gcc-8c3aa359ce33732273bbd61c5f9a2c607779b32e.tar.gz
gcc-8c3aa359ce33732273bbd61c5f9a2c607779b32e.tar.bz2
More explicit checking of which OMP constructs we're expecting, part II
In particular, more precisely highlight what applies generally vs. the special handling for the current 'parloops'-based OpenACC 'kernels' implementation. gcc/ * omp-expand.c (expand_oacc_for): More explicit checking of which OMP constructs we're expecting.
Diffstat (limited to 'gcc/omp-expand.c')
-rw-r--r--gcc/omp-expand.c15
1 files changed, 15 insertions, 0 deletions
diff --git a/gcc/omp-expand.c b/gcc/omp-expand.c
index c0e94e5..928644b 100644
--- a/gcc/omp-expand.c
+++ b/gcc/omp-expand.c
@@ -7413,6 +7413,21 @@ expand_omp_taskloop_for_inner (struct omp_region *region,
static void
expand_oacc_for (struct omp_region *region, struct omp_for_data *fd)
{
+ bool is_oacc_kernels_parallelized
+ = (lookup_attribute ("oacc kernels parallelized",
+ DECL_ATTRIBUTES (current_function_decl)) != NULL);
+ {
+ bool is_oacc_kernels
+ = (lookup_attribute ("oacc kernels",
+ DECL_ATTRIBUTES (current_function_decl)) != NULL);
+ if (is_oacc_kernels_parallelized)
+ gcc_checking_assert (is_oacc_kernels);
+ }
+ gcc_assert (gimple_in_ssa_p (cfun) == is_oacc_kernels_parallelized);
+ /* In the following, some of the 'gimple_in_ssa_p (cfun)' conditionals are
+ for SSA specifics, and some are for 'parloops' OpenACC
+ 'kernels'-parallelized specifics. */
+
tree v = fd->loop.v;
enum tree_code cond_code = fd->loop.cond_code;
enum tree_code plus_code = PLUS_EXPR;