+2004-07-15 Tobias Schlueter <tobias.schlueter@physik.uni-muenchen.de>
+
+ PR fortran/15129
+ * trans-decl.c (gfc_build_function_decl): Create a new chardecl
+ for every assumed length character dummy argument.
+
2004-07-15 Tobias Schlueter <tobias.schlueter@physik.uni-muenchen.de>
PR fortran/15324
if (!f->sym->ts.cl->length)
{
TREE_USED (length) = 1;
- f->sym->ts.cl->backend_decl = length;
+ if (!f->sym->ts.cl->backend_decl)
+ f->sym->ts.cl->backend_decl = length;
+ else
+ {
+ /* there is already another variable using this
+ gfc_charlen node, build a new one for this variable
+ and chain it into the list of gfc_charlens.
+ This happens for e.g. in the case
+ CHARACTER(*)::c1,c2
+ since CHARACTER declarations on the same line share
+ the same gfc_charlen node. */
+ gfc_charlen *cl;
+
+ cl = gfc_get_charlen ();
+ cl->backend_decl = length;
+ cl->next = f->sym->ts.cl->next;
+ f->sym->ts.cl->next = cl;
+ f->sym->ts.cl = cl;
+ }
}
parm = TREE_CHAIN (parm);
PR fortran/15324
* gfortran.dg/pr15324.f90: New test.
+ PR fortran/15129
+ * gfortran.dg/pr15129.f90: New test.
+
2004-07-14 Mike Stump <mrs@apple.com>
* gcc.dg/20020426-2.c: Improve type safety wrt unsignedness.
--- /dev/null
+! { dg-do run }
+! PR 15129: we used to share the character length between A and B in the
+! subroutine.
+CHARACTER*10 A
+CHARACTER*8 B
+A = 'gfortran'
+B = 'rocks!'
+CALL T(A,B)
+contains
+SUBROUTINE T(A,B)
+CHARACTER*(*) A,B
+if(len(a)/=10) call abort()
+if(len(b)/=8) call abort()
+END SUBROUTINE
+end