diff options
author | Tom de Vries <tdevries@suse.de> | 2019-01-07 08:10:17 +0000 |
---|---|---|
committer | Tom de Vries <vries@gcc.gnu.org> | 2019-01-07 08:10:17 +0000 |
commit | d8ab4e5471ac962fe29929306b51bd7acc064a59 (patch) | |
tree | fb1fbb5c054c240b6a24047c04e50d8af1227077 /gcc/config/nvptx | |
parent | 764ecad43b6cac2d2eded706fccd29cc15481ad2 (diff) | |
download | gcc-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.c | 38 |
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) { |