[Bug fortran/37201] ICE in in gfc_conv_string_parameter
burnus at gcc dot gnu dot org
gcc-bugzilla@gcc.gnu.org
Sat Aug 23 19:46:00 GMT 2008
------- Comment #4 from burnus at gcc dot gnu dot org 2008-08-23 19:45 -------
Actually, removing the assert
--- /home/tob/projects/gcc/gcc/fortran/trans-expr.c (Revision 139520)
+++ /home/tob/projects/gcc/gcc/fortran/trans-expr.c
@@ -4008,2 +4008,0 @@ gfc_conv_string_parameter (gfc_se * se)
- gcc_assert (se->string_length
- && TREE_CODE (TREE_TYPE (se->string_length)) == INTEGER_TYPE);
is enough for assignments. Proof:
str[1]{lb: 1 sz: 1} = cdir (); ! str = cdir()
i = (integer(kind=4)) cdir (); ! i = ichar(cdir())
TODO: Come up with a better assert which works also in this case.
* * *
For I/O one also needs the following:
--- trans-io.c (Revision 139521)
+++ trans-io.c
@@ -2071,2 +2071,6 @@ transfer_expr (gfc_se * se, gfc_typespec
- gcc_assert (TREE_CODE (TREE_TYPE (tmp)) == ARRAY_TYPE);
- arg2 = TYPE_MAX_VALUE (TYPE_DOMAIN (TREE_TYPE (tmp)));
+
+ /* BIND(C) function return value. */
+ if (TREE_CODE (TREE_TYPE (tmp)) != ARRAY_TYPE)
+ arg2 = build_int_cst (gfc_charlen_type_node, 1);
+ else
+ arg2 = TYPE_MAX_VALUE (TYPE_DOMAIN (TREE_TYPE (tmp)));
--
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=37201
More information about the Gcc-bugs
mailing list