This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
Re: [Patch, libfortran] Fix PR 19014 and 19106
- From: Tobias Schlüter <tobias dot schlueter at physik dot uni-muenchen dot de>
- To: Thomas Koenig <Thomas dot Koenig at online dot de>
- Cc: fortran at gcc dot gnu dot org, gcc-patches at gcc dot gnu dot org
- Date: Sat, 09 Apr 2005 22:48:42 +0200
- Subject: Re: [Patch, libfortran] Fix PR 19014 and 19106
- References: <20050408220824.GA28942@meiner.onlinehome.de>
Thomas Koenig wrote:
> this fixes PR 19106 and PR 19014. The solution adopted should
> work. This time, I've also added checks in the test cases.
>
> Regression-test on 4.0 and mainline tomorrow (I have to go to
> bed sometimes :-)
>
> OK if this passes?
With two minor fixes that I point out below, this is ok for the mainline and
for the branch once it's reopened. (I don't think we should push for the
last-minute inclusion of Fortran patches into 4.0, a bad checkin could result
in a broken gcc release which would be much worse than gfortran being slightly
less usable before 4.0.1)
Please don't post generated files to the list.
> 2005-04-09 Thomas Koenig <Thomas.Koenig@online.de>
>
> PR libfortran/19106
> PR libfortran/19014
> * m4/iforeach.m4 (name`'rtype_qual`_'atype_code):
> If retarray->data is NULL (i.e. the front end does not
> know the rank and dimenson of the array), fill in its
> properties and allocate memory.
> Change the assertions about rank and dimension of retarray into
> runtime errors and only check them for retarray->data != NULL.
> Do the same for correcting the stride from 0 to 1 in retarray.
> (`m'name`'rtype_qual`_'atype_code): ditto.
> * m4/ifunction.m4 (name`'rtype_qual`_'atype_code): ditto.
> (`m'name`'rtype_qual`_'atype_code): ditto.
> * generated/all_l4.c: Regenerated.
> * generated/all_l8.c: Regenerated.
> * generated/any_l4.c: Regenerated.
> * generated/any_l8.c: Regenerated.
> * generated/count_4_l4.c: Regenerated.
> * generated/count_4_l8.c: Regenerated.
> * generated/count_8_l4.c: Regenerated.
> * generated/count_8_l8.c: Regenerated.
> * generated/maxloc0_4_i4.c: Regenerated.
> * generated/maxloc0_4_i8.c: Regenerated.
> * generated/maxloc0_4_r4.c: Regenerated.
> * generated/maxloc0_4_r8.c: Regenerated.
> * generated/maxloc0_8_i4.c: Regenerated.
> * generated/maxloc0_8_i8.c: Regenerated.
> * generated/maxloc0_8_r4.c: Regenerated.
> * generated/maxloc0_8_r8.c: Regenerated.
> * generated/maxloc1_4_i4.c: Regenerated.
> * generated/maxloc1_4_i8.c: Regenerated.
> * generated/maxloc1_4_r4.c: Regenerated.
> * generated/maxloc1_4_r8.c: Regenerated.
> * generated/maxloc1_8_i4.c: Regenerated.
> * generated/maxloc1_8_i8.c: Regenerated.
> * generated/maxloc1_8_r4.c: Regenerated.
> * generated/maxloc1_8_r8.c: Regenerated.
> * generated/maxval_i4.c: Regenerated.
> * generated/maxval_i8.c: Regenerated.
> * generated/maxval_r4.c: Regenerated.
> * generated/maxval_r8.c: Regenerated.
> * generated/minloc0_4_i4.c: Regenerated.
> * generated/minloc0_4_i8.c: Regenerated.
> * generated/minloc0_4_r4.c: Regenerated.
> * generated/minloc0_4_r8.c: Regenerated.
> * generated/minloc0_8_i4.c: Regenerated.
> * generated/minloc0_8_i8.c: Regenerated.
> * generated/minloc0_8_r4.c: Regenerated.
> * generated/minloc0_8_r8.c: Regenerated.
> * generated/minloc1_4_i4.c: Regenerated.
> * generated/minloc1_4_i8.c: Regenerated.
> * generated/minloc1_4_r4.c: Regenerated.
> * generated/minloc1_4_r8.c: Regenerated.
> * generated/minloc1_8_i4.c: Regenerated.
> * generated/minloc1_8_i8.c: Regenerated.
> * generated/minloc1_8_r4.c: Regenerated.
> * generated/minloc1_8_r8.c: Regenerated.
> * generated/minval_i4.c: Regenerated.
> * generated/minval_i8.c: Regenerated.
> * generated/minval_r4.c: Regenerated.
> * generated/minval_r8.c: Regenerated.
> * generated/product_c4.c: Regenerated.
> * generated/product_c8.c: Regenerated.
> * generated/product_i4.c: Regenerated.
> * generated/product_i8.c: Regenerated.
> * generated/product_r4.c: Regenerated.
> * generated/product_r8.c: Regenerated.
> * generated/sum_c4.c: Regenerated.
> * generated/sum_c8.c: Regenerated.
> * generated/sum_i4.c: Regenerated.
> * generated/sum_i8.c: Regenerated.
> * generated/sum_r4.c: Regenerated.
> * generated/sum_r8.c: Regenerated.
>
> 2005-04-09 Thomas Koenig <Thomas.Koenig@online.de>
>
> * gfortran.fortran-torture/execute/intrinsic_anyall.f90:
> Added test for write statements
> * gfortran.fortran-torture/execute/intrinsic_count.f90:
> Added test for write statements
> * gfortran.fortran-torture/execute/intrinsic_mmloc.f90:
> Added test for write statements
> * gfortran.fortran-torture/execute/intrinsic_mmval.f90:
> Added test for write statements
> * gfortran.fortran-torture/execute/intrinsic_product.f90:
> Added test for write statements
> * gfortran.fortran-torture/execute/intrinsic_sum.f90:
> Added test for write statements
Well, you're not testing the WRITE statement, you're testing callee-allocated
return values. 'Likewise' is a perfectly valid ChangeLog entry for all files
but the first.
>
> ------------------------------------------------------------------------
>
> Index: iforeach.m4
> ===================================================================
> RCS file: /cvs/gcc/gcc/libgfortran/m4/iforeach.m4,v
> retrieving revision 1.6
> diff -p -c -r1.6 iforeach.m4
> *** iforeach.m4 12 Jan 2005 21:27:31 -0000 1.6
> --- iforeach.m4 8 Apr 2005 21:54:02 -0000
> *************** name`'rtype_qual`_'atype_code (rtype * r
> --- 21,48 ----
>
> rank = GFC_DESCRIPTOR_RANK (array);
> assert (rank > 0);
Please make this assertion a runtime error as well.
> --- 126,154 ----
>
> rank = GFC_DESCRIPTOR_RANK (array);
> assert (rank > 0);
Same here.
- Tobi