http://gcc.gnu.org/bugzilla/show_bug.cgi?id=50892

Tobias Burnus <burnus at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
           Keywords|                            |ice-on-valid-code
                 CC|                            |burnus at gcc dot gnu.org
      Known to fail|                            |4.3.4

--- Comment #2 from Tobias Burnus <burnus at gcc dot gnu.org> 2011-10-29 
15:04:34 UTC ---
(In reply to comment #0)
> In addition to the internal compiler error, there is a problem mentioned in a
> comment.  According to a Fortran language lawyer, Fortran 2008 allows two 
> local
> definitions of procedures to have the same binding label.  This problem is
> illustrated in a comment.

I think that's PR 48858.

> I'm mainly filing this bug because of the internal compiler error

Simplified test case below. Dump shows:


test ()
{
  character(kind=1)[1:1] * str;
  void * text;
  static void fortranchar (character(kind=1)[1:] * &, integer(kind=4), void *);

  {
    character(kind=1)[1:MAX_EXPR <D.1732, 0>] * pstr.0;
    integer(kind=4) D.1732;
    void * D.1730;

    D.1730 = text;
    D.1732 = strlen (*D.1730);
    fortranchar (&pstr.0, MAX_EXPR <D.1732, 0>, D.1730);
    str = (character(kind=1)[1:1] *) pstr.0;
  }
}



program test
  use, intrinsic :: ISO_C_Binding, only: c_ptr, c_int, c_char
  type(c_ptr) :: text
  character, pointer :: str
  interface
    pure integer(c_int) function strlen (c) bind(c,name='strlen')
      import
      type(c_ptr), intent(in), value :: c
    end function strlen
  end interface
  str => FortranChar(text)
contains
  function FortranChar ( C )
    type(c_ptr), intent(in), value :: C
    character(len=strlen(c),kind=c_char), pointer :: FortranChar
  end function FortranChar
end program test

Reply via email to