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

kargl at gcc dot gnu.org changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |kargl at gcc dot gnu.org

--- Comment #2 from kargl at gcc dot gnu.org ---
(In reply to anlauf from comment #1)
> Confirmed.
> 
> There is an inconsistency either in the generated code for the caller or
> the callee:
> 
> integer(kind=4) testoptional (character(kind=1)[1:1] & restrict w,
> integer(kind=4) x, integer(kind=8) _w, logical(kind=1) _x)
> 
> vs.
> 
>   t = testoptional (&s, 0, 0, 1);
> 
> How does the ABI define the ordering of character length and presence flag?

Yep, there's an API issue.  If you use

   character(len=13) :: s

the produced code is

     t = testoptional (&s, 0, 0, 13);

so the hidden charlen is tacked on last whereas I think the hidden presence
argument is also expected to be last.  Likely a counting error in generating
the interface.

Reply via email to