On Fri, May 24, 2019 at 12:33:51PM +0200, Jakub Jelinek wrote:
> On Fri, May 24, 2019 at 11:28:34AM +0100, Mark Eggleston wrote:
> > > FAIL: gfortran.dg/fmt_f_default_field_width_3.f90   -O   (test for
> > > errors, line 33)
> > > PASS: gfortran.dg/fmt_f_default_field_width_3.f90   -O  (test for excess 
> > > errors)
> > > 
> > > that is, it seems there's no error message generated for line 33.
> > > 
> > > Christophe
> > > 
> > 
> > There is no error for line 33 because it isn't included in the compilation
> > because __GFC_REAL_16__ isn't defined. DejaGnu doesn't know this and the
> > dg-warning directive for this line is still processed.
> > 
> > I don't know enough about DejaGnu directives to determine whether this
> > situation can be handled. Does anybody know how to deal with a line that if
> > compiled a warning message output and if not compiled there is no output?
> > 
> > Is the easiest solution to omit the test code where kind=16?
> 
> You can do (pseudo patch, untested):
>  #ifdef __GFC_REAL_16__
>       real_16 = 4.18
> -     write(buffer, fmt) ':',real_16,':' ! { dg-error "Positive width 
> required" }
> +     write(buffer, fmt) ':',real_16,':' ! { dg-error "Positive width 
> required" "" { target fortran_real_16 } }
>  #endif
> 
> Effective target fortran_real_16 should be true whenever:
>         real(kind=16) :: x
>         x = cos (x)
>         end
> compiles and links into an executable without diagnostics.
> 

Christophe, can you test Jakub's proposed fix?  If it passes,
I'll update the other testcases.

-- 
Steve

Reply via email to