Commit 18dd272d by Paul Thomas

re PR fortran/35937 (Wrong type for charlength of function)

2008-12-14  Paul Thomas  <pault@gcc.gnu.org>

	PR fortran/35937
	* trans-expr.c (gfc_finish_interface_mapping): Fold convert the
	character length to gfc_charlen_type_node.

2008-12-14  Paul Thomas  <pault@gcc.gnu.org>

	PR fortran/35937
	* gfortran.dg/char_length_14.f90: New test.

From-SVN: r142750
parent 73793745
2008-12-14 Paul Thomas <pault@gcc.gnu.org>
PR fortran/35937
* trans-expr.c (gfc_finish_interface_mapping): Fold convert the
character length to gfc_charlen_type_node.
2008-12-12 Daniel Franke <franke.daniel@gmail.com>
PR fortran/36355
......
......@@ -1830,7 +1830,7 @@ gfc_finish_interface_mapping (gfc_interface_mapping * mapping,
gfc_apply_interface_mapping_to_expr (mapping, expr);
gfc_init_se (&se, NULL);
gfc_conv_expr (&se, expr);
se.expr = fold_convert (gfc_charlen_type_node, se.expr);
se.expr = gfc_evaluate_now (se.expr, &se.pre);
gfc_add_block_to_block (pre, &se.pre);
gfc_add_block_to_block (post, &se.post);
......
2008-12-14 Paul Thomas <pault@gcc.gnu.org>
PR fortran/35937
* gfortran.dg/char_length_14.f90: New test.
2008-12-13 Jerry DeLisle <jvdelisle@gcc.gnu.org>
PR libfortran/38504
......
! { dg-do run }
! PR35937, in which letting the length of 'c' to kind = 8 would
! screw up the interface and would cause an ICE. Note that this is
! actually the example of comment #4.
!
! Contributed by Thomas Koenig <tkoenig@gcc.gnu.org>
!
program main
implicit none
if (f5 ('1') .ne. "a") call abort
if (len (f5 ('1')) .ne. 1) call abort
if (f5 ('4') .ne. "abcd") call abort
if (len (f5 ('4')) .ne. 4) call abort
contains
function f5 (c)
character(len=1_8) :: c
character(len=scan('123456789', c)) :: f5
integer :: i
do i = 1, len (f5)
f5(i:i) = char (i+96)
end do
end function f5
end program main
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment