Commit Graph

190 Commits

Author SHA1 Message Date
Paul Thomas
a34437a1da re PR fortran/31630 (ICE on nasty derived types code)
2007-05-08  Paul Thomas  <pault@gcc.gnu.org>

	PR fortran/31630
	* resolve.c (resolve_symbol): Remove the flagging mechanism from the
	formal namespace resolution and instead check that the formal
	namespace is not the current namespace.

From-SVN: r124550
2007-05-08 14:40:58 +00:00
Paul Thomas
8111a921e9 re PR fortran/31540 ([Regression 4.2 only] character((constant expression)) for external function)
2007-05-06  Paul Thomas  <pault@gcc.gnu.org>

	PR fortran/31540
	* resolve.c (resolve_fl_procedure): Resolve constant character
	lengths.

2007-05-06  Paul Thomas  <pault@gcc.gnu.org>

	PR fortran/31540
	* gfortran.dg/char_result_4.f90: New test.

From-SVN: r124475
2007-05-06 15:12:01 +00:00
Tobias Burnus
29ea08dac3 re PR fortran/31668 (%VAL rejected for PROC_MODULE and PROC_INTERNAL procedures)
fortran/
2007-04-25  Tobias Burnus  <burnus@net-b.de>

	PR fortran/31668
	* error.c (error_print): Fix %% support.
	* intrinsic.c (sort_actual): Improve error message.
	* resolve.c (resolve_actual_arglist): Allow %VAL for
	interfaces defined in the module declaration part.

testsuite/
2007-04-25  Tobias Burnus  <burnus@net-b.de>

	PR fortran/31668
	* gfortran.dg/c_by_val_2.f90: Add rejection test of %VAL with
	statement functions.
	* gfortran.dg/c_by_val_5.f90: New test.

From-SVN: r124147
2007-04-25 10:32:21 +02:00
Paul Thomas
6e0d7c6e0d re PR fortran/31630 (ICE on nasty derived types code)
2007-04-23  Paul Thomas  <pault@gcc.gnu.org>

	PR fortran/31630
	* resolve.c (resolve_symbol): Allow resolution of formal
	namespaces nested within formal namespaces coming from modules.

	PR fortran/31620
	* trans-expr.c (gfc_trans_assignment): Make the call to
	gfc_trans_zero_assign conditional on the lhs array ref being
	the only reference.

2007-04-23  Paul Thomas  <pault@gcc.gnu.org>

	PR fortran/31630
	* gfortran.dg/used_types_17.f90: New test.

	PR fortran/31620
	* gfortran.dg/zero_array_components_1.f90: New test.

From-SVN: r124069
2007-04-23 15:13:48 +00:00
Tobias Schlüter
0615f92345 re PR fortran/18937 (quadratic behaviour with many label "spaghetti" code)
PR fortran/18937
fortran/
* resolve.c: Include obstack.h and bitmap.h.  New variable
labels_obstack.
(code_stack): Add tail and reachable_labels fields.
(reachable_labels): New function.
(resolve_branch): Rework to use new fields in code_stack.
(resolve_code): Call reachable_labels.
(resolve_codes): Allocate and free labels_obstack.
testsuite/
* gfortran.dg/goto_2.f90: New.
* gfortran.dg/goto_3.f90: New.
* gfortran.dg/pr17708.f90: Rename to ...
* gfortran.dg/goto_4.f90: ... this, add comment pointing to
PR.

From-SVN: r123789
2007-04-13 15:48:08 +02:00
Tobias Schlüter
5cd09fac3d re PR fortran/31250 (Initialization expr as constant character length rejected)
PR fortran/31250
fortran/
* decl.c (match_char_spec): Move check for negative CHARACTER
length ...
* resolve.c (resolve_charlen): ... here.
(resolve_types): Resolve CHARACTER lengths earlier.
teststuite/
* gfortran.dg/char_length_2.f90: New.

From-SVN: r123763
2007-04-12 20:48:06 +02:00
Tobias Schlüter
e8a2534927 re PR fortran/31266 (Spurious(?) warning about character truncation)
PR fortran/31266
fortran/
* primary.c (gfc_variable_attr): Don't copy string length if it
doesn't make sense.
* resolve.c (resolve_code): Clarify error message.
testsuite/
* gfortran.dg/char_assign_1.f90: New.

From-SVN: r123759
2007-04-12 20:10:10 +02:00
Paul Thomas
145bdc2cbc re PR fortran/30880 (Derived types with default value -- function with ENTRY: rejected at compile time)
2007-04-07  Paul Thomas  <pault@gcc.gnu.org>

	PR fortran/30880
	* resolve.c (resolve_fl_variable): Set flag to 2 for automatic
	arrays.  Make condition for automatic array error explicit.
	If a dummy, no error on an INTENT(OUT) derived type.

2007-04-07  Paul Thomas  <pault@gcc.gnu.org>

	PR fortran/30880
	* gfortran.dg/used_dummy_types_8.f90: New test.

From-SVN: r123645
2007-04-07 20:25:43 +00:00
Francois-Xavier Coudert
271892929a re PR fortran/30877 (Extending intrinsic operators)
PR fortran/30877

	* fortran/interface.c (check_operator_interface): Implement
	the standard checks on user operators extending intrinsic operators.
	* fortran/resolve.c (resolve_operator): If the ranks of operators
	don't match, don't error out but try the user-defined ones first.

	* gfortran.dg/operator_1.f90: New test.
	* gfortran.dg/operator_2.f90: New test.

From-SVN: r123196
2007-03-25 09:01:23 +00:00
Francois-Xavier Coudert
d912240d90 re PR fortran/30655 (Undue out-of-bounds warning)
PR fortran/30655

	* expr.c (check_dimension): Fix logic of comparisons.

	* gfortran.dg/bounds_check_6.f90: New test.

From-SVN: r123187
2007-03-24 20:19:51 +00:00
Paul Thomas
7453378e3d re PR fortran/30531 ([4.2 only] allocatable component and intent(out) yield ICE in fold_convert)
2007-03-18  Paul Thomas  <pault@gcc.gnu.org>

	PR fortran/30531
	PR fortran/31086
	* symbo.c : Add gfc_derived_types.
	(gfc_free_dt_list): Free derived type list gfc_derived_types.
	(gfc_free_namespace): Remove call to gfc_free_dt_list.
	(gfc_symbol_done_2): Call  gfc_free_dt_list.
	* gfortran.h : Declare gfc_derived_types to be external. Remove
	derived types field from gfc_namespace.
	* resolve.c (resolve_fl_derived): Refer to gfc_derived types
	rather than namespace derived_types.
	(resolve_fntype): Remove special treatment for module
	derived type functions.
	* trans-types.c (gfc_get_derived_type): Remove search for like
	derived types.  Finish by copying back end declaration to like
	derived types in the derived type list gfc_derived_types.

2007-03-18  Paul Thomas  <pault@gcc.gnu.org>

	PR fortran/30531
	* gfortran.dg/used_types_14.f90: New test.

	PR fortran/31086
	* gfortran.dg/used_types_15.f90: New test.

From-SVN: r123037
2007-03-18 15:00:55 +00:00
Paul Thomas
36d3fb4cfe [multiple changes]
2007-03-15  Tobias Burnus  <burnus@gcc.gnu.org>
	    Paul Thomas  <pault@gcc.gnu.org>

	PR fortran/30922
	* decl.c (gfc_match_import): If the parent of the current name-
	space is null, try looking for an imported symbol in the parent
	of the proc_name interface.
	* resolve.c (resolve_fl_variable): Do not check for blocking of
	host association by a same symbol, if the symbol is in an
	interface body.

2007-03-15  Paul Thomas  <pault@gcc.gnu.org>

	PR fortran/30879
	* decl.c (match_data_constant): Before going on to try to match
	a name, try to match a structure component.


	PR fortran/30870
	* resolve.c (resolve_actual_arglist): Do not reject a generic
	actual argument if it has a same name specific interface.

	PR fortran/31163
	* trans-array.c (parse_interface): Do not nullify allocatable
	components if the symbol has the saved attribute.


2007-03-15  Paul Thomas  <pault@gcc.gnu.org>

	PR fortran/30922
	* gfortran.dg/import5.f90.f90: New test.


	PR fortran/30879
	* gfortran.dg/data_components_1.f90: New test.


	PR fortran/30870
	* gfortran.dg/generic_13.f90: New test.

	PR fortran/31163
	* gfortran.dg/alloc_comp_basics_5.f90: New test.

From-SVN: r122944
2007-03-15 06:44:25 +00:00
Tobias Burnus
7193e30a4d re PR fortran/30888 (%VAL construct fails with argument procedures)
2007-02-28  Tobias Burnus  <burnus@net-b.de>
	    Paul Thomas  <pault@gcc.gnu.org>

	PR fortran/30888
	PR fortran/30887
	* resolve.c (resolve_actual_arglist): Allow by-value
	arguments and non-default-kind for %VAL().
	* trans-expr.c (conv_arglist_function): Allow
	non-default-kind for %VAL().

testsuite/
2007-02-28  Tobias Burnus  <burnus@net-b.de>
	    Paul Thomas  <pault@gcc.gnu.org>

	PR fortran/30888
	PR fortran/30887
	* c_by_val_1.f: Test %VAL() with non-default kind.
	* c_by_val.c: Ditto.
	* c_by_val_4.f: New test.


Co-Authored-By: Paul Thomas <pault@gcc.gnu.org>

From-SVN: r122409
2007-02-28 19:17:34 +01:00
Paul Thomas
74a5d8b9fe re PR fortran/30660 (Allocatable components of a derived type "require" the SAVE attribute.)
2007-02-23  Paul Thomas <pault@gcc.gnu.org>

        PR fortran/30660
        * resolve.c (has_default_initializer): New function.
        (resolve_fl_variable): Call has_default_initializer to determine if
        the derived type has a default initializer to its ultimate
        components.

2007-02-23  Paul Thomas <pault@gcc.gnu.org>

        PR fortran/30660
        * gfortran.dg/alloc_comp_basics_4.f90: Add component with an
        allocatable component.

From-SVN: r122263
2007-02-23 17:35:25 +01:00
Tobias Burnus
1084b6b03b re PR fortran/30783 ("character(*), value" produces SEGV at runtime)
2007-02-20  Tobias Burnus  <burnus@net-b.de>

       PR fortran/30783
       * resolve.c (resolve_symbol): Add character dummy VALUE check.

From-SVN: r122156
2007-02-20 10:16:58 +01:00
Paul Thomas
36f7dcae09 re PR fortran/30514 ([4.1 only] zero-sized array wrongly rejected: integer :: i(1:-1))
2007-02-03  Paul Thomas  <pault@gcc.gnu.org>

	PR fortran/30514
	* array.c (match_array_element_spec): If the length of an array is
	negative, adjust the upper limit to make it zero length.

	PR fortran/30660
	* resolve.c (pure_function, resolve_function): Initialize name to
	null to clear up build warnings.
	(resolve_fl_variable): Look at components explicitly to check for
	default initializer, rather than using gfc_default_initializer.

2007-02-03  Paul Thomas  <pault@gcc.gnu.org>

	PR fortran/30514
	* gfortran.dg/zero_sized_2.f90: New test.

	PR fortran/30660
	* gfortran.dg/alloc_comp_basics_4.f90: New test.

	PR fortran/29820
	* gfortran.dg/actual_array_interface_1.f90: Copy source to empty
	file.

From-SVN: r121541
2007-02-03 13:38:42 +00:00
Steven G. Kargl
2e6524ba30 re PR fortran/30683 ([4.2 only] internal compiler error: Segmentation fault)
2007-02-02  Steven G. Kargl  <kargl@gcc.gnu.org>

	PR fortran/30683
	* resolve.c (resolve_generic_f): Check for non-NULL sym.
	* gfortran.dg/interface_10.f90: New test.

From-SVN: r121531
2007-02-03 01:01:06 +00:00
Paul Thomas
a00b8d1a38 re PR fortran/30407 ([4.1 only] Elemental functions in WHERE assignments wrongly rejected)
2007-01-27  Paul Thomas  <pault@gcc.gnu.org>

	PR fortran/30407
	* trans-expr.c (gfc_conv_operator_assign): New function.
	* trans.h : Add prototype for gfc_conv_operator_assign.
	* trans-stmt.c (gfc_trans_where_assign): Add a gfc_symbol for
	a potential operator assignment subroutine.  If it is non-NULL
	call gfc_conv_operator_assign instead of the first assignment.
	( gfc_trans_where_2): In the case of an operator assignment,
	extract the argument expressions from the code for the
	subroutine call and pass the symbol to gfc_trans_where_assign.
	resolve.c (resolve_where, gfc_resolve_where_code_in_forall,
	gfc_resolve_forall_body): Resolve the subroutine call for
	operator assignments.

2007-01-27  Paul Thomas  <pault@gcc.gnu.org>

	PR fortran/30407
	* gfortran.dg/where_operator_assign_1.f90: New test.
	* gfortran.dg/where_operator_assign_2.f90: New test.
	* gfortran.dg/where_operator_assign_3.f90: New test.

From-SVN: r121235
2007-01-27 18:23:14 +00:00
Steven G. Kargl
edf1eac29e openmp.c, [...]: Next installment in the massive whitespace patch.
* openmp.c, matchexp.c, module.c, scanner.c, resolve.c, st.c,
    parse.c, primary.c, options.c, misc.c, simplify.c:  Next installment
    in the massive whitespace patch.

From-SVN: r121012
2007-01-20 22:01:41 +00:00
Paul Thomas
9ebe2d22e7 re PR fortran/28172 ([4.2 and 4.1 only] alternate return in contained procedure segfaults)
2007-01-15  Paul Thomas  <pault@gcc.gnu.org>

	PR fortran/28172
	* trans-stmt.c (gfc_trans_call): If it does not have one, get
	a backend_decl for an alternate return.

	PR fortran/29389
	* resolve.c (pure_function): Statement functions are pure. Note
	that this will have to recurse to comply fully with F95.

	PR fortran/29712
	* resolve.c (resolve_function): Only a reference to the final
	dimension of an assumed size array is an error in an inquiry
	function.

	PR fortran/30283
	* resolve.c (resolve_function): Make sure that the function
	expression has a type.

2007-01-15  Paul Thomas  <pault@gcc.gnu.org>

	PR fortran/28172
	* gfortran.dg/altreturn_4.f90: New test.

	PR fortran/29389
	* gfortran.dg/stfunc_4.f90: New test.

	PR fortran/29712
	* gfortran.dg/bound_2.f90: Reinstate commented out line.
	* gfortran.dg/initialization_1.f90: Change warning.

	PR fortran/30283
	* gfortran.dg/specification_type_resolution_2.f90: New test.

From-SVN: r120790
2007-01-15 08:16:17 +00:00
Jerry DeLisle
0b30ba3b6c [multiple changes]
2007-01-09  Paul Thomas  <pault@gcc.gnu.org>

	PR fortran/30408
	* resolve.c (resolve_code): Use the code->expr character length
	directly to set length of llen.

2007-01-09  Jerry DeLisle  <jvdelisle@gcc.gnu.org>

	PR fortran/30408
	* lang.opt: Add Wcharacter_truncation option.
	* options.c (gfc_init_options): Initialize
	gfc_option.warn_character_truncation to zero.
	(gfc_handle_option): Add case for OPT_Wcharacter_truncation.

From-SVN: r120632
2007-01-10 04:34:34 +00:00
Paul Thomas
2220652d3f re PR fortran/23232 ([4.1 only] DATA implied DO variables)
2007-01-05  Paul Thomas  <pault@gcc.gnu.org>

	PR fortran/23232
	* decl.c (gfc_in_match_data, gfc_set_in_match_data): New
	functions to signal that a DATA statement is being matched.
	(gfc_match_data): Call gfc_set_in_match_data on entry and on
	exit.
	* gfortran.h : Add prototypes for above.
	* expr.c (check_init_expr): Avoid check on parameter or
	variable if gfc_in_match_data is true.
	(gfc_match_init_expr): Do not call error on non-reduction of
	expression if gfc_in_match_data is true.

	PR fortran/27996
	PR fortran/27998
	* decl.c (gfc_set_constant_character_len): Add boolean arg to
	flag array constructor resolution.  Warn if string is being
	truncated.  Standard dependent error if string is padded. Set
	new arg to false for all three calls to
	gfc_set_constant_character_len.
	* match.h : Add boolean arg to prototype for
	gfc_set_constant_character_len.
	* gfortran.h : Add warn_character_truncation to gfc_options.
	* options.c (set_Wall): Set warn_character_truncation if -Wall
	is set.
	* resolve.c (resolve_code): Warn if rhs string in character
	assignment has to be truncated.
	* array.c (gfc_resolve_character_array_constructor): Set new
	argument to true for call to gfc_set_constant_character_len.

2007-01-05  Paul Thomas  <pault@gcc.gnu.org>

	PR fortran/23232
	* gfortran.dg/data_implied_do_1.f90: New test.

	PR fortran/27996
	PR fortran/27998
	* gfortran.dg/char_length_1.f90: New test.

From-SVN: r120485
2007-01-05 14:45:20 +00:00
Tobias Burnus
f17facacf2 re PR fortran/29624 (Fortran 2003: Support intent for pointers)
fortran/
2007-01-05  Tobias Burnus  <burnus@net-b.de>

        PR fortran/29624
        * interface.c (compare_parameter_intent): New function.
          (check_intents): Support pointer intents.
        * symbol.c (check_conflict): Support pointer intents,
          better conflict_std message.
        * expr.c (gfc_check_assign,gfc_check_pointer_assign):
          Support pointer intents.
        * resolve.c (resolve_deallocate_expr,resolve_allocate_expr):
          Support pointer intents.

testsuite/
2006-01-05  Tobias Burnus  <burnus@net-b.de>

        PR fortran/29624
        * gfortran.dg/alloc_alloc_expr_1.f90: Add check for
          invalid deallocate.
        * gfortran.dg/allocatable_dummy_2.f90: Update dg-error.
        * gfortran.dg/protected_4.f90: Add pointer intent check.
        * gfortran.dg/protected_6.f90: Add pointer intent check.
        * gfortran.dg/pointer_intent_1.f90: New test.
        * gfortran.dg/pointer_intent_2.f90: New test.
        * gfortran.dg/pointer_intent_3.f90: New test.

From-SVN: r120472
2007-01-05 10:08:37 +01:00
Paul Thomas
ff60488853 re PR fortran/20896 (ambiguous interface not detected)
2007-01-02  Paul Thomas  <pault@gcc.gnu.org>

	PR fortran/20896
	* interface.c (check_sym_interfaces): Remove call to
	resolve_global_procedure.
	gfortran.h : Remove prototype for resolve_global_procedure.
	resolve.c (resolve_global_procedure): Add static attribute
	to function declaration.

2007-01-02  Paul Thomas  <pault@gcc.gnu.org>

	PR fortran/20896
	* gfortran.dg/interface_10.f90: Remove.

From-SVN: r120342
2007-01-02 14:23:36 +00:00
Paul Thomas
20a037d5f5 re PR fortran/27900 ([4.1 only] ICE using intrinsics as arguments)
2006-12-31  Paul Thomas  <pault@gcc.gnu.org>

	PR fortran/27900
	* resolve.c (resolve_actual_arglist): If all else fails and a
	procedure actual argument has no type, see if a specific
	intrinsic matches.

	PR fortran/24325
	* resolve.c (resolve_function): If the function reference is
	FL_VARIABLE this is an error.

2006-12-31  Paul Thomas  <pault@gcc.gnu.org>

	PR fortran/27900
	* gfortran.dg/intrinsic_actual_4.f90: New test.

	PR fortran/24325
	* gfortran.dg/func_decl_3.f90: New test.

From-SVN: r120296
2006-12-31 07:51:47 +00:00
Paul Thomas
7fcafa718d re PR fortran/23060 (%VAL, %REF and %DESCR constructs not implemented)
2006-12-31  Paul Thomas  <pault@gcc.gnu.org>

	PR fortran/23060
	* intrinsic.c (compare_actual_formal ): Distinguish argument
	list functions from keywords.
	* intrinsic.c (sort_actual): If formal is NULL, the presence of
	an argument list function actual is an error.
	* trans-expr.c (conv_arglist_function) : New function to
	implement argument list functions %VAL, %REF and %LOC.
	(gfc_conv_function_call): Call it.
	* resolve.c (resolve_actual_arglist): Add arg ptype and check
	argument list functions.
	(resolve_function, resolve_call): Set value of ptype before
	calls to resolve_actual_arglist.
	* primary.c (match_arg_list_function): New function.
	(gfc_match_actual_arglist): Call it before trying for a
	keyword argument.

2006-12-31  Paul Thomas  <pault@gcc.gnu.org>

	PR fortran/23060
	* gfortran.dg/c_by_val.c: Called by c_by_val_1.f.
	* gfortran.dg/c_by_val_1.f: New test.
	* gfortran.dg/c_by_val_2.f: New test.
	* gfortran.dg/c_by_val_3.f: New test.

From-SVN: r120295
2006-12-31 06:55:16 +00:00
Paul Thomas
c5bfb0451d re PR fortran/30034 ([4.1 only] pure subroutine requires intent for procedure argument)
2006-12-28  Paul Thomas  <pault@gcc.gnu.org>

	PR fortran/30034
	* resolve.c (resolve_formal_arglist): Exclude the test for
	pointers and procedures for subroutine arguments as well as
	functions.

	PR fortran/30237
	* intrinsic.c (remove_nullargs): Do not pass up arguments with
	a label. If the actual has a label and the formal has a type
	then emit an error.

2006-12-28  Paul Thomas  <pault@gcc.gnu.org>

	PR fortran/30034
	* gfortran.dg/pure_formal_proc_1.f90: New test.

	PR fortran/30237
	* gfortran.dg/intrinsic_actual_3.f90: New test.

From-SVN: r120244
2006-12-28 18:41:25 +00:00
Paul Thomas
9914f8cff9 re PR fortran/20896 (ambiguous interface not detected)
2006-12-27  Paul Thomas  <pault@gcc.gnu.org>

	PR fortran/20896
	* interface.c (check_sym_interfaces): Try to resolve interface
	reference as a global symbol, if it is not a nodule procedure.
	(compare_actual_formal): Remove call to gfc_find_symbol; if
	the expression is already a variable it is locally declared
	and this has precedence.
	gfortran.h : Add prototype for resolve_global_procedure.
	resolve.c (resolve_global_procedure): Remove static attribute
	from function declaration.
	(resolve_fl_procedure): Remove symtree declaration and the
	redundant check for an ambiguous procedure.

	PR fortran/25135
	* module.c (load_generic_interfaces): If the symbol is present
	and is not generic it is ambiguous.

2006-12-27  Paul Thomas  <pault@gcc.gnu.org>

	PR fortran/20896
	* gfortran.dg/interface_10.f90: New test.
	* gfortran.dg/dummy_procedure_1.f90: Add error for call s1(z),
	since z is already, locally a variable.

	PR fortran/25135
	* gfortran.dg/generic_11.f90: New test.
	* gfortran.dg/interface_7.f90: Remove name clash between module
	name and procedure 'x' referenced in the interface.

From-SVN: r120218
2006-12-27 13:46:47 +00:00
Paul Thomas
54129a64cd re PR fortran/25818 ([4.1 only] Problem with handling optional and entry master arguments)
2006-12-22  Paul Thomas  <pault@gcc.gnu.org>

	PR fortran/25818
	* trans-array.c (gfc_trans_g77_array): If the variable is
	optional or not always present, make the statement conditional
	on presence of the argument.
	* gfortran.h : Add symbol_attribute not_always_present.
	* resolve.c (check_argument_lists): New function to check if
	arguments are not present in all entries.

	PR fortran/30084
	* module.c (mio_component_ref): Move treatment of unique name
	variables, during output, to fix_mio_expr.
	(fix_mio_expr): New function that fixes defective expressions
	before they are written to the module file.
	(mio_expr): Call the new function.
	(resolve_entries): Call check_argument_lists.

2006-12-22  Paul Thomas  <pault@gcc.gnu.org>

	PR fortran/25818
	* gfortran.dg/entry_array_specs_2.f: New test.

	PR fortran/30084
	* gfortran.dg/nested_modules_6.f90: New test.

From-SVN: r120155
2006-12-22 20:49:00 +00:00
Paul Thomas
71f77fd790 re PR fortran/29992 ([4.1 only] INTERFACE equivalent to MODULE PROCEDURE?!)
2006-12-20  Paul Thomas  <pault@gcc.gnu.org>

	PR fortran/29992
	* interface.c (check_sym_interfaces): Module procedures in a
	generic must be use associated or contained in the module.
	* decl.c (gfc_match_modproc): Set attribute mod_proc.
	* gfortran.h (symbol_attribute): Add mod_proc atribute.

	PR fortran/30081
	* resolve.c (resolve_generic_f, resolve_generic_s): Use
	gfc_intrinsic_name to find out if the function is intrinsic
	because it does not have to be a generic intrinsic to be
	overloaded.

2006-12-20  Paul Thomas  <pault@gcc.gnu.org>

	PR fortran/29992
	* gfortran.dg/generic_9.f90: New test.

	PR fortran/30081
	* gfortran.dg/generic_10.f90: New test.

From-SVN: r120072
2006-12-20 13:48:06 +00:00
Tobias Burnus
ee7e677fdd re PR fortran/23994 (PROTECTED attribute (F2003) is not implemented)
fortran/
2006-12-10  Tobias Burnus  <burnus@net-b.de>

    PR fortran/23994
    * interface.c (compare_actual_formal): PROTECTED is incompatible
with intent(out).
    * symbol.c (check_conflict): Check for PROTECTED conflicts.
      (gfc_add_protected): New function.
      (gfc_copy_attr): Copy PROTECTED attribute.
    * decl.c (match_attr_spec): Add PROTECTED support.
      (gfc_match_protected): New function.
    * dump-parse-tree.c (gfc_show_attr): Add PROTECTED support.
    * gfortran.h (gfc_symbol): Add protected flag.
      Add gfc_add_protected prototype.
    * expr.c (gfc_check_pointer_assign): Add PROTECTED support.
    * module.c (ab_attribute, attr_bits, mio_symbol_attribute,
mio_symbol_attribute):
       Add PROTECTED support.
    * resolve.c (resolve_equivalence): Add PROTECTED support.
    * match.c (gfc_match_assignment,)gfc_match_pointer_assignment:
       Check PROTECTED attribute.
    * match.h: Add gfc_match_protected prototype.
    * parse.c (decode_statement): Match PROTECTED statement.
    * primary.c (match_variable): Add PROTECTED support.

testsuite/
2006-12-10  Tobias Burnus  <burnus@net-b.de>

    PR fortran/23994
    * gfortran.dg/protected_1.f90: New test.
    * gfortran.dg/protected_2.f90: New test.
    * gfortran.dg/protected_3.f90: New test.
    * gfortran.dg/protected_4.f90: New test.
    * gfortran.dg/protected_5.f90: New test.
    * gfortran.dg/protected_6.f90: New test.

From-SVN: r119709
2006-12-10 20:53:07 +01:00
Paul Thomas
993ef28f82 re PR other/29975 ([meta-bugs] ICEs with CP2K)
2006-12-09  Paul Thomas <pault@gcc.gnu.org>

	PR fortran/29975
	PR fortran/30068
	PR fortran/30096
	* interface.c (compare_type_rank_if): Reject invalid generic
	interfaces.
	(check_interface1): Give a warning for nonreferred to ambiguous
	interfaces.
	(check_sym_interfaces): Check whether an ambiguous interface is
	referred to.  Do not check host associated interfaces since these
	cannot be ambiguous with the local versions.
	(check_uop_interface, gfc_check_interfaces): Update call to
	check_interface1.
	* symbol.c (gfc_get_sym_tree, gfc_get_sym_tree): Allow adding
	unambiguous procedures to generic interfaces.
	* gfortran.h (symbol_attribute): Added use_only and
	ambiguous_interfaces.
	* module.c (load_need): Set the use_only flag, if needed.
	* resolve.c (resolve_fl_procedure): Warn for nonreferred
	interfaces.
	* expr.c (find_array_section): Fix initializer array contructor.


2006-12-09  Paul Thomas <pault@gcc.gnu.org>
	    Tobias Burnus <burnus@gcc.gnu.org>

	PR fortran/29975
	PR fortran/30068
	* gfortran.dg/interface_4.f90: Test adding procedure to generic
	interface.
	* gfortran.dg/interface_5.f90: Test warning for not-referenced-to
	ambiguous interfaces.
	* gfortran.dg/interface_6.f90: Test invalid, ambiguous interface.
	* gfortran.dg/interface_7.f90: Test invalid, ambiguous interface.
	* gfortran.dg/interface_8.f90: Test warning for not-referenced-to
	ambiguous interfaces.
	* gfortran.dg/interface_1.f90: Change dg-error into a dg-warning.
	* gfortran.dg/array_initializer_2.f90: Add initializer array
	constructor test.

	PR fortran/30096
	* gfortran.dg/interface_9.f90: Test that host interfaces are
	not checked for ambiguity with the local version.

Co-Authored-By: Tobias Burnus <burnus@gcc.gnu.org>

From-SVN: r119697
2006-12-09 21:13:29 +00:00
Paul Thomas
4d4074e415 re PR fortran/29941 ([4.1 only] gfortran reports error with len of assumed size character array)
2006-12-09  Paul Thomas  <pault@gcc.gnu.org>

	PR fortran/29941
	* resolve.c (resolve_function): Add LEN to the functions not
	checked for assumed size actual args.


2006-12-09  Paul Thomas  <pault@gcc.gnu.org>

	PR fortran/29941
	* gfortran.dg/assumed_len.f90: New test.

From-SVN: r119695
2006-12-09 20:41:51 +00:00
Aldy Hernandez
d5733d10bd Revert accidental change.
From-SVN: r119547
2006-12-05 17:53:35 +00:00
Aldy Hernandez
07beea0df3 Merge gimple-tuples-branch into mainline.
From-SVN: r119546
2006-12-05 17:26:05 +00:00
Paul Thomas
dd5ecf4155 [multiple changes]
2006-12-04  Paul Thomas  <pault@gcc.gnu.org>

	PR fortran/29821
	* resolve.c (resolve_operator): Only return result of
	gfc_simplify_expr if expression is constant.


2006-12-04  Paul  Thomas <pault@gcc.gnu.org>

	PR fortran/29821
	* gfortran.dg/parameter_array_section_1.f90: New test.

From-SVN: r119504
2006-12-04 19:30:33 +00:00
Paul Thomas
98bbe5ee70 re PR fortran/29916 ([4.1 only] Dimension of a function result as host association does not work)
fortran/
2006-12-04  Paul Thomas  <pault@gcc.gnu.org>

    PR fortran/29916
    * resolve.c (resolve_symbol): Allow host-associated variables
      in the specification expression of an array-valued function.
    * expr.c (check_restricted): Accept host-associated dummy
      array indices.

testsuite/
2006-12-04  Paul Thomas  <pault@gcc.gnu.org>

    PR fortran/29916
    * gfortran.dg/host_dummy_index_1.f90: Added additional test.

From-SVN: r119489
2006-12-04 12:16:12 +01:00
Paul Thomas
06469efd1a re PR fortran/29642 (Fortran 2003: VALUE Attribute (call by value not call by reference for actual arguments))
2006-12-03  Paul Thomas  <pault@gcc.gnu.org>

	PR fortran/29642
	* trans-expr.c (gfc_conv_variable): A character expression with
	the VALUE attribute needs an address expression; otherwise all
	other expressions with this attribute must not be dereferenced.
	(gfc_conv_function_call): Pass expressions with the VALUE
	attribute by value, using gfc_conv_expr.
	* symbol.c (check_conflict): Add strings for INTENT OUT, INOUT
	and VALUE.  Apply all the constraints associated with the VALUE
	attribute.
	(gfc_add_value): New function.
	(gfc_copy_attr): Call it for VALUE attribute.
	* decl.c (match_attr_spec): Include the VALUE attribute.
	(gfc_match_value): New function.
	* dump-parse-tree.c (gfc_show_attr): Include VALUE.
	* gfortran.h : Add value to the symbol_attribute structure and
	add a prototype for gfc_add_value
	* module.c (mio_internal_string): Include AB_VALUE in enum.
	(attr_bits): Provide the VALUE string for it.
	(mio_symbol_attribute): Read or apply the VLUE attribute.
	* trans-types.c (gfc_sym_type): Variables with the VLAUE
	attribute are not passed by reference!
	* resolve.c (was_declared): Add value to those that return 1.
	(resolve_symbol): Value attribute requires dummy attribute.
	* match.h : Add prototype for gfc_match_public.
	* parse.c (decode_statement): Try to match a VALUE statement.


2006-12-03  Paul Thomas  <pault@gcc.gnu.org>

	PR fortran/29642
	* gfortran.dg/value_1.f90 : New test.
	* gfortran.dg/value_2.f90 : New test.
	* gfortran.dg/value_3.f90 : New test.
	* gfortran.dg/value_4.f90 : New test.
	* gfortran.dg/value_4.c : Called from value_4.f90.

From-SVN: r119461
2006-12-03 07:18:22 +00:00
Paul Thomas
911a40abe0 re PR fortran/20880 (USE association of procedure's own interface)
2006-11-28  Paul Thomas  <pault@gcc.gnu.org>

	PR fortran/20880
	* resolve.c (resolve_fl_procedure): Error if procedure is
	ambiguous modified to require attr.referenced.

2006-11-28  Paul Thomas  <pault@gcc.gnu.org>

	PR fortran/20880
	* gfortran.dg/interface_3.f90: Modify errors.

From-SVN: r119272
2006-11-28 05:36:07 +00:00
Paul Thomas
536afc35bc re PR fortran/20880 (USE association of procedure's own interface)
2006-11-24  Paul Thomas  <pault@gcc.gnu.org>

	PR fortran/20880
	* parse.c (parse_interface): Error if procedure name is that of
	encompassing scope.
	* resolve.c (resolve_fl_procedure): Error if procedure is
	ambiguous.

	PR fortran/29387
	* interface.c (compare_actual_formal): Add missing condition
	that 'where' be present for error that asserts that actual
	arguments be definable.

2006-11-24  Paul Thomas  <pault@gcc.gnu.org>

	PR fortran/20880
	* gfortran.dg/interface_3.f90: New test.

	PR fortran/29387
	* gfortran.dg/generic_8.f90: New test.

From-SVN: r119173
2006-11-24 22:22:40 +00:00
Francois-Xavier Coudert
e7c1c8d1a1 resolve.c (resolve_actual_arglist): Remove the special case for CHAR.
* resolve.c (resolve_actual_arglist): Remove the special case for
	CHAR.
	* intrinsic.c (add_functions): Remove the special case for CHAR.

	* gfortran.dg/specifics_1.f90: Remove check for CHAR.
	* gfortran.dg/specifics_2.f90: Remove check for CHAR.
	* gfortran.dg/specifics_3.f90: Remove.

From-SVN: r119170
2006-11-24 21:45:36 +00:00
Paul Thomas
92c59193a1 re PR fortran/25087 (Error for missing explicit interface needed.)
2006-11-22 Paul Thomas  <pault@gcc.gnu.org>

	PR fortran/25087
	* resolve.c (resolve_fl_procedure): Add an error if an external
	automatic character length function does not have an explicit
	interface.

2006-11-22 Paul Thomas  <pault@gcc.gnu.org>

	PR fortran/25087
	* gfortran.dg/auto_char_len_4.f90: New test.

From-SVN: r119077
2006-11-22 00:05:10 +00:00
Bernhard Fischer
9d691ba750 re PR fortran/24783 ([4.1 and 4.2 only] Implicit none in module overwrite explicit in procedure)
fortran/ChangeLog
2006-11-20  Bernhard Fischer  <aldot@gcc.gnu.org>

        PR fortran/24783
        * resolve.c (resolve_variable): Get the implicit type from the
        symbols namespace rather than the default namespace. Fix whitespace.
        (resolve_formal_arglist, resolve_equivalence): Fix typo.


testsuite/ChangeLog
2006-11-20  Bernhard Fischer  <aldot@gcc.gnu.org>

        PR fortran/24783
        * gfortran.dg/implicit_10.f90: New test.

From-SVN: r119016
2006-11-20 17:20:33 +01:00
Erik Edelmann
51f824b647 resolve.c (resolve_ref): Check for ALLOCATABLEs to the right of nonzero rank part references too.
fortran/
2006-11-19  Erik Edelmann  <eedelman@gcc.gnu.org>

        * resolve.c (resolve_ref): Check for ALLOCATABLEs to the right of
        nonzero rank part references too.


testsuite/
2006-11-19  Erik Edelmann  <eedelman@gcc.gnu.org>

        * gfortran.dg/alloc_comp_constraint_5.f90: New.
        * gfortran.dg/alloc_comp_assign_2.f90: Removed invalid code.

From-SVN: r118999
2006-11-19 21:27:16 +00:00
Francois-Xavier Coudert
39f87c0333 module.c (gfc_use_module): Uncomment the ISO_FORTRAN_ENV code.
* module.c (gfc_use_module): Uncomment the ISO_FORTRAN_ENV code.
	Check that intrinsic and non-intrinsic modules don't conflict.
	(use_iso_fortran_env_module): New function.
	(create_int_parameter): New function.
	* trans-types.c (gfc_init_kinds): Choose values for
	gfc_numeric_storage_size and gfc_character_storage_size.
	(gfc_numeric_storage_size, gfc_character_storage_size): New variables.
	* resolve.c (resolve_symbol): Do no check intrinsic modules
	against the list of intrinsic symbols.
	* iso-fortran-env.def: New file.
	* gfortran.h (gfc_numeric_storage_size,
	gfc_character_storage_size): Add prototypes.

	* gfortran.dg/use_3.f90: Remove error message.
	* gfortran.dg/iso_fortran_env_1.f90: New test.
	* gfortran.dg/iso_fortran_env_2.f90: New test.
	* gfortran.dg/iso_fortran_env_3.f90: New test.
	* gfortran.dg/iso_fortran_env_4.f90: New test.

From-SVN: r118998
2006-11-19 21:18:26 +00:00
Brooks Moses
e25a0da328 data.c: Remove trailing periods from error messages.
* data.c: Remove trailing periods from error messages.
* decl.c: Likewise.
* expr.c: Likewise.
* io.c: Likewise.
* match.c: Likewise.
* module.c: Likewise.
* options.c: Likewise.
* resolve.c: Likewise.
* symbol.c: Likewise.
* trans-io.c: Likewise.

From-SVN: r118880
2006-11-15 19:05:28 -08:00
Tobias Burnus
a6b03a63d6 re PR fortran/29454 (Slightly wrong error message for IF statement)
2006-11-10  Tobias Burnus  <burnus@net-b.de>

       PR fortran/29454
       * resolve.c (gfc_resolve_blocks): Fix error message.

From-SVN: r118661
2006-11-10 19:15:39 +01:00
Paul Thomas
7114edca02 re PR fortran/29699 (ICE in trans-decl.c)
2006-11-09 Paul Thomas <pault@gcc.gnu.org>

	PR fortran/29699
	* trans-array.c (structure_alloc_comps): Detect pointers to
	arrays and use indirect reference to declaration.
	* resolve.c (resolve_fl_variable): Tidy up condition.
	(resolve_symbol): The same and only add initialization code if
	the symbol is referenced.
	* trans-decl.c (gfc_trans_deferred_vars): Call gfc_trans_
	deferred_array before gfc_trans_auto_array_allocation.

	PR fortran/21730
	* symbol.c (check_done): Remove.
	(gfc_add_attribute): Remove reference to check_done and remove
	the argument attr_intent.
	(gfc_add_allocatable, gfc_add_dimension, gfc_add_external,
	gfc_add_intrinsic, gfc_add_optional, gfc_add_pointer,
	gfc_add_cray_pointer, gfc_add_cray_pointee, gfc_add_result,
	gfc_add_target, gfc_add_in_common, gfc_add_elemental,
	gfc_add_pure, gfc_add_recursive, gfc_add_procedure,
	gfc_add_type): Remove references to check_done.
	* decl.c (attr_decl1): Eliminate third argument in call to
	gfc_add_attribute.
	* gfortran.h : Change prototype for gfc_add_attribute.



2006-11-09 Paul Thomas <pault@gcc.gnu.org>

	PR fortran/29699
	* gfortran.dg/alloc_comp_auto_array_1.f90: New test.

	PR fortran/21730
	* gfortran.dg/change_symbol_attributes_1.f90: New test.

From-SVN: r118624
2006-11-09 18:42:28 +00:00
Tobias Burnus
775e6c3a7b re PR fortran/29601 (VOLATILE attribute and statement)
fortran/
2006-11-06  Tobias Burnus  <burnus@net-b.de>

    PR fortran/29601
    * symbol.c (check_conflict, gfc_add_volatile): Add volatile support.
    * decl.c (match_attr_spec, gfc_match_volatile): Add volatile support.
    * gfortran.h (symbol_attribute): Add volatile_ to struct.
    * resolve.c (was_declared): Add volatile support.
    * trans-decl.c (gfc_finish_var_decl): Add volatile support.
    * match.h: Declare gfc_match_volatile.
    * parse.c (decode_statement): Recognize volatile.
    * modules.c (ab_attribute, attr_bits, mio_symbol_attribute):
      Add volatile support.
    * dump-parse-tree.c (gfc_show_attr): Add volatile support.


testsuite/
2006-11-06  Tobias Burnus  <burnus@net-b.de>

    PR fortran/29601
    * gfortran.dg/volatile.f90: Add.
    * gfortran.dg/volatile2.f90: Add.
    * gfortran.dg/volatile3.f90: Add.
    * gfortran.dg/volatile4.f90: Add.
    * gfortran.dg/volatile5.f90: Add.
    * gfortran.dg/volatile6.f90: Add.
    * gfortran.dg/volatile7.f90: Add.

From-SVN: r118545
2006-11-07 14:27:53 +01:00
Tobias Burnus
aa4183d8a5 decl.c (match_attr_spec, [...]): Unify gfc_notify_std message for GFC_STD_F2003.
fortran/
2006-11-06  Tobias Burnus  <burnus@net-b.de>

       * decl.c (match_attr_spec, gfc_match_enum): Unify gfc_notify_std
         message for GFC_STD_F2003.
       * array.c (gfc_match_array_constructor): Unify gfc_notify_std
         message for GFC_STD_F2003.
       * io.c (check_io_constraints): Unify gfc_notify_std message for
         GFC_STD_F2003.
       * resolve.c (resolve_actual_arglist): Unify gfc_notify_std message
         for GFC_STD_F2003.

testsuite/
2006-11-06  Tobias Burnus  <burnus@net-b.de>

       * gfortran.dg/io_constraints_2.f90: Adjust pattern
         for matching error messages.
       * gfortran.dg/specifics_3.f90: Adjust pattern
         for matching error messages.

From-SVN: r118542
2006-11-07 10:11:08 +01:00