This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [Patch, libfortran] Fix PR 19014 and 19106


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


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]