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

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 Tobias Burnus from comment #1)
> Better example:
> 
> character(kind=4) function f(x) bind(C)
>   character(kind=4), value :: x
> end
> 
> 
> Has the dump:
> 
> __attribute__((fn spec (". w ")))
> character(kind=1) f (character(kind=1) x)
> {
>   (void) 0;
> }
> 
> 
> Note the change to kind=1

So, you want gfortran to reject the function.

It gets real ugly with

function f(x) bind(C) result(a)
   character(kind=4) a
   character(kind=4), value :: x
   a = x
end

leading to

__attribute__((fn spec (". w ")))
character(kind=1) f (character(kind=1) x)
{
  character(kind=1) a;

  *(character(kind=4) *) &a = *(character(kind=4) *) &x;
  return a;
}

Reply via email to