mirror of git://gcc.gnu.org/git/gcc.git
[nvptx] Verify dimension limits after applying defaults
There's a problem in oacc_validate_dims that when f.i. the worker dimension is set using -fopenacc-dim=:32, and the vector_length is set using a "vector_length (128)" clause, the compiler combines, accepts and emits the values, while the combination of the two is invalid. The reason for this is that while oacc_validate_dims validates the dimensions using targetm.goacc.validate_dims before applying default or minimum values, it does not do so afterwards. Work around this in the nvptx port by applying the defaults from oacc_default_dims at the end of nvptx_goacc_validate_dims_1, as oacc_validate_dims would do it, and then apply the dimensions limits. 2019-01-12 Tom de Vries <tdevries@suse.de> PR middle-end/88703 * config/nvptx/nvptx.c (nvptx_goacc_validate_dims_1): Apply defaults from oacc_default_dims, as oacc_validate_dims would do it, and apply dimensions limits. From-SVN: r267877
This commit is contained in:
parent
46dedae6a8
commit
980af7cd8f
|
|
@ -1,3 +1,10 @@
|
|||
2019-01-12 Tom de Vries <tdevries@suse.de>
|
||||
|
||||
PR middle-end/88703
|
||||
* config/nvptx/nvptx.c (nvptx_goacc_validate_dims_1): Apply defaults
|
||||
from oacc_default_dims, as oacc_validate_dims would do it, and apply
|
||||
dimensions limits.
|
||||
|
||||
2019-01-12 Tom de Vries <tdevries@suse.de>
|
||||
|
||||
* config/nvptx/nvptx.c (nvptx_goacc_validate_dims_1)
|
||||
|
|
|
|||
|
|
@ -5703,6 +5703,23 @@ nvptx_goacc_validate_dims_1 (tree decl, int dims[], int fn_level, unsigned used)
|
|||
dims[GOMP_DIM_GANG] = PTX_DEFAULT_RUNTIME_DIM;
|
||||
nvptx_apply_dim_limits (dims);
|
||||
}
|
||||
|
||||
if (offload_region_p)
|
||||
{
|
||||
for (i = 0; i < GOMP_DIM_MAX; i++)
|
||||
{
|
||||
if (!(dims[i] < 0))
|
||||
continue;
|
||||
|
||||
if ((used & GOMP_DIM_MASK (i)) == 0)
|
||||
/* Function oacc_validate_dims will apply the minimal dimension. */
|
||||
continue;
|
||||
|
||||
dims[i] = oacc_get_default_dim (i);
|
||||
}
|
||||
|
||||
nvptx_apply_dim_limits (dims);
|
||||
}
|
||||
}
|
||||
|
||||
/* Validate compute dimensions of an OpenACC offload or routine, fill
|
||||
|
|
|
|||
Loading…
Reference in New Issue