[PATCH, gfortran] g77's FNUM, STAT, FSTAT, and FLUSH intrinsics

Paul Brook paul@codesourcery.com
Thu Dec 2 04:12:00 GMT 2004


On Sunday 28 November 2004 17:02, Steve Kargl wrote:
> I have implemented FLUSH via Janne's comments.  That is, I have
> left struct unix_stream in unix.c and left fd_flush() with its
> static declaration.  FLUSH now uses Janne's flush() wrapper, which
> is simply a redirection via a cast of *stream to a *unix_stream.
>
> This has been bootstrapped and regression tested with no new regressions
> on i386-unknown-freebsd6.0.

Your type kind handling is broken.  These functions should accept any integer 
kind for the intent(in) arguments, and require default integer kind for 
intent(out) arguments.

For example:
i = fnum(j_8) ! legal
i = fnum(j_1) ! legal
call fstat (i_1, a, s) ! legal
call fstat(i, a, s_2) ! illegal
i = fstat(i_8, a_8) ! illegal

You probably need to go back and check the other intrinsics that have been 
added recently for similar bugs.

Modified and applied as attached.
Tested on i686-linux.

Paul

2004-12-02  Steven G. Kargl  <kargls@comcast.net>
 Paul Brook  <paul@codesourcery.com>

libgfortran/
 * intrinsics/flush.c: New file.
 * intrinsics/fnum.c: ditto
 * intrinsics/stat.c: ditto
 * io/io.h (unit_to_fd): Add prototype.
 * io/unix.c (unit_to_fd): New function.
 * configure.ac: Add test for members of struct stat.  Check for
 sys/types.h and sys/stat.h
 * Makefile.am: Add intrinsics/{flush.c,fnum.c,stat.c}
 * configure.in: Regenerate.
 * config.h.in: Regenerate.
 * Makefile.in: Regenerate.
fortran/
 * check.c (gfc_check_flush, gfc_check_fnum): New functions.
 (gfc_check_fstat, gfc_check_fstat_sub): New functions.
 (gfc_check_stat, gfc_check_stat_sub): New functions.
 * gfortran.h (GFC_ISYM_FNUM,GFC_ISYM_FSTAT,GFC_ISYM_STAT): New symbols
 * intrinsic.c (add_functions,add_subroutines): Add flush, fnum,
 fstat, and stat to intrinsics symbol tables.
 * intrinsic.h (gfc_check_flush, gfc_resolve_stat_sub): Add prototypes.
 (gfc_resolve_fstat_sub, gfc_resolve_stat): Ditto.
 * iresolve.c (gfc_resolve_fnum, gfc_resolve_fstat): New functions.
 (gfc_resolve_stat, gfc_resolve_flush): New functions.
 (gfc_resolve_stat_sub,gfc_resolve_fstat_sub): New functions
 * trans-intrinsic.c (gfc_conv_intrinsic_function): Add new intrinsics.
-------------- next part --------------
A non-text attachment was scrubbed...
Name: patch
Type: text/x-diff
Size: 39977 bytes
Desc: not available
URL: <http://gcc.gnu.org/pipermail/fortran/attachments/20041202/2ba75ae8/attachment.bin>


More information about the Fortran mailing list