On Wed, Jun 11, 2025 at 10:18:37PM +0200, Harald Anlauf wrote: > > the attached patch is a first attempt to fix some issues with the GNU > intrinsics STAT/LSTAT/FSTAT which are g77 heritage. This patch is > preparatory for dealing with the issue reported in PR82480 in that > the default version of theses intrinsics use INTEGER(KIND=4) results > that may overflow, unless -fdefault-integer-8 is used. > > This patch consists of the following parts: > > - correct keyword names from g77 to gfortran implementation and manual > > - enhance checking of INTENT(OUT) arguments (VALUES, STATUS) > > - correct error messages in runtime library > > - for simplicity, variables have been consistently renamed in the > present context ("array" -> "values"). > > - for the INTEGER(KIND=4) versions the STATUS returns ERANGE if > an overflow is encountered. > > The latter is certainly debatable, as one of the existing testcases > stat_{1,2}.f90 may fail on systems where e.g. an inode number is larger > than INT32_MAX may occur. Options are to drop the overflow check, or > to run those testcases with additional option -fdefault-integer-8. > > Opinions? >
Thanks for doing these types of cleanups. You may want to take a peek at https://gcc.gnu.org/bugzilla/show_bug.cgi?id=30372 where I posted a few cleanups for SLEEP, UMASK, UNLINK, etc. In those cleanups, I would cast arguments to integer(4) if I could (ie., if I know the arg was in range) to prevent an explosion in the size of libgfortran. I'll need to think about your -fdefault-integer-8 question for a bit. Because that option exists and can change default integer kind, we'll need *_i4 and *_i8 versions of the functions in libgfortran. I suspect we'll need to run the testcases with -fdefault-integer-8. If no one approves your patch by Saturday, I'll review.