Bug 25103 - Automatic object allowed in main program
Summary: Automatic object allowed in main program
Status: RESOLVED FIXED
Alias: None
Product: gcc
Classification: Unclassified
Component: fortran (show other bugs)
Version: 4.1.0
: P3 normal
Target Milestone: ---
Assignee: Not yet assigned to anyone
URL:
Keywords:
Depends on: 26074
Blocks:
  Show dependency treegraph
 
Reported: 2005-11-26 18:09 UTC by Joost VandeVondele
Modified: 2006-02-13 21:38 UTC (History)
1 user (show)

See Also:
Host:
Target:
Build:
Known to work:
Known to fail:
Last reconfirmed: 2006-02-02 18:17:47


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Joost VandeVondele 2005-11-26 18:09:06 UTC
using GNU Fortran 95 (GCC) 4.1.0 20051126 (prerelease)  with '-g -pedantic -std=f95', I get a bad / no diagnostic for the following invalid code:

module foo
  integer    ::  i
end module foo
program bar
  use foo
  integer, dimension (i)    ::    j
end program bar
Comment 1 kargls 2005-11-27 03:53:58 UTC
What's broken here?  Where are the details?
Comment 2 Andrew Pinski 2006-02-02 18:17:47 UTC
Confirmed.  Related to PR 26074
Comment 3 Paul Thomas 2006-02-13 21:23:02 UTC
Subject: Bug 25103

Author: pault
Date: Mon Feb 13 21:22:55 2006
New Revision: 110926

URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=110926
Log:
2006-02-13  Paul Thomas  <pault@gcc.gnu.org>

	PR fortran/26074
	PR fortran/25103
	* resolve.c (resolve_symbol): Extend the requirement that module
	arrays have constant bounds to those in the main program.  At the
	same time simplify the array bounds, to avoiding trapping parameter
	array references, and exclude automatic character length from main
	and modules. Rearrange resolve_symbol and resolve_derived to put as
	each flavor together, as much as is possible and move all specific
	code for flavors FL_VARIABLE, FL_PROCEDURE and FL_PARAMETER into new
	functions.
	(resolve_fl_var_and_proc, resolve_fl_variable, resolve_fl_procedure):
	New functions to do work of resolve_symbol.
	(resolve_index_expr): New function that is called from resolved_symbol
	and is extracted from resolve_charlen.
	(resolve_charlen): Call this new function.
	(resolve_fl_derived): Renamed resolve_derived to be consistent with
	the naming of the new functions for the other flavours.  Change the
	charlen checking so that the style is consistent with other similar
	checks. Add the generation of the gfc_dt_list, removed from resolve_
	symbol.

	PR fortran/20861
	* resolve.c (resolve_actual_arglist): Prevent internal procedures
	from being dummy arguments.

	PR fortran/20871
	* resolve.c (resolve_actual_arglist): Prevent pure but non-intrinsic
	procedures from being dummy arguments.

	PR fortran/25083
	* resolve.c (check_data_variable): Add test that data variable is in
	COMMON.

	PR fortran/25088
	* resolve.c (resolve_call): Add test that the subroutine does not
	have a type.


2006-02-13  Paul Thomas  <pault@gcc.gnu.org>

	PR fortran/26074
	PR fortran/25103
	* gfortran.dg/module_parameter_array_refs_1.f90: New test.
	* gfortran.dg/bad_automatic_objects_1.f90: New test.
	* gfortran.dg/automatic_module_variable.f90: Change error message.

	PR fortran/20861
	* gfortran.dg/internal_dummy_1.f90: New test.

	PR fortran/20871
	* gfortran.dg/elemental_non_intrinsic_dummy_1.f90: New test.


	PR fortran/25083
	* gfortran.dg/uncommon_block_data_1.f90: New test.
	* gfortran.dg/equiv_constraint_7.f90: Correct non-compliance of test
	with standard.

	PR fortran/25088
	* gfortran.dg/typed_subroutine_1.f90: New test.


Added:
    trunk/gcc/testsuite/gfortran.dg/bad_automatic_objects_1.f90
    trunk/gcc/testsuite/gfortran.dg/elemental_non_intrinsic_dummy_1.f90
    trunk/gcc/testsuite/gfortran.dg/internal_dummy_1.f90
    trunk/gcc/testsuite/gfortran.dg/module_parameter_array_refs_1.f90
    trunk/gcc/testsuite/gfortran.dg/typed_subroutine_1.f90
    trunk/gcc/testsuite/gfortran.dg/uncommon_block_data_1.f90
Modified:
    trunk/gcc/fortran/ChangeLog
    trunk/gcc/fortran/resolve.c
    trunk/gcc/testsuite/ChangeLog
    trunk/gcc/testsuite/gfortran.dg/automatic_module_variable.f90
    trunk/gcc/testsuite/gfortran.dg/equiv_constraint_7.f90

Comment 4 Paul Thomas 2006-02-13 21:35:16 UTC
Subject: Bug 25103

Author: pault
Date: Mon Feb 13 21:35:09 2006
New Revision: 110930

URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=110930
Log:
2006-02-13  Paul Thomas  <pault@gcc.gnu.org>

	PR fortran/26074
	PR fortran/25103
	* resolve.c (resolve_symbol): Extend the requirement that module
	arrays have constant bounds to those in the main program.  At the
	same time simplify the array bounds, to avoiding trapping parameter
	array references, and exclude automatic character length from main
	and modules. Rearrange resolve_symbol and resolve_derived to put as
	each flavor together, as much as is possible and move all specific
	code for flavors FL_VARIABLE, FL_PROCEDURE and FL_PARAMETER into new
	functions.
	(resolve_fl_var_and_proc, resolve_fl_variable, resolve_fl_procedure):
	New functions to do work of resolve_symbol.
	(resolve_index_expr): New function that is called from resolved_symbol
	and is extracted from resolve_charlen.
	(resolve_charlen): Call this new function.
	(resolve_fl_derived): Renamed resolve_derived to be consistent with
	the naming of the new functions for the other flavours.  Change the
	charlen checking so that the style is consistent with other similar
	checks. Add the generation of the gfc_dt_list, removed from resolve_
	symbol.

	PR fortran/20861
	* resolve.c (resolve_actual_arglist): Prevent internal procedures
	from being dummy arguments.

	PR fortran/20871
	* resolve.c (resolve_actual_arglist): Prevent pure but non-intrinsic
	procedures from being dummy arguments.

	PR fortran/25083
	* resolve.c (check_data_variable): Add test that data variable is in
	COMMON.

	PR fortran/25088
	* resolve.c (resolve_call): Add test that the subroutine does not
	have a type.


2006-02-13  Paul Thomas  <pault@gcc.gnu.org>

	PR fortran/26074
	PR fortran/25103
	* gfortran.dg/module_parameter_array_refs_1.f90: New test.
	* gfortran.dg/bad_automatic_objects_1.f90: New test.
	* gfortran.dg/automatic_module_variable.f90: Change error message.

	PR fortran/20861
	* gfortran.dg/internal_dummy_1.f90: New test.

	PR fortran/20871
	* gfortran.dg/elemental_non_intrinsic_dummy_1.f90: New test.


	PR fortran/25083
	* gfortran.dg/uncommon_block_data_1.f90: New test.
	* gfortran.dg/equiv_constraint_7.f90: Correct non-compliance of test
	with standard.

	PR fortran/25088
	* gfortran.dg/typed_subroutine_1.f90: New test.


Added:
    branches/gcc-4_1-branch/gcc/testsuite/gfortran.dg/bad_automatic_objects_1.f90
    branches/gcc-4_1-branch/gcc/testsuite/gfortran.dg/internal_dummy_1.f90
    branches/gcc-4_1-branch/gcc/testsuite/gfortran.dg/module_parameter_array_refs_1.f90
    branches/gcc-4_1-branch/gcc/testsuite/gfortran.dg/pure_non_intrinsic_dummy_1.f90
    branches/gcc-4_1-branch/gcc/testsuite/gfortran.dg/typed_subroutine_1.f90
    branches/gcc-4_1-branch/gcc/testsuite/gfortran.dg/uncommon_block_data_1.f90
Modified:
    branches/gcc-4_1-branch/gcc/fortran/ChangeLog
    branches/gcc-4_1-branch/gcc/testsuite/ChangeLog

Comment 5 Paul Thomas 2006-02-13 21:38:00 UTC
Fixed on trunk and 4.1.

Paul
Comment 6 Paul Thomas 2006-02-14 07:18:51 UTC
Subject: Bug 25103

Author: pault
Date: Tue Feb 14 07:18:44 2006
New Revision: 110960

URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=110960
Log:
2006-02-13  Paul Thomas  <pault@gcc.gnu.org>

	PR fortran/26074
	PR fortran/25103
	PR fortran/20861
	PR fortran/20871
	PR fortran/25083
	PR fortran/25088
	* resolve.c (resolve): Actually apply the patch below!

Modified:
    branches/gcc-4_1-branch/gcc/fortran/resolve.c
    branches/gcc-4_1-branch/gcc/testsuite/gfortran.dg/automatic_module_variable.f90
    branches/gcc-4_1-branch/gcc/testsuite/gfortran.dg/equiv_constraint_7.f90