https://gcc.gnu.org/bugzilla/show_bug.cgi?id=88052

--- Comment #9 from Jerry DeLisle <jvdelisle at gcc dot gnu.org> ---
(In reply to Dominique d'Humieres from comment #8)
> > The error I found is not just violating a constraint in f2008 or above. 
> > The same constraint with different wording is in f2003, f95 and f90.
> 
> Agreed, so I removed the reference to f2008 from the summary.
> 
> While playing with the patch in comment 4, I saw the following problems:
> 
> (1) The behaviors of the frontend and the library are no longer consistent:
>   print "(AF9.6)", 'pi =',4*atan(1.0)
> is accepted at compile time, but gives an error at runtime.
> The error detection should probably be updated in the frontend.
> 
> (2) The following tests fail
> 
> FAIL: gfortran.dg/comma_format_extension_4.f   -O*  execution test
> FAIL: gfortran.dg/dollar_edit_descriptor_2.f   -O*  execution test
> FAIL: gfortran.dg/fmt_error_9.f   -O*  execution test
> FAIL: gfortran.dg/fmt_g0_5.f08   -O*  execution test
> FAIL: gfortran.dg/fmt_t_2.f90   -*0  execution test
> 
> I agree with the fixes at
> 
> https://gcc.gnu.org/ml/fortran/2018-11/msg00123.html

Yes I fixed those test cases with the patch because they are not standard
conforming. I tried to make sure we were still testing the relevant features.

> 
> although I would have added a { dg-options "-std=legacy" } to fmt_t_2.f90.
> 
> (3) If the code is compiled with -std=legacy -pedantic, the format is
> rejected at runtime (see pr88190).
> 
> (4) It looks weird to use compile_options.warn_std instead of
> compile_options.allow_std (see pr88190 again).
> 
> An alternative patch is
> 
> -      /* Assume a missing comma, this is a GNU extension */
> -      goto format_item_1;
> +      if (compile_options.allow_std & GFC_STD_GNU) 
> +        /* Assume a missing comma, this is a GNU extension. */
> +        goto format_item_1;
> +      format_error (dtp, tail, comma_missing);
> 
> PRO
> 
> (a) It does not change the behavior for -std=gnu or std=legacy.

I presumed we did not want to allow the missing comma by default and since we
cant currently do it with allow_std I opted for the warn_std as I did with
pr78351.

> (b) It is a simple fix of the above problems that gives the expected errors
> with std=f*.
> 
> AGAINST
> 
> > If you want to allow any constraint violations I think that should be an 
> > option, not the default.
> 
> It does not fix that. However if this is deemed important by a majority
> (don't count me for it, but I won't fight), it would be quite easy to
> replace GFC_STD_GNU with GFC_STD_LEGACY where appropriate once pr88190 will
> be fixed.

Yes easy to replace one way or the other. By the way, the behaviors between
frontend and runtime have been around a long time. I opened a PR way back on
this because it seemed so counterintuitive. If we really want to fix that issue
flagged in your PR88190 we probably ought to write down for ourselves a
description of the behaviors we want to see and document it and fix it once and
for all.  Even the -pedantic flag is a bit obtuse in my mind.

Reply via email to