[00/10] fortran: clobber fixes [PR41453]

Message ID 20220916202439.549820-1-mikael@gcc.gnu.org
Series fortran: clobber fixes [PR41453] |


Mikael Morin Sept. 16, 2022, 8:24 p.m. UTC

this is a set of changes around the clobber we generate in the caller
before a procedure call, for each actual argument whose associated dummy
has the INTENT(OUT) attribute.

The first patch is a refactoring moving the clobber generation in
gfc_conv_procedure_call where it feels more appropriate.
The second patch is a fix for the ICE originally motivating my work
on this topic.
The third patch is a fix for some wrong code issue discovered with an
earlier version of this series.
The following patches are gradual condition loosenings to enable clobber 
generation in more and more cases.

Each patch has been tested through an incremental bootstrap and a
partial testsuite run on fortran *intent* tests, and the whole lot has
been run through the full fortran regression testsuite.
OK for master?

Harald Anlauf (1):
  fortran: Support clobbering with implicit interfaces [PR105012]

Mikael Morin (9):
  fortran: Move the clobber generation code
  fortran: Fix invalid function decl clobber ICE [PR105012]
  fortran: Move clobbers after evaluation of all arguments [PR106817]
  fortran: Support clobbering of reference variables [PR41453]
  fortran: Support clobbering of SAVE variables [PR87395]
  fortran: Support clobbering of ASSOCIATE variables [PR87397]
  fortran: Support clobbering of allocatables and pointers [PR41453]
  fortran: Support clobbering of variable subreferences [PR88364]
  fortran: Support clobbering of derived types [PR41453]

 gcc/fortran/trans-expr.cc                     | 78 ++++++++++++-------
 gcc/fortran/trans.h                           |  3 +-
 .../gfortran.dg/intent_optimize_4.f90         | 24 ++++++
 .../gfortran.dg/intent_optimize_5.f90         | 34 ++++++++
 .../gfortran.dg/intent_optimize_6.f90         | 42 ++++++++++
 .../gfortran.dg/intent_optimize_7.f90         | 65 ++++++++++++++++
 .../gfortran.dg/intent_optimize_8.f90         | 67 ++++++++++++++++
 .../gfortran.dg/intent_optimize_9.f90         | 43 ++++++++++
 gcc/testsuite/gfortran.dg/intent_out_15.f90   | 27 +++++++
 9 files changed, 353 insertions(+), 30 deletions(-)
 create mode 100644 gcc/testsuite/gfortran.dg/intent_optimize_4.f90
 create mode 100644 gcc/testsuite/gfortran.dg/intent_optimize_5.f90
 create mode 100644 gcc/testsuite/gfortran.dg/intent_optimize_6.f90
 create mode 100644 gcc/testsuite/gfortran.dg/intent_optimize_7.f90
 create mode 100644 gcc/testsuite/gfortran.dg/intent_optimize_8.f90
 create mode 100644 gcc/testsuite/gfortran.dg/intent_optimize_9.f90
 create mode 100644 gcc/testsuite/gfortran.dg/intent_out_15.f90