[patch, gfortran] PRs 15975 & 16606
Erik Edelmann
eedelman@acclab.helsinki.fi
Sat Sep 17 08:55:00 GMT 2005
:ADDPATCH fortran:
The attached patch fixes PRs 15975 & 16606 (they are duplicates).
The problem was that we tried to assign default initializers to
derived type variables, even when they were pointers.
Bubblestrapped and reg.tested on 4.0 and mainline, Linux/x86.
Please apply if OK.
Erik
2005-09-16 Erik Edelmann <erik.edelmann@iki.fi>
PR fortran/15975
PR fortran/16606
* resolve.c (resolve_symbol): Don't assign default
initializer to pointers.
2005-09-16 Erik Edelmann <erik.edelmann@iki.fi>
PR fortran/15975
PR fortran/16606
* gfortran.dg/der_pointer_2.f90: New test.
-------------- next part --------------
Index: gcc/fortran/resolve.c
===================================================================
RCS file: /cvsroot/gcc/gcc/gcc/fortran/resolve.c,v
retrieving revision 1.52
diff -u -p -r1.52 resolve.c
--- gcc/fortran/resolve.c 31 Aug 2005 12:31:30 -0000 1.52
+++ gcc/fortran/resolve.c 16 Sep 2005 22:43:01 -0000
@@ -4299,7 +4299,8 @@ resolve_symbol (gfc_symbol * sym)
}
/* Assign default initializer. */
- if (sym->ts.type == BT_DERIVED && !(sym->value || whynot))
+ if (sym->ts.type == BT_DERIVED && !(sym->value || whynot)
+ && !sym->attr.pointer)
sym->value = gfc_default_initializer (&sym->ts);
break;
-------------- next part --------------
! { dg-do compile }
! PR 15975, PR 16606
! Pointers to derived types with initialized components
SUBROUTINE N
TYPE T
INTEGER :: I = 0
END TYPE T
TYPE(T), POINTER :: P
END SUBROUTINE N
More information about the Fortran
mailing list