OSDN Git Service

2009-04-25 Janus Weil <janus@gcc.gnu.org>
authorjanus <janus@138bc75d-0d04-0410-961f-82ee72b054a4>
Sat, 25 Apr 2009 08:11:48 +0000 (08:11 +0000)
committerjanus <janus@138bc75d-0d04-0410-961f-82ee72b054a4>
Sat, 25 Apr 2009 08:11:48 +0000 (08:11 +0000)
PR fortran/39688
* decl.c (gfc_match_import): Use 'sym->name' instead of 'name'.
They differ if the symbol has been use-renamed.

2009-04-25  Janus Weil  <janus@gcc.gnu.org>

PR fortran/39688
* gfortran.dg/import7.f90: New.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@146762 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/fortran/ChangeLog
gcc/fortran/decl.c
gcc/testsuite/ChangeLog
gcc/testsuite/gfortran.dg/import7.f90 [new file with mode: 0644]

index 9957579..d39b713 100644 (file)
@@ -1,3 +1,9 @@
+2009-04-25  Janus Weil  <janus@gcc.gnu.org>
+
+       PR fortran/39688
+       * decl.c (gfc_match_import): Use 'sym->name' instead of 'name'.
+       They differ if the symbol has been use-renamed.
+
 2009-04-24  Ian Lance Taylor  <iant@google.com>
 
        * gfortran.h (enum gfc_symbol_type): New named enum type, broken
index 1a8d6dc..eaa310c 100644 (file)
@@ -2741,7 +2741,7 @@ gfc_match_import (void)
              goto next_item;
            }
 
-         st = gfc_new_symtree (&gfc_current_ns->sym_root, name);
+         st = gfc_new_symtree (&gfc_current_ns->sym_root, sym->name);
          st->n.sym = sym;
          sym->refs++;
          sym->attr.imported = 1;
index 654c5e8..af9f6bc 100644 (file)
@@ -1,3 +1,8 @@
+2009-04-25  Janus Weil  <janus@gcc.gnu.org>
+
+       PR fortran/39688
+       * gfortran.dg/import7.f90: New.
+
 2009-04-24  Richard Guenther  <rguenther@suse.de>
 
        * gcc.dg/tree-ssa/vrp48.c: Fix.
diff --git a/gcc/testsuite/gfortran.dg/import7.f90 b/gcc/testsuite/gfortran.dg/import7.f90
new file mode 100644 (file)
index 0000000..c115cc3
--- /dev/null
@@ -0,0 +1,58 @@
+! { dg-do compile }
+!
+! PR39688: IMPORT of derived type fails
+!
+! Contributed by Bob Corbett <robert.corbett@sun.com>
+
+       MODULE MOD
+         TYPE T1
+           SEQUENCE
+           TYPE(T2), POINTER :: P
+         END TYPE
+         TYPE T2
+           SEQUENCE
+           INTEGER I
+         END TYPE
+       END
+
+       PROGRAM MAIN
+         USE MOD, T3 => T1, T4 => T2
+         TYPE T1
+           SEQUENCE
+           TYPE(T2), POINTER :: P
+         END TYPE
+         INTERFACE SUBR
+           SUBROUTINE SUBR1(X)
+             IMPORT T3
+             TYPE(T3) X
+           END SUBROUTINE
+           SUBROUTINE SUBR2(X)
+             IMPORT T1
+             TYPE(T1) X
+           END SUBROUTINE
+         END INTERFACE
+         TYPE T2
+           SEQUENCE
+           REAL X
+         END TYPE
+       END
+
+       SUBROUTINE SUBR1(X)
+         USE MOD
+         TYPE(T1) X
+       END
+
+       SUBROUTINE SUBR2(X)
+         TYPE T1
+           SEQUENCE
+           TYPE(T2), POINTER :: P
+         END TYPE
+         TYPE T2
+           SEQUENCE
+           REAL X
+         END TYPE
+         TYPE(T1) X
+       END
+
+! { dg-final { cleanup-modules "mod" } }
+