[Bug fortran/16511] Test 19990905-0.f fails with gfortran
--- Additional Comments From cvs-commit at gcc dot gnu dot org 2005-09-09 09:06 --- Subject: Bug 16511 CVSROOT:/cvs/gcc Module name:gcc Branch: gcc-4_0-branch Changes by: [EMAIL PROTECTED] 2005-09-09 09:06:09 Modified files: gcc/fortran: gfortran.h match.h match.c module.c primary.c trans-common.c trans-decl.c ChangeLog gcc/testsuite/gfortran.dg/g77: 19990905-0.f gcc/testsuite : ChangeLog Added files: gcc/testsuite/gfortran.dg: module_blank_common.f90 module_double_reuse.f90 common_equivalence_1.f common_equivalence_2.f common_equivalence_3.f contained_equivalence_1.f90 module_commons_1.f90 module_equivalence_1.f90 nested_modules_1.f90 Log message: 2005-09-09 Paul Thomas [EMAIL PROTECTED] PR fortran/18878 * module.c (find_use_name_n): Based on original find_use_name. Either counts number of use names for a given real name or returns use name n. (find_use_name, number_use_names): Interfaces to the function find_use_name_n. (read_module): Add the logic and calls to these functions, so that mutiple reuses of the same real name are loaded. 2005-09-09 Paul Thomas [EMAIL PROTECTED] PR fortran/22304 PR fortran/23270 PR fortran/18870 PR fortran/16511 PR fortran/17917 * gfortran.h: Move definition of BLANK_COMMON_NAME from trans- common.c so that it is accessible to module.c. Add common_head field to gfc_symbol structure. Add field for the equivalence name AND new attr field, in_equivalence. * match.c (gfc_match_common, gfc_match_equivalence): In loops that flag common block equivalences, emit an error if the common blocks are different, using sym-common_head as the common block identifier. Ensure that symbols that are equivalence associated with a common block are marked as being in_common. * module.c (write_blank_common): New. (write_common): Use unmangled common block name. (load_equiv): New function ported from g95. (read_module): Call load_equiv. (write_equiv): New function ported from g95. Correct string referencing for gfc functions. Give module equivalences a unique name. (write_module): Call write_equiv and write_blank_common. * primary.c (match_variable) Old gfc_match_variable, made static and third argument provided to indicate if parent namespace to be visited or not. (gfc_match_variable): New. Interface to match_variable. (gfc_match_equiv_variable): New. Interface to match_variable. * trans-common.c (finish_equivalences): Provide the call to create_common with a gfc_common_header so that module equivalences are made external, rather than local. (find_equivalences): Ensure that all members in common block equivalences are marked as used. This prevents the subsequent call to this function from making local unions. * trans-decl.c (gfc_generate_function_code): Move the call to gfc_generate_contained_functions to after the call to gfc_trans_common so the use-associated, contained common blocks produce the correct references. (gfc_create_module_variable): Return for equivalenced symbols with existing backend declaration. 2005-09-09 Paul Thomas [EMAIL PROTECTED] PR fortran/18878 * gfortran.dg/module_double_reuse.f90: New. 2005-09-09 Paul Thomas [EMAIL PROTECTED] PR fortran/23270 PR fortran/22304 PR fortran/18870 PR fortran/17917 PR fortran/16511 * gfortran.dg/common_equivalence_1.f: New. * gfortran.dg/common_equivalence_2.f: New. * gfortran.dg/common_equivalence_3.f: New. * gfortran.dg/contained_equivalence_1.f90: New. * gfortran.dg/module_blank_common.f90: New. * gfortran.dg/module_commons_1.f90: New. * gfortran.dg/module_equivalence_1.f90: New. * gfortran.dg/nested_modules_1.f90: New. * gfortran.dg/g77/19990905-0.f: Remove XFAIL, rearrange equivalences and add comment to connect the test with the PR. Patches: http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/fortran/gfortran.h.diff?cvsroot=gcconly_with_tag=gcc-4_0-branchr1=1.58.2.16r2=1.58.2.17 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/fortran/match.h.diff?cvsroot=gcconly_with_tag=gcc-4_0-branchr1=1.10.36.1r2=1.10.36.2
[Bug fortran/16511] Test 19990905-0.f fails with gfortran
--- Additional Comments From pinskia at gcc dot gnu dot org 2005-09-09 22:15 --- Fixed. -- What|Removed |Added Status|NEW |RESOLVED Resolution||FIXED Target Milestone|--- |4.0.2 http://gcc.gnu.org/bugzilla/show_bug.cgi?id=16511
[Bug fortran/16511] Test 19990905-0.f fails with gfortran
--- Additional Comments From cvs-commit at gcc dot gnu dot org 2005-09-09 00:24 --- Subject: Bug 16511 CVSROOT:/cvs/gcc Module name:gcc Changes by: [EMAIL PROTECTED] 2005-09-09 00:23:18 Modified files: gcc/fortran: gfortran.h match.c module.c primary.c trans-common.c trans-decl.c ChangeLog gcc/testsuite : ChangeLog Added files: gcc/testsuite/gfortran.dg: module_blank_common.f90 module_double_reuse.f90 common_equivalence_1.f common_equivalence_2.f common_equivalence_3.f contained_equivalence_1.f90 module_commons_1.f90 module_equivalence_1.f90 nested_modules_1.f90 Log message: 2005-09-09 Paul Thomas [EMAIL PROTECTED] PR fortran/18878 * module.c (find_use_name_n): Based on original find_use_name. Either counts number of use names for a given real name or returns use name n. (find_use_name, number_use_names): Interfaces to the function find_use_name_n. (read_module): Add the logic and calls to these functions, so that mutiple reuses of the same real name are loaded. 2005-09-09 Paul Thomas [EMAIL PROTECTED] PR fortran/22304 PR fortran/23270 PR fortran/18870 PR fortran/16511 PR fortran/17917 * gfortran.h: Move definition of BLANK_COMMON_NAME from trans- common.c so that it is accessible to module.c. Add common_head field to gfc_symbol structure. Add field for the equivalence name AND new attr field, in_equivalence. * match.c (gfc_match_common, gfc_match_equivalence): In loops that flag common block equivalences, emit an error if the common blocks are different, using sym-common_head as the common block identifier. Ensure that symbols that are equivalence associated with a common block are marked as being in_common. * module.c (write_blank_common): New. (write_common): Use unmangled common block name. (load_equiv): New function ported from g95. (read_module): Call load_equiv. (write_equiv): New function ported from g95. Correct string referencing for gfc functions. Give module equivalences a unique name. (write_module): Call write_equiv and write_blank_common. * primary.c (match_variable) Old gfc_match_variable, made static and third argument provided to indicate if parent namespace to be visited or not. (gfc_match_variable) New. Interface to match_variable. (gfc_match_equiv_variable) New. Interface to match_variable. * trans-common.c (finish_equivalences): Provide the call to create_common with a gfc_common_header so that module equivalences are made external, rather than local. (find_equivalences): Ensure that all members in common block equivalences are marked as used. This prevents the subsequent call to this function from making local unions. * trans-decl.c (gfc_generate_function_code): Move the call to gfc_generate_contained_functions to after the call to gfc_trans_common so the use-associated, contained common blocks produce the correct references. (gfc_create_module_variable): Return for equivalenced symbols with existing backend declaration. 2005-09-09 Paul Thomas [EMAIL PROTECTED] PR fortran/18878 * gfortran.dg/module_double_reuse.f90: New. 2005-09-09 Paul Thomas [EMAIL PROTECTED] PR fortran/23270 PR fortran/22304 PR fortran/18870 PR fortran/17917 PR fortran/16511 * gfortran.dg/common_equivalence_1.f: New. * gfortran.dg/common_equivalence_2.f: New. * gfortran.dg/common_equivalence_3.f: New. * gfortran.dg/contained_equivalence_1.f90: New. * gfortran.dg/module_blank_common.f90: New. * gfortran.dg/module_commons_1.f90: New. * gfortran.dg/module_equivalence_1.f90: New. * gfortran.dg/nested_modules_1.f90: New. * gfortran.dg/g77/19990905-0.f: Remove XFAIL, rearrange equivalences and add comment to connect the test with the PR. Patches: http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/fortran/gfortran.h.diff?cvsroot=gccr1=1.84r2=1.85 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/fortran/match.c.diff?cvsroot=gccr1=1.44r2=1.45 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/fortran/module.c.diff?cvsroot=gccr1=1.35r2=1.36 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/fortran/primary.c.diff?cvsroot=gccr1=1.35r2=1.36
[Bug fortran/16511] Test 19990905-0.f fails with gfortran
--- Additional Comments From pinskia at gcc dot gnu dot org 2005-03-10 14:38 --- This is an equivalenced problem so linking to 20405 -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=16511
[Bug fortran/16511] Test 19990905-0.f fails with gfortran
--- Additional Comments From pinskia at gcc dot gnu dot org 2005-03-10 14:39 --- The way I came to that conclusion was the following code worked: c { dg-do compile } subroutine sub(a) common /info/ m, n real a(m,n) a(1,1) = a(2,2) end -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=16511
[Bug fortran/16511] Test 19990905-0.f fails with gfortran
-- What|Removed |Added OtherBugsDependingO||19292 nThis|| http://gcc.gnu.org/bugzilla/show_bug.cgi?id=16511
[Bug fortran/16511] Test 19990905-0.f fails with gfortran
--- Additional Comments From coudert at clipper dot ens dot fr 2005-01-06 15:56 --- The reduced case given in comment #9 fails to compile with Intel compiler (This entity cannot be in a specification expression), Sun (Local variable M must be a dummy argument or in common to be used in a bounds specification expression) and NEC (Variable m in specification expression is invalid). It compiles with Portland and MIPSpro compilers. However, the inital (comment #0) snippet compiles fine on all compilers mentionned above. So I guess the common block as something to do with it. -- What|Removed |Added CC||coudert at clipper dot ens ||dot fr http://gcc.gnu.org/bugzilla/show_bug.cgi?id=16511
[Bug fortran/16511] Test 19990905-0.f fails with gfortran
--- Additional Comments From tobi at gcc dot gnu dot org 2005-01-06 16:11 --- (In reply to comment #9) However, the inital (comment #0) snippet compiles fine on all compilers mentionned above. So I guess the common block as something to do with it. Indeed, the common block makes this code legal, the code in #9 is rightfully rejected by gfortran. -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=16511
[Bug fortran/16511] Test 19990905-0.f fails with gfortran
--- Additional Comments From paulthomas2 at wanadoo dot fr 2004-12-10 08:56 --- (In reply to comment #7) The COMMON block has nothing to do with the problem: subroutine sub(a) integer :: m=2,n=2 real a(m,n) end subroutine sub Fails to compile too, with the same message. -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=16511