Hi Mikael,

thanks for this impressive series of patches.

Am 18.09.22 um 22:15 schrieb Mikael Morin via Fortran:
Changes from v1:
  - patch 9/10 (clobber subreferences) has been dropped.
  - patch 10/10 (now 9/9): The test has been adjusted because some checks
    were failing without the dropped patch.  Basically there are less
    clobbers generated.
  - patch 5: In the test, an explicit kind has been added to integers,
    so that the dump match is not dependent on the
    -fdefault-integer-8 option.
  - patches 3, 4, 5, 8, and 10/10 (now 9/9): The tests have been renamed
    so that they are numbered in increasing order.

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.

This LGTM.  It also fixes a regression introduced with r9-3030 :-)
If you think that this set (1-3) is backportable, feel free to do so.

The following patches are gradual condition loosenings to enable clobber
generation in more and more cases.

Patches 4-8 all look fine.  Since they address missed optimizations,
they are probably something for mainline.

I was wondering if you could add a test for the change in patch 7
addressing the clobber generation for an associate-name, e.g. by
adding to testcase intent_optimize_7.f90 near the end:

  associate (av => ct)
    av = 111222333
    call foo(av)
  end associate
  if (ct /= 42) stop 3

plus the adjustments in the patterns.

Regarding patch 9, I do not see anything wrong with it, but then
independent eyes might see more.  I think it is ok for mainline
as is.

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?

Yes.

Thanks,
Harald


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

Mikael Morin (8):
   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 derived types [PR41453]

  gcc/fortran/trans-expr.cc                     | 81 ++++++++++++-------
  gcc/fortran/trans.h                           |  3 +-
  .../gfortran.dg/intent_optimize_4.f90         | 43 ++++++++++
  .../gfortran.dg/intent_optimize_5.f90         | 24 ++++++
  .../gfortran.dg/intent_optimize_6.f90         | 34 ++++++++
  .../gfortran.dg/intent_optimize_7.f90         | 42 ++++++++++
  .../gfortran.dg/intent_optimize_8.f90         | 66 +++++++++++++++
  gcc/testsuite/gfortran.dg/intent_out_15.f90   | 27 +++++++
  8 files changed, 290 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_out_15.f90




Reply via email to