On 8/28/25 1:51 PM, Harald Anlauf wrote:
Dear all,

the attached patch tries to improve diagnostics at compile time
for character arguments in various ways:

- we did unconditionally give a warning for too short character
   actual arguments passed to a scalar dummy; we now give an error
   when -std=f* is specified.  The warning is retained for
   -std=legacy/gnu as several testcases depend on it.

- if the actual argument has length zero, no warning was given.
   This had been remedied.

- if a character actual argument is longer than the dummy, we now
   give a truncation warning if -Wcharacter-truncation is given.

- If a character formal argument has the pointer or allocatable
   attribute, or is an array that is not assumed or explicit size,
   we now generate an error by default unless -std=legacy is
   specified, which falls back to just giving a warning as before.
   (One testcase depends on it.)

The errors emitted as described above have been checked to be
consistent with NAG. :-)

There is one thing where we (still?) deviate from F2018:15.5.2.4.
The standard text explicitly mentions default character kind and
C character kind in several contexts, which could be interpreted
as excluding kind=4 character.  However, I do not see why this
should be the case - there is no actual technical reason, and
also NAG handles kind=4 character the same as kind=1 character
in the tests.  If someone feels strongly about it, we could
make an interp request to resolve this.  I would consider this
a gfortran extension for the time being.

Regtested on x86_64-pc-linux-gnu.  OK for mainline?

Thanks,
Harald


Yes, OK Harald.

Thanks for the work.

Jerry

Reply via email to