This is the mail archive of the gcc-bugs@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[Bug fortran/28722] Fortran front-end produces mismatch trees



------- Comment #3 from fxcoudert at gcc dot gnu dot org  2006-10-02 15:24 -------
Here's a detailed analysis of the current testsuite failures with Andrew's
patches from PR22368 (all patches applied) on i686-linux.

First testcase (from actual_array_constructor_1.f90):

  subroutine bar(a)
    character(len=*) :: a
    call foo((/ a, 'g' /))
  end

The error message issued is
actual_array_constructor_1.f90: In function ?bar?:
actual_array_constructor_1.f90:3: error: statement types mismatch
(*D.941)[S.9D.942]{lb: 0 sz: _a.8D.939} = D.946;

charD.14[1:_aD.902]
charD.14[1:1]
actual_array_constructor_1.f90:3: internal compiler error: verify_stmts failed



Second testcase:

  interface
    pure function double (string)
      character (len = *), intent (in) :: string
      character (len = len (string)) :: double
    end function double
  end interface

  print *, f5("foo")

contains
  function f5 (string)
    character (len = *) :: string
    character (len = len (double (string))) :: f5
    f5 = ''
  end function f5

end

returns (at -O1):

char_result_1.f90: In function ?MAIN__?:
char_result_1.f90:1: error: statement types mismatch
D.949_16 = stringD.939_11;

charD.14[1:3] &
charD.14[1:_stringD.907] &
char_result_1.f90:1: internal compiler error: verify_stmts failed
Please submit a full bug report,
with preprocessed source if appropriate.
See <URL:http://gcc.gnu.org/bugs.html> for instructions.


Third testcase:

  real c
  if (loc(c) == 0) call abort
  end

produces:

loc_2.f90: In function ?MAIN__?:
loc_2.f90:2: error: types mismatch in comparsion
<unnamed type>

int4D.2

D.903 == 0;

loc_2.f90:2: internal compiler error: verify_stmts failed



Fourth testcase:

  call foo("g")
contains
  subroutine foo (s)
    character(*), optional :: s
    if (present(s)) call abort
  end subroutine
end

produces

missing_optional_dummy_1.f90: In function ?MAIN__?:
missing_optional_dummy_1.f90:1: error: types mismatch in comparsion
charD.14[1:_sD.904] *

charD.14[1:1] *

sD.913_1 != 0B;

missing_optional_dummy_1.f90:1: internal compiler error: verify_stmts failed


-- 

fxcoudert at gcc dot gnu dot org changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |fxcoudert at gcc dot gnu dot
                   |                            |org
             Status|UNCONFIRMED                 |NEW
     Ever Confirmed|0                           |1
   Last reconfirmed|0000-00-00 00:00:00         |2006-10-02 15:24:35
               date|                            |


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


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]