[Patch, Fortran, OOP] PR 56284: ICE with alternate return in type-bound procedure

Tobias Burnus burnus@net-b.de
Mon Apr 1 21:29:00 GMT 2013


Janus Weil wrote:
> here is a small patch which does two things:
> 1) It fixes the ICE in the subject line (in a rather obvious way).
> 2) It warns about alternate-return arguments (which is an obsolescent
> feature), and adds -std=legacy to some test cases to suppress the
> warning.

I would prefer if you could use "-std=gnu", I find -std=legacy is too 
special. Alternate-returns are perfectly valid in Fortran 2008 - the 
standard just requires the obsolescent warning, which 
-std=f95/f2003/f2008/f2008ts activate.  And by default "-pedantic". 
Using "" or "-std=gnu" should be sufficient to disable "-pedantic".

> Regarding the second point, one should mention that we already have a
> warning for "alternate return", but this only triggers if there is an
> actual RETURN statement (which is not the case for the test code in
> the PR). The warning I'm adding triggers on the appearance of an
> asterisk argument.

Shouldn't one then remove the other warning, which should be then 
unreachable? If so, please do so.

> This induces a certain redundancy, i.e. we warn about both the
> alternate-return argument and the alternate RETURN statement. The
> question is if we want to keep this, or whether on can remove the old
> warning for the RETURN statement (which could be done in a follow-up
> patch).

Or it is not unreachable but leads to double-diagnostic which is not 
better, either.

> The patch is regtested on x86_64-unknown-linux-gnu. Ok for trunk?

OK with the -std= change. (Please run "make 
RUNTESTFLAGS="dg.exp=.<name>.f90" prior committal to check whether it 
indeed works with -std=gnu.)

Thanks for the patch!

Tobias

PS: Don't forget to copy the commit message to Bugzilla - thanks!

> 2013-04-01  Janus Weil  <janus@gcc.gnu.org>
>
>      PR fortran/56284
>      PR fortran/40881
>      * decl.c (gfc_match_formal_arglist): Warn about alternate-return
>      arguments.
>      * interface.c (check_dummy_characteristics): Return if symbols are NULL.
>
> 2013-04-01  Janus Weil  <janus@gcc.gnu.org>
>
>      PR fortran/56284
>      PR fortran/40881
>      * gfortran.dg/altreturn_8.f90: New.
>      * gfortran.dg/altreturn_2.f90: Add -std=legacy.
>      * gfortran.dg/intrinsic_actual_3.f90: Ditto.
>      * gfortran.dg/invalid_interface_assignment.f90: Ditto.



More information about the Gcc-patches mailing list