Hi Thomas, Could you provide the patch, please, or was it already posted?
Cheers Paul On Sun, 28 Apr 2019 at 10:46, Thomas Koenig <tkoe...@netcologne.de> wrote: > > Hello world, > > going back a patch which was not included in gcc-9 because it was too > late in the development cycle, here is a patch which, when optimizing > and not optimizing for size, does inline packing for an argument. > As you can see from the code and the test cases, there is provision > for optional arguments. It was necessary to split some test cases > to take account for the new pack inline / pack in the library split. > > I did regression-testing on x86_64-pc-linux-gnu, in 64-bit mode. > (Dominique, could you tell us again what the magic incantation for > 32-bit mode is?) > > OK for trunk? (Not for backporting) > > Regards > > Thomas > > 2019-04-28 Thomas Koenig <tkoe...@gcc.gnu.org> > > PR fortran/88821 > * expr.c (gfc_is_simply_contiguous): Return true for > an EXPR_ARRAY. > * trans-array.c (is_pointer): New function. > (gfc_conv_array_parameter): Call gfc_conv_subref_array_arg > when not optimizing and not optimizing for size if the formal > arg is passed by reference. > * trans-expr.c (gfc_conv_subref_array_arg): Add arguments > fsym, proc_name and sym. Add run-time warning for temporary > array creation. Wrap argument if passing on an optional > argument to an optional argument. > * trans.h (gfc_conv_subref_array_arg): Add optional arguments > fsym, proc_name and sym to prototype. > > 2019-04-28 Thomas Koenig <tkoe...@gcc.gnu.org> > > PR fortran/88821 > * gfortran.dg/alloc_comp_auto_array_3.f90: Add -O0 to dg-options > to make sure the test for internal_pack is retained. > * gfortran.dg/assumed_type_2.f90: Split compile and run time > tests into this and > * gfortran.dg/assumed_type_2a.f90: New file. > * gfortran.dg/c_loc_test_22.f90: Likewise. > * gfortran.dg/contiguous_3.f90: Likewise. > * gfortran.dg/internal_pack_11.f90: Likewise. > * gfortran.dg/internal_pack_12.f90: Likewise. > * gfortran.dg/internal_pack_16.f90: Likewise. > * gfortran.dg/internal_pack_17.f90: Likewise. > * gfortran.dg/internal_pack_18.f90: Likewise. > * gfortran.dg/internal_pack_4.f90: Likewise. > * gfortran.dg/internal_pack_5.f90: Add -O0 to dg-options > to make sure the test for internal_pack is retained. > * gfortran.dg/internal_pack_6.f90: Split compile and run time > tests into this and > * gfortran.dg/internal_pack_6a.f90: New file. > * gfortran.dg/internal_pack_8.f90: Likewise. > * gfortran.dg/missing_optional_dummy_6: Split compile and run time > tests into this and > * gfortran.dg/missing_optional_dummy_6a.f90: New file. > * gfortran.dg/no_arg_check_2.f90: Split compile and run time tests > into this and > * gfortran.dg/no_arg_check_2a.f90: New file. > * gfortran.dg/typebound_assignment_5.f90: Split compile and run > time > tests into this and > * gfortran.dg/typebound_assignment_5a.f90: New file. > * gfortran.dg/typebound_assignment_6.f90: Split compile and run > time > tests into this and > * gfortran.dg/typebound_assignment_6a.f90: New file. > * gfortran.dg/internal_pack_19.f90: New file. > * gfortran.dg/internal_pack_20.f90: New file. > * gfortran.dg/internal_pack_21.f90: New file. -- "If you can't explain it simply, you don't understand it well enough" - Albert Einstein