PR fortran/56138
* trans-decl.c (gfc_trans_deferred_vars): Fix deferred-length
results for functions without extra result variable.
2012-01-30 Tobias Burnus <burnus@net-b.de>
PR fortran/56138
* gfortran.dg/allocatable_function_6.f90: New.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@195570
138bc75d-0d04-0410-961f-
82ee72b054a4
+2012-01-30 Tobias Burnus <burnus@net-b.de>
+
+ PR fortran/56138
+ * trans-decl.c (gfc_trans_deferred_vars): Fix deferred-length
+ results for functions without extra result variable.
+
2013-01-29 Janus Weil <janus@gcc.gnu.org>
Mikael Morin <mikael@gcc.gnu.org>
null_pointer_node));
}
- if ((sym->attr.dummy ||sym->attr.result)
+ if ((sym->attr.dummy || sym->attr.result || sym->result == sym)
&& sym->ts.type == BT_CHARACTER
&& sym->ts.deferred)
{
+2012-01-30 Tobias Burnus <burnus@net-b.de>
+
+ PR fortran/56138
+ * gfortran.dg/allocatable_function_6.f90: New.
+
2013-01-29 Janus Weil <janus@gcc.gnu.org>
Mikael Morin <mikael@gcc.gnu.org>
--- /dev/null
+! { dg-do run }
+!
+! PR fortran/56138
+!
+! Contributed by John Chludzinski, using the code of John Reid
+!
+implicit none
+CHARACTER(LEN=:),ALLOCATABLE :: str
+if (s_to_c("ABCdef") /= "ABCdef" .or. len(s_to_c("ABCdef")) /= 6) call abort()
+str = s_to_c("ABCdef")
+if (str /= "ABCdef" .or. len(str) /= 6) call abort()
+str(1:3) = s_to_c("123")
+if (str /= "123def" .or. len(str) /= 6) call abort()
+
+contains
+
+PURE FUNCTION s_to_c(string)
+ CHARACTER(LEN=*),INTENT(IN) :: string
+ CHARACTER(LEN=:),ALLOCATABLE :: s_to_c
+ s_to_c = string
+ENDFUNCTION s_to_c
+end