]> 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, 9 Jun 2020 22:32:16 +0000 (15:32 -0700)
commitfdbad20a57e03e05b608f19db41a454bc0cd1c47
tree5795b0a52758558bebeb75e7c0ce3ff2cc01a76d
parent6e1dc72756d73640b822219de1b544ecccb2baba
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.c: 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.c (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.c
gcc/fortran/parse.c
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