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

--- Comment #13 from Tomas Kalibera <tomas.kalibera at gmail dot com> ---
I understand the compiler may not know and typically does not whether the
called function accepts "character(len=1)" or "character(len=*)", so it may
have to pass the 1. But the situation where I suggest not writing the 1 is more
subtle (see my original post -
https://gcc.gnu.org/ml/fortran/2019-05/msg00021.html).

There DPOSV is tail-calling (jumping) into DPOTRS). DPOSV wants to pass on the
length of UPLO (1) to DPOTRS. DPOSV knows it was called with this hidden length
argument of 1, and indeed at the same location on the stack as it is needed for
DPOTRS, as the length of the same variable UPLO, but it still writes a
compile-time constant 1 to that location on the stack that already has (should
have) 1.

Reply via email to