Commit 01201992 by Paul Thomas

re PR fortran/29431 (Not Implemented: complex character array constructors)

2006-11-09 Paul Thomas <pault@gcc.gnu.org>

	PR fortran/29431
	* trans-array.c    (get_array_ctor_strlen): If we fall through to
	default, use a constant character length if it is available.

2006-11-09 Paul Thomas <pault@gcc.gnu.org>

	PR fortran/29431
	* gfortran.dg/array_constructor_13.f90: New test.

From-SVN: r118631
parent 217b5889
2006-11-09 Paul Thomas <pault@gcc.gnu.org> 2006-11-09 Paul Thomas <pault@gcc.gnu.org>
PR fortran/29431
* trans-array.c (get_array_ctor_strlen): If we fall through to
default, use a constant character length if it is available.
2006-11-09 Paul Thomas <pault@gcc.gnu.org>
PR fortran/29744 PR fortran/29744
* trans-types.c (gfc_get_derived_type): Ensure that the * trans-types.c (gfc_get_derived_type): Ensure that the
proc_name namespace is not the same as the owner namespace and proc_name namespace is not the same as the owner namespace and
......
...@@ -1416,7 +1416,7 @@ get_array_ctor_strlen (gfc_constructor * c, tree * len) ...@@ -1416,7 +1416,7 @@ get_array_ctor_strlen (gfc_constructor * c, tree * len)
case EXPR_ARRAY: case EXPR_ARRAY:
if (!get_array_ctor_strlen (c->expr->value.constructor, len)) if (!get_array_ctor_strlen (c->expr->value.constructor, len))
is_const = FALSE; is_const = false;
break; break;
case EXPR_VARIABLE: case EXPR_VARIABLE:
...@@ -1425,7 +1425,15 @@ get_array_ctor_strlen (gfc_constructor * c, tree * len) ...@@ -1425,7 +1425,15 @@ get_array_ctor_strlen (gfc_constructor * c, tree * len)
break; break;
default: default:
is_const = FALSE; is_const = false;
/* Hope that whatever we have possesses a constant character
length! */
if (!(*len && INTEGER_CST_P (*len)) && c->expr->ts.cl)
{
gfc_conv_const_charlen (c->expr->ts.cl);
*len = c->expr->ts.cl->backend_decl;
}
/* TODO: For now we just ignore anything we don't know how to /* TODO: For now we just ignore anything we don't know how to
handle, and hope we can figure it out a different way. */ handle, and hope we can figure it out a different way. */
break; break;
......
2006-11-09 Paul Thomas <pault@gcc.gnu.org> 2006-11-09 Paul Thomas <pault@gcc.gnu.org>
PR fortran/29431
* gfortran.dg/array_constructor_13.f90: New test.
2006-11-09 Paul Thomas <pault@gcc.gnu.org>
PR fortran/29744 PR fortran/29744
* gfortran.dg/used_types_12.f90: New test. * gfortran.dg/used_types_12.f90: New test.
! { dg-do compile }
! Tests patch for PR29431, which arose from PR29373.
!
! Contributed by Tobias Schlueter <tobi@gcc.gnu.org>
!
implicit none
CHARACTER(len=6), DIMENSION(2,2) :: a
! Reporters original triggered another error:
! gfc_todo: Not Implemented: complex character array
! constructors.
a = reshape([to_string(1.0), trim("abcdef"), &
to_string(7.0), trim("hijklm")], &
[2, 2])
print *, a
CONTAINS
FUNCTION to_string(x)
character*6 to_string
REAL, INTENT(in) :: x
WRITE(to_string, FMT="(F6.3)") x
END FUNCTION
end
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