[openacc] Add used parameter to TARGET_GOACC_VALIDATE_DIMS
authorTom de Vries <tdevries@suse.de>
Sat, 12 Jan 2019 10:27:00 +0000 (10:27 +0000)
committerTom de Vries <vries@gcc.gnu.org>
Sat, 12 Jan 2019 10:27:00 +0000 (10:27 +0000)
Add a used parameter to TARGET_GOACC_VALIDATE_DIMS, allowing a target to make
decisions in the hook implementation based on whether a dimension is used or
not.

2019-01-12  Tom de Vries  <tdevries@suse.de>

* config/nvptx/nvptx.c (nvptx_goacc_validate_dims_1)
(nvptx_goacc_validate_dims): Add used parameter.
* doc/tm.texi: Regenerate.
* omp-offload.c (oacc_parse_default_dims, oacc_validate_dims): Add
argument to call to targetm.goacc.validate_dims.
(default_goacc_validate_dims): Add used
parameter.
* target.def (validate_dims): Add used parameter in DEFHOOK.
* targhooks.h (default_goacc_validate_dims): Add used parameter.

From-SVN: r267876

gcc/ChangeLog
gcc/config/nvptx/nvptx.c
gcc/doc/tm.texi
gcc/omp-offload.c
gcc/target.def
gcc/targhooks.h

index 0b86eec6cf106a7ed4ac91ffe9ea4a55abf9bb9c..d2f3751910109a65d53febfa06f860dd19cfd11a 100644 (file)
@@ -1,3 +1,15 @@
+2019-01-12  Tom de Vries  <tdevries@suse.de>
+
+       * config/nvptx/nvptx.c (nvptx_goacc_validate_dims_1)
+       (nvptx_goacc_validate_dims): Add used parameter.
+       * doc/tm.texi: Regenerate.
+       * omp-offload.c (oacc_parse_default_dims, oacc_validate_dims): Add
+       argument to call to targetm.goacc.validate_dims.
+       (default_goacc_validate_dims): Add used
+       parameter.
+       * target.def (validate_dims): Add used parameter in DEFHOOK.
+       * targhooks.h (default_goacc_validate_dims): Add used parameter.
+
 2019-01-11  Jakub Jelinek  <jakub@redhat.com>
 
        PR middle-end/85956
index b37010ff58ed586136d2b6d5cde56707def185c3..89f0e560910bb492db0b962791e743d99cda5133 100644 (file)
@@ -5549,7 +5549,7 @@ has_vector_partitionable_routine_calls_p (tree fndecl)
    DIMS has changed.  */
 
 static void
-nvptx_goacc_validate_dims_1 (tree decl, int dims[], int fn_level)
+nvptx_goacc_validate_dims_1 (tree decl, int dims[], int fn_level, unsigned used)
 {
   bool oacc_default_dims_p = false;
   bool oacc_min_dims_p = false;
@@ -5711,7 +5711,7 @@ nvptx_goacc_validate_dims_1 (tree decl, int dims[], int fn_level)
    DECL is null, we are validating the default dimensions.  */
 
 static bool
-nvptx_goacc_validate_dims (tree decl, int dims[], int fn_level)
+nvptx_goacc_validate_dims (tree decl, int dims[], int fn_level, unsigned used)
 {
   int old_dims[GOMP_DIM_MAX];
   unsigned int i;
@@ -5719,7 +5719,7 @@ nvptx_goacc_validate_dims (tree decl, int dims[], int fn_level)
   for (i = 0; i < GOMP_DIM_MAX; ++i)
     old_dims[i] = dims[i];
 
-  nvptx_goacc_validate_dims_1 (decl, dims, fn_level);
+  nvptx_goacc_validate_dims_1 (decl, dims, fn_level, used);
 
   gcc_assert (dims[GOMP_DIM_VECTOR] != 0);
   if (dims[GOMP_DIM_WORKER] > 0 && dims[GOMP_DIM_VECTOR] > 0)
index 07a4442f09a5693a9f3ee997636a6be6d32ca4a9..4347f89cd2f08af99082f2e261f9d8a859d177e8 100644 (file)
@@ -6097,7 +6097,7 @@ to use it.
 Return number of threads in SIMT thread group on the target.
 @end deftypefn
 
-@deftypefn {Target Hook} bool TARGET_GOACC_VALIDATE_DIMS (tree @var{decl}, int *@var{dims}, int @var{fn_level})
+@deftypefn {Target Hook} bool TARGET_GOACC_VALIDATE_DIMS (tree @var{decl}, int *@var{dims}, int @var{fn_level}, unsigned @var{used})
 This hook should check the launch dimensions provided for an OpenACC
 compute region, or routine.  Defaulted values are represented as -1
 and non-constant values as 0.  The @var{fn_level} is negative for the
index 9cac5655c63e9f08b95d786e0255907608e5dfdc..201c459fa1f8b0b07a3429e6b28fe9c3eb2f2bb1 100644 (file)
@@ -644,8 +644,8 @@ oacc_parse_default_dims (const char *dims)
     }
 
   /* Allow the backend to validate the dimensions.  */
-  targetm.goacc.validate_dims (NULL_TREE, oacc_default_dims, -1);
-  targetm.goacc.validate_dims (NULL_TREE, oacc_min_dims, -2);
+  targetm.goacc.validate_dims (NULL_TREE, oacc_default_dims, -1, 0);
+  targetm.goacc.validate_dims (NULL_TREE, oacc_min_dims, -2, 0);
 }
 
 /* Validate and update the dimensions for offloaded FN.  ATTRS is the
@@ -673,7 +673,7 @@ oacc_validate_dims (tree fn, tree attrs, int *dims, int level, unsigned used)
       pos = TREE_CHAIN (pos);
     }
 
-  bool changed = targetm.goacc.validate_dims (fn, dims, level);
+  bool changed = targetm.goacc.validate_dims (fn, dims, level, used);
 
   /* Default anything left to 1 or a partitioned default.  */
   for (ix = 0; ix != GOMP_DIM_MAX; ix++)
@@ -1717,7 +1717,8 @@ execute_oacc_device_lower ()
 
 bool
 default_goacc_validate_dims (tree ARG_UNUSED (decl), int *dims,
-                            int ARG_UNUSED (fn_level))
+                            int ARG_UNUSED (fn_level),
+                            unsigned ARG_UNUSED (used))
 {
   bool changed = false;
 
index ebda60e52ca23c543b270fc57f349c096aa51855..05c9cc1da2822e29286b037b02bd0b20e05904fb 100644 (file)
@@ -1686,7 +1686,7 @@ are being validated and unspecified defaults should be filled in.\n\
 Diagnostics should be issued as appropriate.  Return\n\
 true, if changes have been made.  You must override this hook to\n\
 provide dimensions larger than 1.",
-bool, (tree decl, int *dims, int fn_level),
+bool, (tree decl, int *dims, int fn_level, unsigned used),
 default_goacc_validate_dims)
 
 DEFHOOK
index 01ee0be3c92866fd4034a43b0155240637472572..59436278dcf706c9283920eda52f073cb6c06195 100644 (file)
@@ -121,7 +121,7 @@ extern void default_finish_cost (void *, unsigned *, unsigned *, unsigned *);
 extern void default_destroy_cost_data (void *);
 
 /* OpenACC hooks.  */
-extern bool default_goacc_validate_dims (tree, int [], int);
+extern bool default_goacc_validate_dims (tree, int [], int, unsigned);
 extern int default_goacc_dim_limit (int);
 extern bool default_goacc_fork_join (gcall *, const int [], bool);
 extern void default_goacc_reduction (gcall *);