]> git.ipfire.org Git - thirdparty/gcc.git/commit
Kernels loops annotation: Fortran.
authorSandra Loosemore <sandra@codesourcery.com>
Tue, 17 Mar 2020 01:08:01 +0000 (18:08 -0700)
committerKwok Cheung Yeung <kcy@codesourcery.com>
Tue, 21 Jun 2022 13:11:22 +0000 (14:11 +0100)
commit29fd0337622f423e8d22cba9a8f99aad272314b1
treec97571a477d090087da97c23925bf737e91c549e
parente8dc40997e460db58d53781ed7670cd9a61943ec
Kernels loops annotation: Fortran.

This patch implements the Fortran support for adding "#pragma acc loop auto"
annotations to loops in OpenACC kernels regions.  It implements the same
-fopenacc-kernels-annotate-loops and -Wopenacc-kernels-annotate-loops options
that were previously added (and documented) for the C/C++ front ends.

2020-03-27  Sandra Loosemore  <sandra@codesourcery.com>
    Gergö Barany <gergo@codesourcery.com>

gcc/fortran/
* gfortran.h (gfc_oacc_annotate_loops_in_kernels_regions): Declare.
* lang.opt (Wopenacc-kernels-annotate-loops): New.
(fopenacc-kernels-annotate-loops): New.
* openmp.cc: Include options.h.
(enum annotation_state, enum annotation_result): New.
(check_code_for_invalid_calls): New.
(check_expr_for_invalid_calls): New.
(check_for_invalid_calls): New.
(annotate_do_loop): New.
(annotate_do_loops_in_kernels): New.
(compute_goto_targets): New.
(gfc_oacc_annotate_loops_in_kernels_regions): New.
* parse.cc (gfc_parse_file): Handle -fopenacc-kernels-annotate-loops.

gcc/testsuite/
* gfortran.dg/goacc/classify-kernels-unparallelized.f95: Add
-fno-openacc-kernels-annotate-loops option.
* gfortran.dg/goacc/classify-kernels.f95: Likewise.
* gfortran.dg/goacc/common-block-3.f90: Likewise.
* gfortran.dg/goacc/kernels-loop-2.f95: Likewise.
* gfortran.dg/goacc/kernels-loop-data-2.f95: Likewise.
* gfortran.dg/goacc/kernels-loop-data-enter-exit-2.f95: Likewise.
* gfortran.dg/goacc/kernels-loop-data-enter-exit.f95: Likewise.
* gfortran.dg/goacc/kernels-loop-data-update.f95: Likewise.
* gfortran.dg/goacc/kernels-loop-data.f95: Likewise.
* gfortran.dg/goacc/kernels-loop-n.f95: Likewise.
* gfortran.dg/goacc/kernels-loop.f95: Likewise.
* gfortran.dg/goacc/kernels-parallel-loop-data-enter-exit.f95:
Likewise.
* gfortran.dg/goacc/kernels-loop-annotation-1.f95: New.
* gfortran.dg/goacc/kernels-loop-annotation-2.f95: New.
* gfortran.dg/goacc/kernels-loop-annotation-3.f95: New.
* gfortran.dg/goacc/kernels-loop-annotation-4.f95: New.
* gfortran.dg/goacc/kernels-loop-annotation-5.f95: New.
* gfortran.dg/goacc/kernels-loop-annotation-6.f95: New.
* gfortran.dg/goacc/kernels-loop-annotation-7.f95: New.
* gfortran.dg/goacc/kernels-loop-annotation-8.f95: New.
* gfortran.dg/goacc/kernels-loop-annotation-9.f95: New.
* gfortran.dg/goacc/kernels-loop-annotation-10.f95: New.
* gfortran.dg/goacc/kernels-loop-annotation-11.f95: New.
* gfortran.dg/goacc/kernels-loop-annotation-12.f95: New.
* gfortran.dg/goacc/kernels-loop-annotation-13.f95: New.
* gfortran.dg/goacc/kernels-loop-annotation-14.f95: New.
* gfortran.dg/goacc/kernels-loop-annotation-15.f95: New.
* gfortran.dg/goacc/kernels-loop-annotation-16.f95: New.
34 files changed:
gcc/fortran/ChangeLog.omp
gcc/fortran/gfortran.h
gcc/fortran/lang.opt
gcc/fortran/openmp.cc
gcc/fortran/parse.cc
gcc/testsuite/ChangeLog.omp
gcc/testsuite/gfortran.dg/goacc/classify-kernels-unparallelized.f95
gcc/testsuite/gfortran.dg/goacc/classify-kernels.f95
gcc/testsuite/gfortran.dg/goacc/common-block-3.f90
gcc/testsuite/gfortran.dg/goacc/kernels-loop-2.f95
gcc/testsuite/gfortran.dg/goacc/kernels-loop-annotation-1.f95 [new file with mode: 0644]
gcc/testsuite/gfortran.dg/goacc/kernels-loop-annotation-10.f95 [new file with mode: 0644]
gcc/testsuite/gfortran.dg/goacc/kernels-loop-annotation-11.f95 [new file with mode: 0644]
gcc/testsuite/gfortran.dg/goacc/kernels-loop-annotation-12.f95 [new file with mode: 0644]
gcc/testsuite/gfortran.dg/goacc/kernels-loop-annotation-13.f95 [new file with mode: 0644]
gcc/testsuite/gfortran.dg/goacc/kernels-loop-annotation-14.f95 [new file with mode: 0644]
gcc/testsuite/gfortran.dg/goacc/kernels-loop-annotation-15.f95 [new file with mode: 0644]
gcc/testsuite/gfortran.dg/goacc/kernels-loop-annotation-16.f95 [new file with mode: 0644]
gcc/testsuite/gfortran.dg/goacc/kernels-loop-annotation-2.f95 [new file with mode: 0644]
gcc/testsuite/gfortran.dg/goacc/kernels-loop-annotation-3.f95 [new file with mode: 0644]
gcc/testsuite/gfortran.dg/goacc/kernels-loop-annotation-4.f95 [new file with mode: 0644]
gcc/testsuite/gfortran.dg/goacc/kernels-loop-annotation-5.f95 [new file with mode: 0644]
gcc/testsuite/gfortran.dg/goacc/kernels-loop-annotation-6.f95 [new file with mode: 0644]
gcc/testsuite/gfortran.dg/goacc/kernels-loop-annotation-7.f95 [new file with mode: 0644]
gcc/testsuite/gfortran.dg/goacc/kernels-loop-annotation-8.f95 [new file with mode: 0644]
gcc/testsuite/gfortran.dg/goacc/kernels-loop-annotation-9.f95 [new file with mode: 0644]
gcc/testsuite/gfortran.dg/goacc/kernels-loop-data-2.f95
gcc/testsuite/gfortran.dg/goacc/kernels-loop-data-enter-exit-2.f95
gcc/testsuite/gfortran.dg/goacc/kernels-loop-data-enter-exit.f95
gcc/testsuite/gfortran.dg/goacc/kernels-loop-data-update.f95
gcc/testsuite/gfortran.dg/goacc/kernels-loop-data.f95
gcc/testsuite/gfortran.dg/goacc/kernels-loop-n.f95
gcc/testsuite/gfortran.dg/goacc/kernels-loop.f95
gcc/testsuite/gfortran.dg/goacc/kernels-parallel-loop-data-enter-exit.f95