From 568eecadba8d1e6f1bce10ce0bd27b739c469048 Mon Sep 17 00:00:00 2001 From: Daniel Franke Date: Sat, 11 Apr 2009 05:33:11 -0400 Subject: [PATCH] resolve.c (resolve_global_procedure): Enable whole-file checking for procedures that are declared later in the file. gcc/fortran/: 2009-04-11 Daniel Franke * 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 * gfortran.dg/whole_file_5.f90: New. * gfortran.dg/whole_file_6.f90: New. From-SVN: r145953 --- gcc/fortran/ChangeLog | 5 +++++ gcc/fortran/resolve.c | 3 +-- gcc/testsuite/ChangeLog | 5 +++++ gcc/testsuite/gfortran.dg/whole_file_5.f90 | 18 ++++++++++++++++++ gcc/testsuite/gfortran.dg/whole_file_6.f90 | 18 ++++++++++++++++++ 5 files changed, 47 insertions(+), 2 deletions(-) create mode 100644 gcc/testsuite/gfortran.dg/whole_file_5.f90 create mode 100644 gcc/testsuite/gfortran.dg/whole_file_6.f90 diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog index 130bcf866f1..9ecdf7272bd 100644 --- a/gcc/fortran/ChangeLog +++ b/gcc/fortran/ChangeLog @@ -1,3 +1,8 @@ +2009-04-11 Daniel Franke + + * resolve.c (resolve_global_procedure): Enable whole-file checking for + procedures that are declared later in the file. + 2009-04-10 Paolo Bonzini PR middle-end/39701 diff --git a/gcc/fortran/resolve.c b/gcc/fortran/resolve.c index 438b0d642ec..fad067c8678 100644 --- a/gcc/fortran/resolve.c +++ b/gcc/fortran/resolve.c @@ -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. */ diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index bcd3c2bfa5f..108e17d07f1 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2009-04-11 Daniel Franke + + * gfortran.dg/whole_file_5.f90: New. + * gfortran.dg/whole_file_6.f90: New. + 2009-04-11 Richard Guenther 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 index 00000000000..a0350466373 --- /dev/null +++ b/gcc/testsuite/gfortran.dg/whole_file_5.f90 @@ -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 index 00000000000..cb9e737104c --- /dev/null +++ b/gcc/testsuite/gfortran.dg/whole_file_6.f90 @@ -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" } } -- 2.30.2