2008-01-22 Paul Thomas <pault@gcc.gnu.org>
authorpault <pault@138bc75d-0d04-0410-961f-82ee72b054a4>
Tue, 22 Jan 2008 06:01:54 +0000 (06:01 +0000)
committerpault <pault@138bc75d-0d04-0410-961f-82ee72b054a4>
Tue, 22 Jan 2008 06:01:54 +0000 (06:01 +0000)
PR fortran/34896
* module.c (read_module): Set use_rename attribute.

2008-01-22  Paul Thomas  <pault@gcc.gnu.org>

PR fortran/34896
* gfortran.dg/use_rename_2.f90: New test.

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

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

index 6446e95..c6be613 100644 (file)
@@ -1,3 +1,8 @@
+2008-01-22  Paul Thomas  <pault@gcc.gnu.org>
+
+       PR fortran/34896
+       * module.c (read_module): Set use_rename attribute.
+
 2007-01-21  Tobias Burnus  <burnus@net-b.de>
 
        PR fortran/34901
index fe57b9d..c2dc27a 100644 (file)
@@ -3769,6 +3769,9 @@ read_module (void)
              st->n.sym = sym;
              st->n.sym->refs++;
 
+             if (strcmp (name, p) != 0)
+               sym->attr.use_rename = 1;
+
              /* Store the symtree pointing to this symbol.  */
              info->u.rsym.symtree = st;
 
index 8d8bc99..b3095a1 100644 (file)
@@ -1,3 +1,8 @@
+2008-01-22  Paul Thomas  <pault@gcc.gnu.org>
+
+       PR fortran/34896
+       * gfortran.dg/use_rename_2.f90: New test.
+
 2008-01-21  Richard Guenther  <rguenther@suse.de>
 
        PR middle-end/34856
diff --git a/gcc/testsuite/gfortran.dg/use_rename_2.f90 b/gcc/testsuite/gfortran.dg/use_rename_2.f90
new file mode 100644 (file)
index 0000000..3ca6f69
--- /dev/null
@@ -0,0 +1,26 @@
+! { dg-do run }
+! { dg-options "-O1" }
+! Checks the fix for PR34896 which was a regression that prevented max
+! and min from being interchanged by the USE statement below.  It is further
+! checked by libgomp/testsuite/libgomp.fortran/reduction5.f90
+!
+! Reported by H.J. Lu <hjl.tools@gmail.com>
+!
+module reduction5
+  intrinsic min, max
+end module reduction5
+
+program reduction_5_regression
+  call test2
+contains
+  subroutine test2
+    use reduction5, min => max, max => min
+    integer a, b
+    a = max (1,5)
+    b = min (1,5)
+    if (a .ne. 1) call abort ()
+    if (b .ne. 5) call abort ()
+  end subroutine test2
+end
+
+! { dg-final { cleanup-modules "reduction5" } }