OSDN Git Service

gcc/fortran/:
authordfranke <dfranke@138bc75d-0d04-0410-961f-82ee72b054a4>
Sat, 11 Apr 2009 09:33:11 +0000 (09:33 +0000)
committerdfranke <dfranke@138bc75d-0d04-0410-961f-82ee72b054a4>
Sat, 11 Apr 2009 09:33:11 +0000 (09:33 +0000)
2009-04-11  Daniel Franke  <frake.daniel@gmail.com>

        * resolve.c (resolve_global_procedure): Enable whole-file checking for
        procedures that are declared later in the file.

gcc/testsuite:
2009-04-11  Daniel Franke  <franke.daniel@gmail.com>

        * gfortran.dg/whole_file_5.f90: New.
        * gfortran.dg/whole_file_6.f90: New.

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

gcc/fortran/ChangeLog
gcc/fortran/resolve.c
gcc/testsuite/ChangeLog
gcc/testsuite/gfortran.dg/whole_file_5.f90 [new file with mode: 0644]
gcc/testsuite/gfortran.dg/whole_file_6.f90 [new file with mode: 0644]

index 130bcf8..9ecdf72 100644 (file)
@@ -1,3 +1,8 @@
+2009-04-11  Daniel Franke  <frake.daniel@gmail.com>
+
+       * resolve.c (resolve_global_procedure): Enable whole-file checking for
+       procedures that are declared later in the file.
+       
 2009-04-10  Paolo Bonzini  <bonzini@gnu.org>
 
        PR middle-end/39701
index 438b0d6..fad067c 100644 (file)
@@ -1610,8 +1610,7 @@ resolve_global_procedure (gfc_symbol *sym, locus *where,
   if (gfc_option.flag_whole_file
        && gsym->type != GSYM_UNKNOWN
        && gsym->ns
-       && gsym->ns->proc_name
-       && gsym->ns->proc_name->formal)
+       && gsym->ns->proc_name)
     {
       /* Make sure that translation for the gsymbol occurs before
         the procedure currently being resolved.  */
index bcd3c2b..108e17d 100644 (file)
@@ -1,3 +1,8 @@
+2009-04-11  Daniel Franke  <franke.daniel@gmail.com>
+
+       * gfortran.dg/whole_file_5.f90: New.
+       * gfortran.dg/whole_file_6.f90: New.
+
 2009-04-11  Richard Guenther  <rguenther@suse.de>
 
        PR tree-optimization/39713
diff --git a/gcc/testsuite/gfortran.dg/whole_file_5.f90 b/gcc/testsuite/gfortran.dg/whole_file_5.f90
new file mode 100644 (file)
index 0000000..a035046
--- /dev/null
@@ -0,0 +1,18 @@
+! { dg-do "compile" }
+! { dg-options "-O3 -fwhole-file -fdump-tree-optimized" }
+!
+! Check that inlining of functions declared BEFORE usage works.
+! If yes, then the dump does not contain a call to F().
+!
+
+INTEGER FUNCTION f()
+  f = 42
+END FUNCTION
+
+PROGRAM main
+  INTEGER :: a
+  a = f()
+  print *, a
+END PROGRAM
+
+! { dg-final { scan-tree-dump-times "= f\(\)" 0 "optimized" } }
diff --git a/gcc/testsuite/gfortran.dg/whole_file_6.f90 b/gcc/testsuite/gfortran.dg/whole_file_6.f90
new file mode 100644 (file)
index 0000000..cb9e737
--- /dev/null
@@ -0,0 +1,18 @@
+! { dg-do "compile" }
+! { dg-options "-O3 -fwhole-file -fdump-tree-optimized" }
+!
+! Check that inlining of functions declared AFTER usage works.
+! If yes, then the dump does not contain a call to F().
+!
+
+PROGRAM main
+  INTEGER :: a(3)
+  a = f()
+  print *, a
+END PROGRAM
+
+INTEGER FUNCTION f()
+  f = 42.0
+END FUNCTION
+
+! { dg-final { scan-tree-dump-times "= f\(\)" 0 "optimized" } }