[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