summaryrefslogtreecommitdiff
path: root/gcc/config/nvptx
diff options
context:
space:
mode:
authorTom de Vries <tdevries@suse.de>2019-01-07 08:10:17 +0000
committerTom de Vries <vries@gcc.gnu.org>2019-01-07 08:10:17 +0000
commitd8ab4e5471ac962fe29929306b51bd7acc064a59 (patch)
treefb1fbb5c054c240b6a24047c04e50d8af1227077 /gcc/config/nvptx
parent764ecad43b6cac2d2eded706fccd29cc15481ad2 (diff)
downloadgcc-d8ab4e5471ac962fe29929306b51bd7acc064a59.tar.gz
[nvptx] Postpone warnings in nvptx_goacc_validate_dims_1
Move warnings in nvptx_goacc_validate_dims_1 to as late as possible. This allows us more flexibility in setting the dimensions. 2019-01-07 Tom de Vries <tdevries@suse.de> * config/nvptx/nvptx.c (nvptx_goacc_validate_dims_1): Move warnings to as late as possible. From-SVN: r267627
Diffstat (limited to 'gcc/config/nvptx')
-rw-r--r--gcc/config/nvptx/nvptx.c38
1 files changed, 25 insertions, 13 deletions
diff --git a/gcc/config/nvptx/nvptx.c b/gcc/config/nvptx/nvptx.c
index 3d680e9d80a..3a4a5a3a159 100644
--- a/gcc/config/nvptx/nvptx.c
+++ b/gcc/config/nvptx/nvptx.c
@@ -5376,25 +5376,37 @@ nvptx_goacc_validate_dims_1 (tree decl, int dims[], int fn_level)
gcc_assert (dims[GOMP_DIM_GANG] >= -1);
}
- if (dims[GOMP_DIM_VECTOR] >= 0
- && dims[GOMP_DIM_VECTOR] != PTX_WARP_SIZE)
+ int old_dims[GOMP_DIM_MAX];
+ unsigned int i;
+ for (i = 0; i < GOMP_DIM_MAX; ++i)
+ old_dims[i] = dims[i];
+
+ const char *vector_reason = NULL;
+ if (dims[GOMP_DIM_VECTOR] == 0)
{
- warning_at (decl ? DECL_SOURCE_LOCATION (decl) : UNKNOWN_LOCATION, 0,
- dims[GOMP_DIM_VECTOR]
- ? G_("using vector_length (%d), ignoring %d")
- : G_("using vector_length (%d), ignoring runtime setting"),
- PTX_DEFAULT_VECTOR_LENGTH, dims[GOMP_DIM_VECTOR]);
+ vector_reason = G_("using vector_length (%d), ignoring runtime setting");
dims[GOMP_DIM_VECTOR] = PTX_DEFAULT_VECTOR_LENGTH;
}
+ if (dims[GOMP_DIM_VECTOR] > 0
+ && dims[GOMP_DIM_VECTOR] != PTX_WARP_SIZE)
+ dims[GOMP_DIM_VECTOR] = PTX_DEFAULT_VECTOR_LENGTH;
+
/* Check the num workers is not too large. */
if (dims[GOMP_DIM_WORKER] > PTX_WORKER_LENGTH)
- {
- warning_at (decl ? DECL_SOURCE_LOCATION (decl) : UNKNOWN_LOCATION, 0,
- "using num_workers (%d), ignoring %d",
- PTX_WORKER_LENGTH, dims[GOMP_DIM_WORKER]);
- dims[GOMP_DIM_WORKER] = PTX_WORKER_LENGTH;
- }
+ dims[GOMP_DIM_WORKER] = PTX_WORKER_LENGTH;
+
+ if (dims[GOMP_DIM_VECTOR] != old_dims[GOMP_DIM_VECTOR])
+ warning_at (decl ? DECL_SOURCE_LOCATION (decl) : UNKNOWN_LOCATION, 0,
+ vector_reason != NULL
+ ? vector_reason
+ : G_("using vector_length (%d), ignoring %d"),
+ dims[GOMP_DIM_VECTOR], old_dims[GOMP_DIM_VECTOR]);
+
+ if (dims[GOMP_DIM_WORKER] != old_dims[GOMP_DIM_WORKER])
+ warning_at (decl ? DECL_SOURCE_LOCATION (decl) : UNKNOWN_LOCATION, 0,
+ G_("using num_workers (%d), ignoring %d"),
+ dims[GOMP_DIM_WORKER], old_dims[GOMP_DIM_WORKER]);
if (oacc_default_dims_p)
{