--- Comment #25 from Thomas Koenig <tkoenig at gcc dot gnu.org> ---
(In reply to janus from comment #23)
> (In reply to Thomas Koenig from comment #21)
> > If we make guarantees that the standard does not, we will be
> > creating our own language
> I certainly don't want to create my own language. I'm trying to use the
> freedom that the Fortran standard (unfortunately) gives in this area in a
> reasonable way.
> > (and people will get problems moving
> > code to another compiler).
> We do have problems with compiler-dependent behavior already. The behavior
> I'm proposing is consistent with what ifort, PGI and flang do.
But that is something not guaranteed by the standard...
> > Warn, yes. This is the kind of thing that -Wsurprising is for,
> > so people will get something with -Wall. (I volunteer for that).
> What do you want to warn about? And how?
A front end pass (what else did you expect? :-)
If an impure function is found (recursively) in the operands of an .AND.
expression, issue a
gfc_warning(OPT_Wsurprising, "Impure function %qs at %L may not be
if (flag .and. f(x) > 0.)
would also be warned about.
> > Optimize, yes. This could also be integrated with the warning.
> Optimize, yes, but not at the price of changing results.
Not against what the standard guarantees.
> > Change the language, no.
But that is what you are proposing - we would make a guarantee that
the standard does not make.