diff --git a/gcc/c-family/c.opt b/gcc/c-family/c.opt index ed9a82599ef97ac0455570d6147ade51cefc9d6f..3f8b72cdc0065afd10c75af8ea800919f2f1cab2 100644 --- a/gcc/c-family/c.opt +++ b/gcc/c-family/c.opt @@ -1873,19 +1873,6 @@ fopenacc-dim= C ObjC C++ ObjC++ LTO Joined Var(flag_openacc_dims) Specify default OpenACC compute dimensions. -fopenacc-kernels= -C ObjC C++ ObjC++ RejectNegative Joined Enum(openacc_kernels) Var(flag_openacc_kernels) Init(OPENACC_KERNELS_PARLOOPS) --fopenacc-kernels=[decompose|parloops] Specify mode of OpenACC 'kernels' constructs handling. - -Enum -Name(openacc_kernels) Type(enum openacc_kernels) - -EnumValue -Enum(openacc_kernels) String(decompose) Value(OPENACC_KERNELS_DECOMPOSE) - -EnumValue -Enum(openacc_kernels) String(parloops) Value(OPENACC_KERNELS_PARLOOPS) - fopenmp C ObjC C++ ObjC++ LTO Var(flag_openmp) Enable OpenMP (implies -frecursive in Fortran). diff --git a/gcc/doc/invoke.texi b/gcc/doc/invoke.texi index 096cebc85624f49fefdfd9bbdda5cb544f401bca..8b70fdf580dbbafe0484e52bd20c90006d70b962 100644 --- a/gcc/doc/invoke.texi +++ b/gcc/doc/invoke.texi @@ -202,7 +202,7 @@ in the following sections. -aux-info @var{filename} -fallow-parameterless-variadic-functions @gol -fno-asm -fno-builtin -fno-builtin-@var{function} -fgimple@gol -fhosted -ffreestanding @gol --fopenacc -fopenacc-dim=@var{geom} -fopenacc-kernels=@var{mode} @gol +-fopenacc -fopenacc-dim=@var{geom} @gol -fopenmp -fopenmp-simd @gol -fms-extensions -fplan9-extensions -fsso-struct=@var{endianness} @gol -fallow-single-precision -fcond-mismatch -flax-vector-conversions @gol @@ -2619,18 +2619,6 @@ not explicitly specify. The @var{geom} value is a triple of ':'-separated sizes, in order 'gang', 'worker' and, 'vector'. A size can be omitted, to use a target-specific default value. -@item -fopenacc-kernels=@var{mode} -@opindex fopenacc-kernels -@cindex OpenACC accelerator programming -Specify mode of OpenACC `kernels' constructs handling. -With @option{-fopenacc-kernels=decompose}, OpenACC `kernels' -constructs are decomposed into parts, a sequence of compute -constructs, each then handled individually. -This is work in progress. -With @option{-fopenacc-kernels=parloops}, OpenACC `kernels' constructs -are handled by the @samp{parloops} pass, en bloc. -This is the current default. - @item -fopenmp @opindex fopenmp @cindex OpenMP parallel @@ -14376,6 +14364,16 @@ The parameter is used only in GIMPLE FE. The maximum number of 'after supernode' exploded nodes within the analyzer per supernode, before terminating analysis. +@item openacc-kernels +Specify mode of OpenACC `kernels' constructs handling. +With @option{--param=openacc-kernels=decompose}, OpenACC `kernels' +constructs are decomposed into parts, a sequence of compute +constructs, each then handled individually. +This is work in progress. +With @option{--param=openacc-kernels=parloops}, OpenACC `kernels' +constructs are handled by the @samp{parloops} pass, en bloc. +This is the current default. + @end table The following choices of @var{name} are available on AArch64 targets: diff --git a/gcc/fortran/lang.opt b/gcc/fortran/lang.opt index 2b1977c523b2016c44f081157d244ae404153d36..388ef8c0fdbf4629e8375e8940962ad561483fa0 100644 --- a/gcc/fortran/lang.opt +++ b/gcc/fortran/lang.opt @@ -691,10 +691,6 @@ fopenacc-dim= Fortran LTO Joined Var(flag_openacc_dims) ; Documented in C -fopenacc-kernels= -Fortran RejectNegative Joined Enum(openacc_kernels) Var(flag_openacc_kernels) Init(OPENACC_KERNELS_PARLOOPS) -; Documented in C - fopenmp Fortran LTO ; Documented in C diff --git a/gcc/omp-oacc-kernels-decompose.cc b/gcc/omp-oacc-kernels-decompose.cc index c624e26be88a14ef7caf0bfdccd1aaf5c3ad67a7..4ba5758a906719aa0c6918c49acb1e1e34b37fff 100644 --- a/gcc/omp-oacc-kernels-decompose.cc +++ b/gcc/omp-oacc-kernels-decompose.cc @@ -1527,7 +1527,7 @@ public: virtual bool gate (function *) { return (flag_openacc - && flag_openacc_kernels == OPENACC_KERNELS_DECOMPOSE); + && param_openacc_kernels == OPENACC_KERNELS_DECOMPOSE); } virtual unsigned int execute (function *) { diff --git a/gcc/params.opt b/gcc/params.opt index 0dd9ac406eb1d367adb0cf405360633edba93a78..b516489bc8e69526e6fa61709e9ee38b4bc96115 100644 --- a/gcc/params.opt +++ b/gcc/params.opt @@ -777,6 +777,19 @@ The minimum probability of reaching a source block for interblock speculative sc Common Joined UInteger Var(param_min_vect_loop_bound) Param Optimization If -ftree-vectorize is used, the minimal loop bound of a loop to be considered for vectorization. +-param=openacc-kernels= +Common Joined Enum(openacc_kernels) Var(param_openacc_kernels) Init(OPENACC_KERNELS_PARLOOPS) Param +--param=openacc-kernels=[decompose|parloops] Specify mode of OpenACC 'kernels' constructs handling. + +Enum +Name(openacc_kernels) Type(enum openacc_kernels) + +EnumValue +Enum(openacc_kernels) String(decompose) Value(OPENACC_KERNELS_DECOMPOSE) + +EnumValue +Enum(openacc_kernels) String(parloops) Value(OPENACC_KERNELS_PARLOOPS) + -param=parloops-chunk-size= Common Joined UInteger Var(param_parloops_chunk_size) Param Optimization Chunk size of omp schedule for loops parallelized by parloops. diff --git a/gcc/testsuite/c-c++-common/goacc/if-clause-2.c b/gcc/testsuite/c-c++-common/goacc/if-clause-2.c index 7bb115316e808f401947fca428d498fa70ee47ba..a48072509e1a1add1d741ee909e1b4a9a981001e 100644 --- a/gcc/testsuite/c-c++-common/goacc/if-clause-2.c +++ b/gcc/testsuite/c-c++-common/goacc/if-clause-2.c @@ -1,5 +1,5 @@ /* { dg-additional-options "-fdump-tree-gimple" } */ -/* { dg-additional-options "-fopenacc-kernels=decompose" } +/* { dg-additional-options "--param=openacc-kernels=decompose" } { dg-additional-options "-fdump-tree-omp_oacc_kernels_decompose" } */ void diff --git a/gcc/testsuite/c-c++-common/goacc/kernels-decompose-1.c b/gcc/testsuite/c-c++-common/goacc/kernels-decompose-1.c index e906443cceb039cfe4d27b2551995801bd794777..87219c88fac7da5f0d0cd059e0270054ca768131 100644 --- a/gcc/testsuite/c-c++-common/goacc/kernels-decompose-1.c +++ b/gcc/testsuite/c-c++-common/goacc/kernels-decompose-1.c @@ -2,7 +2,7 @@ /* { dg-additional-options "-fopt-info-omp-all" } */ /* { dg-additional-options "-fdump-tree-gimple" } */ -/* { dg-additional-options "-fopenacc-kernels=decompose" } +/* { dg-additional-options "--param=openacc-kernels=decompose" } { dg-additional-options "-fdump-tree-omp_oacc_kernels_decompose" } */ /* See also '../../gfortran.dg/goacc/kernels-decompose-1.f95'. */ diff --git a/gcc/testsuite/c-c++-common/goacc/kernels-decompose-2.c b/gcc/testsuite/c-c++-common/goacc/kernels-decompose-2.c index ec0f75c4a61023cdd5c228e08c1e1dd13c3c92ae..3781e75d0f2d4295492406f849a191f72aaa4a34 100644 --- a/gcc/testsuite/c-c++-common/goacc/kernels-decompose-2.c +++ b/gcc/testsuite/c-c++-common/goacc/kernels-decompose-2.c @@ -1,7 +1,7 @@ /* Test OpenACC 'kernels' construct decomposition. */ /* { dg-additional-options "-fopt-info-omp-all" } */ -/* { dg-additional-options "-fopenacc-kernels=decompose" } +/* { dg-additional-options "--param=openacc-kernels=decompose" } /* { dg-additional-options "-O2" } for 'parloops'. */ /* See also '../../gfortran.dg/goacc/kernels-decompose-2.f95'. */ diff --git a/gcc/testsuite/c-c++-common/goacc/kernels-decompose-ice-1.c b/gcc/testsuite/c-c++-common/goacc/kernels-decompose-ice-1.c index 82e7bd1495b33f18124851d576ab5b36b05b60c8..d770b91dd097a1ccd6b92d932a00e0c05a66e8f8 100644 --- a/gcc/testsuite/c-c++-common/goacc/kernels-decompose-ice-1.c +++ b/gcc/testsuite/c-c++-common/goacc/kernels-decompose-ice-1.c @@ -1,7 +1,7 @@ /* Test OpenACC 'kernels' construct decomposition. */ /* { dg-additional-options "-fopt-info-omp-all" } */ -/* { dg-additional-options "-fopenacc-kernels=decompose" } */ +/* { dg-additional-options "--param=openacc-kernels=decompose" } */ /* { dg-ice "TODO" } { dg-prune-output "during GIMPLE pass: omplower" } */ diff --git a/gcc/testsuite/c-c++-common/goacc/kernels-decompose-ice-2.c b/gcc/testsuite/c-c++-common/goacc/kernels-decompose-ice-2.c index 569f87a59c97365ae0493abe8be8eb3bcbbbd427..ae059eb354bce29d9411c2e1d4d2a70f79519637 100644 --- a/gcc/testsuite/c-c++-common/goacc/kernels-decompose-ice-2.c +++ b/gcc/testsuite/c-c++-common/goacc/kernels-decompose-ice-2.c @@ -1,6 +1,6 @@ /* Test OpenACC 'kernels' construct decomposition. */ -/* { dg-additional-options "-fopenacc-kernels=decompose" } */ +/* { dg-additional-options "--param=openacc-kernels=decompose" } */ /* { dg-ice "TODO" } { dg-prune-output "during GIMPLE pass: omplower" } */ diff --git a/gcc/testsuite/gfortran.dg/goacc/kernels-decompose-1.f95 b/gcc/testsuite/gfortran.dg/goacc/kernels-decompose-1.f95 index 7e513f8408352d6558b210e27bae821ac6a1bfd7..e2523504ef536c6741d5476c3d9ca3bc7501fa45 100644 --- a/gcc/testsuite/gfortran.dg/goacc/kernels-decompose-1.f95 +++ b/gcc/testsuite/gfortran.dg/goacc/kernels-decompose-1.f95 @@ -2,7 +2,7 @@ ! { dg-additional-options "-fopt-info-omp-all" } ! { dg-additional-options "-fdump-tree-gimple" } -! { dg-additional-options "-fopenacc-kernels=decompose" } +! { dg-additional-options "--param=openacc-kernels=decompose" } ! { dg-additional-options "-fdump-tree-omp_oacc_kernels_decompose" } ! See also '../../c-c++-common/goacc/kernels-decompose-1.c'. diff --git a/gcc/testsuite/gfortran.dg/goacc/kernels-decompose-2.f95 b/gcc/testsuite/gfortran.dg/goacc/kernels-decompose-2.f95 index 22f65e5c6941ef2e17ff1524e09cbbba5d852fc6..cc12b77817b00ec2dd858dd0b235f828bb1f5e51 100644 --- a/gcc/testsuite/gfortran.dg/goacc/kernels-decompose-2.f95 +++ b/gcc/testsuite/gfortran.dg/goacc/kernels-decompose-2.f95 @@ -1,7 +1,7 @@ ! Test OpenACC 'kernels' construct decomposition. ! { dg-additional-options "-fopt-info-omp-all" } -! { dg-additional-options "-fopenacc-kernels=decompose" } +! { dg-additional-options "--param=openacc-kernels=decompose" } ! { dg-additional-options "-O2" } for 'parloops'. ! See also '../../c-c++-common/goacc/kernels-decompose-2.c'. diff --git a/gcc/testsuite/gfortran.dg/goacc/kernels-tree.f95 b/gcc/testsuite/gfortran.dg/goacc/kernels-tree.f95 index d01eee2fa5d0cec3d387a3535ac482d70d2e98d3..63ef7e17a9e4e88c90ffe4033bb149194eaa6fba 100644 --- a/gcc/testsuite/gfortran.dg/goacc/kernels-tree.f95 +++ b/gcc/testsuite/gfortran.dg/goacc/kernels-tree.f95 @@ -1,6 +1,6 @@ ! { dg-do compile } ! { dg-additional-options "-fdump-tree-original" } -! { dg-additional-options "-fopenacc-kernels=decompose" } +! { dg-additional-options "--param=openacc-kernels=decompose" } ! { dg-additional-options "-fdump-tree-omp_oacc_kernels_decompose" } program test diff --git a/libgomp/testsuite/libgomp.oacc-c-c++-common/declare-vla-kernels-decompose-ice-1.c b/libgomp/testsuite/libgomp.oacc-c-c++-common/declare-vla-kernels-decompose-ice-1.c index c7eae12ec10957d889d20facfec5097288510502..0777b612b6303d81d2299fed31cf2826b1fff6fe 100644 --- a/libgomp/testsuite/libgomp.oacc-c-c++-common/declare-vla-kernels-decompose-ice-1.c +++ b/libgomp/testsuite/libgomp.oacc-c-c++-common/declare-vla-kernels-decompose-ice-1.c @@ -1,4 +1,4 @@ -/* { dg-additional-options "-fopenacc-kernels=decompose" } */ +/* { dg-additional-options "--param=openacc-kernels=decompose" } */ /* Hopefully, this is the same issue as '../../../gcc/testsuite/c-c++-common/goacc/kernels-decompose-ice-1.c'. { dg-ice "TODO" } TODO { dg-prune-output "during GIMPLE pass: omplower" } diff --git a/libgomp/testsuite/libgomp.oacc-c-c++-common/declare-vla-kernels-decompose.c b/libgomp/testsuite/libgomp.oacc-c-c++-common/declare-vla-kernels-decompose.c index dd8a1c1d294555c0ebbe0dcab6f96c69b4adf990..0369ae91f14722b41fa3d7fd0e8091a577ac5e75 100644 --- a/libgomp/testsuite/libgomp.oacc-c-c++-common/declare-vla-kernels-decompose.c +++ b/libgomp/testsuite/libgomp.oacc-c-c++-common/declare-vla-kernels-decompose.c @@ -1,4 +1,4 @@ -/* { dg-additional-options "-fopenacc-kernels=decompose" } */ +/* { dg-additional-options "--param=openacc-kernels=decompose" } */ /* See also 'declare-vla-kernels-decompose-ice-1.c'. */ diff --git a/libgomp/testsuite/libgomp.oacc-c-c++-common/kernels-decompose-1.c b/libgomp/testsuite/libgomp.oacc-c-c++-common/kernels-decompose-1.c index e76e4099f3a688c16f79ad1a14b4d164b7890363..dd83557b6aa2cb9b02df2b301d29021abe114944 100644 --- a/libgomp/testsuite/libgomp.oacc-c-c++-common/kernels-decompose-1.c +++ b/libgomp/testsuite/libgomp.oacc-c-c++-common/kernels-decompose-1.c @@ -1,7 +1,7 @@ /* Test OpenACC 'kernels' construct decomposition. */ /* { dg-additional-options "-fopt-info-omp-all" } */ -/* { dg-additional-options "-fopenacc-kernels=decompose" } */ +/* { dg-additional-options "--param=openacc-kernels=decompose" } */ /* It's only with Tcl 8.5 (released in 2007) that "the variable 'varName' passed to 'incr' may be unset, and in that case, it will be set to [...]", diff --git a/libgomp/testsuite/libgomp.oacc-fortran/pr94358-1.f90 b/libgomp/testsuite/libgomp.oacc-fortran/pr94358-1.f90 index 99a70418a4d100940bd251bf5dd3d2947e46b11c..cf1d0e569278ad5d6cfd9434c06e18fa50ae2e63 100644 --- a/libgomp/testsuite/libgomp.oacc-fortran/pr94358-1.f90 +++ b/libgomp/testsuite/libgomp.oacc-fortran/pr94358-1.f90 @@ -1,6 +1,6 @@ ! { dg-do run } ! { dg-additional-options "-fopt-info-omp-all" } -! { dg-additional-options "-fopenacc-kernels=decompose" } +! { dg-additional-options "--param=openacc-kernels=decompose" } ! It's only with Tcl 8.5 (released in 2007) that "the variable 'varName' ! passed to 'incr' may be unset, and in that case, it will be set to [...]",