[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