The use -std=f202y seems like a reasonable approach to
wall off experimental implementations of proposed changes
to the Fortran standard.  Thomas has introduced -funsigned
for this purpose, which I suppose can be thought of a more
fine-grained wall.  

BTW, J3 passed 24-136r1.txt, which is marked as DIN-4,
"Generic processing of assumed-rank objects".  Malcohm Cohen
is listed as the author, but he may have taken the reins from
Reinhold.  I believe Malcohm is the UK rep to J3.

-- 
steve

On Tue, Sep 10, 2024 at 08:49:45AM +0100, Paul Richard Thomas wrote:
> Hi All,
> 
> This correspondence touches on something that I was going to raise - how do
> we incorporate experimental F202Y features?
> 
> The reason that I ask is that Reinhold Bader proposed extensions to the
> processing of assumed rank objects, which became a DIN proposal to WG5 -
> see attached. It made so much sense to me that, in June, I wrote an
> experimental implementation. The experimental implementation added the
> reshape intrinsic as well as allowing remapped pointer assignment and
> associate. A testcase is attached.
> 
> In the intervening three months the experimental patch developed bit-rot to
> the extent that two chunks would no longer apply. For this reason, I am
> very reluctant to set up a separate branch that would have to be
> synchronised over a good number of years before 202y becomes the new
> standard. Additionally, the array descriptor reform branch suffered so
> badly from this that I gave up on it. I propose that we introduce
> -std=F202Y, which will prevent experimental F202Y features from being used
> unless this standard is selected. That way they remain in mainline and are
> readily identifiable for pruning come the day or maintenance as the F202Y
> proposals develop. If this is not acceptable, I will open a PR in which
> experimental patches can be stashed. Given previous experience, my
> preference is very much for the former!
> 
> I have also drafted much of the standardese, relative to F2003, and I
> suggest that, in memory of Reinhold, this continue as a DIN
> proposal. @Thomas, are you willing to carry this forward or should I
> transfer it to being a UK proposal?
> 
> Best regards
> 
> Paul
> 
> 
> On Mon, 9 Sept 2024 at 18:34, Steve Kargl <s...@troutmask.apl.washington.edu>
> wrote:
> 
> > On Mon, Sep 09, 2024 at 12:26:53AM -0700, Damian Rouson wrote:
> > > On Sat, Sep 7, 2024 at 22:26 Steve Kargl <
> > s...@troutmask.apl.washington.edu>
> > > wrote:
> > >
> > > > On Sat, Sep 07, 2024 at 08:17:42PM -0700, Jerry D wrote:
> > > >
> > > >
> > > > I personally would like to see -std=f2023 made the default.
> > >
> > > I would absolutely love that too.  I’ve lost countless hours chasing down
> > > issues (in other compilers) that didn’t make standard behavior the
> > default.
> > >
> > > > Any, and all, extensions would require an explicit option to
> > > > accept the non-standard Fortran construct.
> > >
> > > This would be awesome.
> > >
> > > > Unfortuantely, the -std=gnu ship sailed years ago.
> > >
> > > What makes it a closed issue?
> > >
> >
> > POLA
> >
> > As Janne mentioned, INTEGER*4 etc would lead to significant traffic
> > in fortran@ and bugzilla about breaking people's code.  Back in
> > 2004, when I started contributing to gfortran development, the
> > prevailing thought was "if g77 accepted it, then gfortran should
> > also accept it" for backwards compatibility.  Here, 'it' was a
> > large number of vendor extensions.  Some have been put behind options
> > such as Cray pointers and DEC Fortran extensions.
> >
> > %  grep GFC_STD_GNU gcc/fortran/*.cc | wc -l
> >    340
> >
> > There are 340 occurences of GFC_STD_GNU that we would need to review
> > to determine what to do (e.g., a new option or put it under the blank
> > -std=legacy).  338 of these occur in the front-end before the red-black
> > trees are translated to tree-ssa and handled to the middle-end.
> > Perhaps, an opportunity for lurkers on the list to get involve with
> > a simple review of the code.
> >
> > Consider,
> >
> >    data x/1/
> >    data x/42/   ! <-- Should be an error
> >    print *, x
> >    end
> >
> > The above compiles without a warning (even if -Wall -Wextra
> > -Wsurprising are used).
> >
> > % gfcx -c -std=f2018 a.f90
> > a.f90:2:12:
> >
> >     2 |    data x/42/
> >       |            1
> > Error: GNU Extension: re-initialization of 'x' at (1)
> >
> > When Thomas introduced the ability to build interfaces, he had to
> > include the -fallow-argument-mismatch option.  When I reworked
> > gfortran's BOZ code, I added -fallow-invalid-boz.  There were a few
> > annoyed users.  They had a choice: use an option to compile their
> > code or fix thier code.  Many people chose the former, and now Makefiles
> > all over the internet are enshired with these options.
> >
> > The ship has sailed.  I think Harald's response sums up what
> > needs to happen, and I agree with him.  Use caution when moving
> > an extension under -std=legacy.   A request to add a new extension,
> > which is not on a path to standardization, will likely get little
> > attention.
> >
> >
> > --
> > Steve
> >


>    real :: x(2,2,2)
>    real, parameter :: xp(*) = [1,2,3,4,5,6,7,8]
>    x = reshape (xp, [2,2,2])
>    call my_sub (x)
>    if (any (reshape (x, [8]) .ne. xp(8:1:-1))) stop 1
> contains
>    subroutine my_sub (arg)
>      real, target, contiguous :: arg(..)
>      real, allocatable :: y(:)
>      real, pointer :: argp(:,:)
>      integer :: i
>      if (size (arg) .ne. 8) stop 10
> 
> ! Check reshape
>      y = reshape (arg, [size (arg)])
>      if (any (y .ne. xp)) stop 20
> 
> ! Check pointer assignment
>      argp(1:2,1: size(arg)/2) => arg
>      if (size (argp) .ne. size (x)) stop 30
>      if (any ((argp) .ne. reshape (x, [2, size (x)/2]))) stop 31
> 
> ! Check ASSOCIATE
>      i = size (arg)
>      associate (a(1:2,1:i/2) => arg)
>         if (any (a .ne. argp)) stop 40
>      end associate
> 
>      associate (a(1:size(arg)) => arg)
>         if (any (a .ne. xp)) stop 41
>         a = a(8:1:-1)
>      end associate
>    end
> end


-- 
Steve

Reply via email to