OSDN Git Service

2010-06-02 Tobias Burnus <burnus@net-b.de>
authorburnus <burnus@138bc75d-0d04-0410-961f-82ee72b054a4>
Wed, 2 Jun 2010 05:55:19 +0000 (05:55 +0000)
committerburnus <burnus@138bc75d-0d04-0410-961f-82ee72b054a4>
Wed, 2 Jun 2010 05:55:19 +0000 (05:55 +0000)
        PR fortran/44360
        * parse.c (gfc_fixup_sibling_symbols): Do not "fix"
        use-associated symbols.

2010-06-02  Tobias Burnus  <burnus@net-b.de>

        PR fortran/44360
        * gfortran.dg/use_13.f90: New test case.

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

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

index 80f78c1..0db8ce5 100644 (file)
@@ -1,3 +1,9 @@
+2010-06-02  Tobias Burnus  <burnus@net-b.de>
+
+       PR fortran/44360
+       * parse.c (gfc_fixup_sibling_symbols): Do not "fix" use-associated
+       symbols.
+
 2010-06-01  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
 
        PR fortran/44371
index 31ad7cf..7fc3541 100644 (file)
@@ -3667,6 +3667,7 @@ gfc_fixup_sibling_symbols (gfc_symbol *sym, gfc_namespace *siblings)
                  || (old_sym->ts.type != BT_UNKNOWN
                        && !old_sym->attr.implicit_type)
                  || old_sym->attr.flavor == FL_PARAMETER
+                 || old_sym->attr.use_assoc
                  || old_sym->attr.in_common
                  || old_sym->attr.in_equivalence
                  || old_sym->attr.data
index cbda12b..c15d708 100644 (file)
@@ -1,3 +1,8 @@
+2010-06-02  Tobias Burnus  <burnus@net-b.de>
+
+       PR fortran/44360
+       * gfortran.dg/use_13.f90: New test case.
+
 2010-06-01  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
 
        PR fortran/44371
diff --git a/gcc/testsuite/gfortran.dg/use_13.f90 b/gcc/testsuite/gfortran.dg/use_13.f90
new file mode 100644 (file)
index 0000000..1fe7b1e
--- /dev/null
@@ -0,0 +1,45 @@
+! { dg-do run }
+!
+! PR fortran/44360
+!
+! Test-case based on a contribution of Vittorio Zecca.
+!
+! The used subroutine was not the use-associated but the host associated one!
+! The use-associated function/variable were already working properly.
+!
+module m
+  integer :: var = 43
+contains
+ integer function fun()
+   fun = 42
+ end function fun
+ subroutine fun2()
+   var = 44
+ end subroutine fun2
+end module m
+
+module m2
+  integer :: var = -2
+contains
+ subroutine test()
+   ! All procedures/variables below refer to the ones in module "m"
+   ! and not to the siblings in this module "m2".
+   use m 
+   if (fun() /= 42) call abort()
+   if (var /= 43) call abort()
+   call fun2()
+   if (var /= 44) call abort()
+ end subroutine test
+ integer function fun()
+   call abort()
+   fun = -3
+ end function fun
+ subroutine fun2()
+   call abort()
+ end subroutine fun2
+end module m2
+
+use m2
+call test()
+end
+! { dg-final { cleanup-modules "m m2" } }