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

--- Comment #2 from anlauf at gcc dot gnu.org ---
Slightly rewritten (we only need the interface of foo):

module test
  implicit none
  interface
     subroutine foo(s)
       character(*), intent(in) :: s
     end subroutine foo
  end interface
contains
  subroutine bar(s) bind(c)
    character(*), intent(in) :: s
    call foo(s)
  end
end

This gives:

__attribute__((fn spec (". r ")))
void bar (struct CFI_cdesc_t00 & restrict _s)
{
  integer(kind=8) s.0;
  character(kind=1)[1:s.0] * s;
  bitsizetype D.4279;
  sizetype D.4280;

  D.4279 = (bitsizetype) (sizetype) NON_LVALUE_EXPR <s.0> * 8;
  D.4280 = (sizetype) NON_LVALUE_EXPR <s.0>;
  s.0 = (integer(kind=8)) _s->elem_len;
  s = (character(kind=1)[1:s.0] *) _s->base_addr;
  foo ((character(kind=1)[1:s.0] *) s, s.0);
}

Reply via email to