summaryrefslogtreecommitdiff
path: root/gcc/testsuite/gfortran.dg/use_only_3.f90
diff options
context:
space:
mode:
authorpault <pault@138bc75d-0d04-0410-961f-82ee72b054a4>2008-01-30 06:56:10 +0000
committerpault <pault@138bc75d-0d04-0410-961f-82ee72b054a4>2008-01-30 06:56:10 +0000
commit8d39570e68562ab8144f974b7719e39a851d1b4e (patch)
tree0114132c0dd451283cabb7a4b589fc60b10dae25 /gcc/testsuite/gfortran.dg/use_only_3.f90
parent6b4e2db2963ae5320038ac6e3c714cb3884e1c87 (diff)
downloadgcc-8d39570e68562ab8144f974b7719e39a851d1b4e.tar.gz
2008-01-30 Paul Thomas <pault@gcc.gnu.org>
PR fortran/34975 * symbol.c (gfc_delete_symtree, gfc_undo_symbols): Rename delete_symtree to gfc_delete_symtree. * gfortran.h : Add prototype for gfc_delete_symtree. * module.c (load_generic_interfaces): Transfer symbol to a unique symtree and delete old symtree, instead of renaming. (read_module): The rsym and the found symbol are the same, so the found symtree can be deleted. PR fortran/34429 * decl.c (match_char_spec): Remove the constraint on deferred matching of functions and free the length expression. delete_symtree to gfc_delete_symtree. (gfc_match_type_spec): Whitespace. (gfc_match_function_decl): Defer characteristic association for all types except BT_UNKNOWN. * parse.c (decode_specification_statement): Only derived type function matching is delayed to the end of specification. 2008-01-30 Paul Thomas <pault@gcc.gnu.org> PR fortran/34975 * gfortran.dg/use_only_3.f90: New test. * gfortran.dg/use_only_3.inc: Modules for new test. PR fortran/34429 * gfortran.dg/function_charlen_2.f90: New test. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@131956 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/testsuite/gfortran.dg/use_only_3.f90')
-rw-r--r--gcc/testsuite/gfortran.dg/use_only_3.f9038
1 files changed, 38 insertions, 0 deletions
diff --git a/gcc/testsuite/gfortran.dg/use_only_3.f90 b/gcc/testsuite/gfortran.dg/use_only_3.f90
new file mode 100644
index 00000000000..509752a7ba4
--- /dev/null
+++ b/gcc/testsuite/gfortran.dg/use_only_3.f90
@@ -0,0 +1,38 @@
+! { dg-do compile }
+! This tests the patch for PR34975, in which 'n', 'ipol', and 'i' would be
+! determined to have 'no IMPLICIT type'. It turned out to be fiendishly
+! difficult to write a testcase for this PR because even the smallest changes
+! would make the bug disappear. This is the testcase provided in the PR, except
+! that all the modules are put in 'use_only_3.inc' in the same order as the
+! makefile. Even this has an effect; only 'n' is now determined to be
+! improperly typed. All this is due to the richness of the symtree and the
+! way in which the renaming inserted new symtree entries. Unless somenody can
+! come up with a reduced version, this relatively large file will have to be added
+! to the testsuite. Fortunately, it only has to be comiled once:)
+!
+! Reported by Tobias Burnus <burnus@gcc.gnu.org>
+!
+include 'use_only_3.inc'
+subroutine dforceb(c0, i, betae, ipol, bec0, ctabin, gqq, gqqm, qmat, dq2, df)
+ use gvecs
+ use gvecw, only: ngw
+ use parameters
+ use electrons_base, only: nx => nbspx, n => nbsp, nspin, f
+ use constants
+ use cvan
+ use ions_base
+ use ions_base, only : nas => nax
+ implicit none
+
+ integer ipol, i, ctabin
+ complex c0(n), betae, df,&
+ & gqq,gqqm,&
+ & qmat
+ real bec0,&
+ & dq2, gmes
+
+ end subroutine dforceb
+! { dg-final { cleanup-modules "cell_base cvan gvecs kinds" } }
+! { dg-final { cleanup-modules "constants electrons_base gvecw parameters" } }
+! { dg-final { cleanup-modules "control_flags electrons_nose ions_base" } }
+