Commit Graph

222 Commits

Author SHA1 Message Date
Daniel Franke
5cca320dca re PR fortran/31818 (Wrongly accepts namelists with assumed-shape arrays)
gcc/fortran:
2007-07-28  Daniel Franke  <franke.daniel@gmail.com>

	PR fortran/31818
	PR fortran/32876
	PR fortran/32905
	* gfortran.h (symbol_attribute): Added bits for pointer_comp, private_comp.
	* parse.c (parse_derived): Set pointer_comp/private_comp bits if the derived
	type ultimately contains pointer components or private components.
	* module.c (ab_attribute): New values AB_POINTER_COMP, AB_PRIVATE_COMP.
	(attr_bits): Added names for new ab_attributes.
	(mio_symbol_attribute): Save/restore new attribute bits in modules.
	* match.c (gfc_match_namelist): Removed check for namelist objects of assumed
	shape.
	* resolve.c (resolve_fl_namelist): Added check for pointer or private
	components in nested types. Added check for namelist objects of assumed
	shape.

gcc/testsuite:
2007-07-28  Daniel Franke  <franke.daniel@gmail.com>

	* gfortran.dg/namelist_5.f90: Adjusted error message.
	* gfortran.dg/assumed_shape_nml.f90: Renamed to ...
	* gfortran.dg/namelist_31.f90: ... this. Removed dg-warning directive.
	* gfortran.dg/assumed_size_nml.f90: Renamed to ...
	* gfortran.dg/namelist_32.f90: ... this.

	PR fortran/32876
	* gfortran.dg/namelist_33.f90: New test.

	PR fortran/32905
	* gfortran.dg/namelist_34.f90: New test.

	PR fortran/31818
	* gfortran.dg/namelist_35.f90: New test.

From-SVN: r127014
2007-07-28 04:51:06 -04:00
Steven G. Kargl
b8475dd604 re PR fortran/32899 (Broken diagnostic for invalid use of .eq. for logicals)
2007-07-26  Steven G. Kargl  <kargl@gcc.gnu.org>

	PR fortran/32899
	* resolve.c (resolve_operator): Add INTRINSIC_EQ_OS comparison.

2007-07-26  Steven G. Kargl  <kargl@gcc.gnu.org>

	PR fortran/32899
	* gfortran.dg/logical_comp.f90: Update dg-error strings.

From-SVN: r126985
2007-07-27 16:59:32 +00:00
Paul Thomas
08113c7398 re PR fortran/31205 (aliased operator assignment produces wrong result)
2007-07-24 Paul Thomas <pault@gcc.gnu.org>

	PR fortran/31205
	PR fortran/32842
	* trans-expr.c (gfc_conv_function_call): Remove the default
	initialization of intent(out) derived types.
	* symbol.c (gfc_lval_expr_from_sym): New function.
	* matchexp.c (gfc_get_parentheses): Return argument, if it is
	character and posseses a ref.
	* gfortran.h : Add prototype for gfc_lval_expr_from_sym.
	* resolve.c (has_default_initializer): Move higher up in file.
	(resolve_code): On detecting an interface assignment, check
	if the rhs and the lhs are the same symbol.  If this is so,
	enclose the rhs in parenetheses to generate a temporary and
	prevent any possible aliasing.
	(apply_default_init): Remove code making the lval and call
	gfc_lval_expr_from_sym instead.
	(resolve_operator): Give a parentheses expression a type-
	spec if it has no type.
	* trans-decl.c (gfc_trans_deferred_vars): Apply the a default
	initializer, if any, to an intent(out) derived type, using
	gfc_lval_expr_from_sym and gfc_trans_assignment.  Check if
	the dummy is present.


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

	PR fortran/31205
	* gfortran.dg/alloc_comp_basics_1.f90 : Restore number of
	"deallocates" to 24, since patch has code rid of much spurious
	code.
	* gfortran.dg/interface_assignment_1.f90 : New test.

	PR fortran/32842
	* gfortran.dg/interface_assignment_2.f90 : New test.

From-SVN: r126885
2007-07-24 19:15:27 +00:00
Christopher D. Rickett
d8fa96e089 re PR fortran/32797 ([ISO C Binding] Internal Error: gfc_basic_typename(): Undefined type)
2007-07-23  Christopher D. Rickett  <crickett@lanl.gov>

        PR fortran/32797
        PR fortran/32800
        * decl.c (verify_bind_c_sym): Use the result symbol for functions
        with a result clause.  Warn if implicitly typed.  Verify the type
        and rank of the SHAPE argument, if given.
        * resolve.c (gfc_iso_c_sub_interface): Use gfc_procedure_use to
        check the actual args against the formal, sorting them if
        necessary.
        * symbol.c (gen_shape_param): Initialize type of SHAPE param to
        BT_VOID.

2007-07-23  Christopher D. Rickett  <crickett@lanl.gov>

        PR fortran/32797
        PR fortran/32800
        * gfortran.dg/bind_c_usage_8.f03: New test case.
        * gfortran.dg/c_f_pointer_tests_2.f03: Ditto.
        * gfortran.dg/c_ptr_tests_5.f03: Updated expected error message.

From-SVN: r126856
2007-07-23 19:47:16 +02:00
Christopher D. Rickett
089db47df6 re PR fortran/32600 ([ISO Bind C] C_F_POINTER w/o SHAPE should not be a library function)
2007-07-23  Christopher D. Rickett  <crickett@lanl.gov>
	    Tobias Burnus  <burnus@net-b.de>

	PR fortran/32600
	* trans-expr.c (gfc_conv_function_call): Handle c_funloc.
	* trans-types.c: Add pfunc_type_node.
	(gfc_init_types,gfc_typenode_for_spec): Use it.
	* resolve.c (gfc_iso_c_func_interface): Fix whitespace and
	improve error message.

2007-07-23  Christopher D. Rickett  <crickett@lanl.gov>

	PR fortran/32600
	* intrinsics/iso_c_binding.c (c_funloc): Remove.
	* intrinsics/iso_c_binding.h: Remove c_funloc.
	* gfortran.map: Ditto.

2007-07-23  Christopher D. Rickett  <crickett@lanl.gov>

	PR fortran/32600
	* gfortran.dg/c_funloc_tests_5.f03: New.
	* gfortran.dg/c_funloc_tests_5.f04: New.
	* gfortran.dg/c_funloc_tests_4_driver.c: New.


Co-Authored-By: Tobias Burnus <burnus@net-b.de>

From-SVN: r126835
2007-07-23 08:03:33 +02:00
Christopher D. Rickett
6ad5cf725f re PR fortran/32627 ([ISO Bind C] Accept c_f_pointer for TYPE)
2007-07-21  Christopher D. Rickett  <crickett@lanl.gov>

        PR fortran/32627
        * resolve.c (set_name_and_label): Set kind number for character
        version of c_f_pointer.
        (gfc_iso_c_sub_interface): Set the kind of the SHAPE formal arg to
        that of the actual SHAPE arg.
        * symbol.c (gen_shape_param): Initialize kind for SHAPE arg.

2007-07-21  Christopher D. Rickett  <crickett@lanl.gov>

        PR fortran/32627
        * libgfortran/intrinsics/iso_c_generated_procs.c: Add c_f_pointer
        for character/string arguments.
        * libgfortran/intrinsic/iso_c_binding.c (c_f_pointer_u0): Allow
        the optional SHAPE arg to be any valid integer kind.
        * libgfortran/gfortran.map: Add c_f_pointer_s0.
        * libgfortran/mk-kinds-h.sh: Save smallest integer kind as default
        character kind.
        * libgfortran/intrinsics/iso_c_generated_procs.c: Add versions of
        c_f_pointer for complex and logical types.
        * libgfortran/gfortran.map: Add c_f_pointer versions for logical
        and complex types.

2007-07-21  Christopher D. Rickett  <crickett@lanl.gov>

        PR fortran/32627
        * gfortran.dg/pr32627_driver.c: Driver for pr32627.
        * gfortran.dg/pr32627.f03: New test case.
        * gfortran.dg/c_f_pointer_logical.f03: New test case.
        * gfortran.dg/c_f_pointer_logical_driver.c: Driver for
        c_f_pointer_logical.
        * gfortran.dg/c_f_pointer_complex_driver.c: Driver for
        c_f_pointer_complex.
        * gfortran.dg/c_f_pointer_complex.f03: New test case.
        * gfortran.dg/c_f_pointer_shape_tests_2_driver.c: Driver for
        c_f_pointer_shape_tests_2.
        * gfortran.dg/c_f_pointer_shape_tests_2.f03: New test case.

From-SVN: r126817
2007-07-21 23:45:44 +00:00
Christopher D. Rickett
21a7722788 re PR fortran/32801 (USE of ISO_C_BINDING, ONLY: C_LOC causes compiler seg fault)
2007-07-21  Christopher D. Rickett  <crickett@lanl.gov>

        PR fortran/32801
        * symbol.c (generate_isocbinding_symbol): Remove unnecessary
        conditional.

        PR fortran/32804
        * resolve.c (gfc_iso_c_func_interface): Reject assumed-shape and
        deferred-shape arrays as args to C_LOC.  Fix bug in testing
        character args to C_LOC.

2007-07-21  Christopher D. Rickett  <crickett@lanl.gov>

        PR fortran/32804
        * gfortran.dg/c_loc_tests_9.f03: New test case.
        * gfortran.dg/c_loc_tests_10.f03: Ditto.

From-SVN: r126812
2007-07-21 20:31:17 +00:00
Janus Weil
4665abc46c re PR fortran/32535 (namelist with private items contained in sub-sub-procedure of a module rejected)
2007-07-17  Janus Weil  <jaydub66@gmail.com>

	PR fortran/32535
	* resolve.c (resolve_fl_namelist): Check for namelist private
	components in contained subprograms.

2007-07-17  Janus Weil  <jaydub66@gmail.com>

	PR fortran/32535
	* gfortran.dg/pr32535.f90: New test.

From-SVN: r126706
2007-07-17 23:33:34 +02:00
Daniel Franke
f8faa85e29 re PR fortran/31639 ([4.1/4.2/4.3] ICE in gfc_conv_constant, at fortran/trans-const.c:348 with len)
gcc/fortran:
2007-07-12  Daniel Franke  <franke.daniel@gmail.com>

	PR fortran/31639
	* decl.c (gfc_match_suffix): Removed surplus general error that hides
	a more specific message.
	* resolve.c (resolve_fl_variable): Reject illegal initializiers only
	if not already done.
	(resolve_fl_procedure): Added check for initializers of functions.

gcc/testsuite:
2007-07-12  Daniel Franke  <franke.daniel@gmail.com>

	PR fortran/31639
	* gfortran.dg/func_decl_4.f90: New test.

From-SVN: r126605
2007-07-12 18:15:11 -04:00
Christopher D. Rickett
aa5e22f000 re PR fortran/32599 ([ISO C Binding] Accepts character with len /= 1)
2007-07-12  Christopher D. Rickett  <crickett@lanl.gov>

	PR fortran/32599
	* decl.c (verify_c_interop_param): Require character string dummy
	args to BIND(C) procedures to have length 1.
	* resolve.c (resolve_fl_procedure): Modify parameter checking for
	BIND(C) procedures.

	PR fortran/32601
	* resolve.c (gfc_iso_c_func_interface): Verify that a valid
	expression is given as an argument to C_LOC and C_ASSOCIATED.
	* trans-io.c (transfer_expr): Add argument for code block.  Add
	standards check to determine if an error message should be
	reported for printing C_PTR or C_FUNPTR.
	(transfer_array_component): Update arguments to transfer_expr.
	(gfc_trans_transfer): Ditto.

	* symbol.c (gen_cptr_param): Fix whitespace.


2007-07-12  Christopher D. Rickett  <crickett@lanl.gov>

	PR fortran/32599
	* gfortran.dg/32599.f03: New test case.

	PR fortran/32601
	* gfortran.dg/32601.f03: New test case.
	* gfortran.dg/32601_1.f03: Ditto.
	* gfortran.dg/c_ptr_tests_9.f03: Updated dg-options.
	* gfortran.dg/c_ptr_tests_10.f03: Ditto.

From-SVN: r126598
2007-07-12 21:52:03 +02:00
Paul Thomas
e7c8ff569c re PR fortran/32157 (intrinsic function name conflicts with subroutine if present in the same file)
2007-07-10  Paul Thomas  <pault@gcc.gnu.org>

	PR fortran/32157
	* resolve.c (is_external_proc): New function.  Adds test that
	the symbol is not an intrinsic procedure.
	* (resolve_function, resolve_call): Replace logical statements
	with call to is_external_proc.

	PR fortran/32689
	* simplify.c (gfc_simplify_transfer): If mold has rank, the
	result is an array.

	PR fortran/32634
	* module.c (write_generic): Write the local name of the
	interface. 


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

	PR fortran/32157
	* gfortran.dg/overload_2.f90: New test.

	PR fortran/32689
	* gfortran.dg/transfer_simplify_5.f90

	PR fortran/32634
	* gfortran.dg/interface_15.f90: New test.

From-SVN: r126509
2007-07-10 05:11:00 +00:00
Daniel Franke
3bed9dd023 re PR fortran/17711 (Wrong operator name in error message)
gcc/fortran:
2007-07-08  Daniel Franke  <franke.daniel@gmail.com>
	    Tobias Schlüter <tobias.schlueter@physik.uni-muenchen.de>

	PR fortran/17711
	* gfortran.h (gfc_intrinsic_op): Added INTRINSIC_EQ_OS,
	INTRINSIC_NE_OS, INTRINSIC_GT_OS, INTRINSIC_GE_OS, 
	INTRINSIC_LT_OS and INTRINSIC_LE_OS.
	* arith.c (eval_intrinsic, eval_type_intrinsic0): Likewise.
	* arith.h (gfc_eq, gfc_ne, gfc_gt, gfc_ge, gfc_lt, gfc_le):
	Added gfc_intrinsic_op as third argument type.
	* dump-parse-tree.c (gfc_show_expr): Account for new enum values.
	* expr.c (simplify_intrinsic_op, check_intrinsic_op): Likewise.
	* interface.c (check_operator_interface): Likewise.
	(gfc_check_interfaces): Added cross-checks for FORTRAN 77 and 
	Fortran 90 style operators using new enum values.
	(gfc_extend_expr): Likewise.
	(gfc_add_interface): Likewise.
	* match.c (intrinsic_operators): Distinguish FORTRAN 77 style
	operators from Fortran 90 style operators using new enum values.
	* matchexp.c (match_level_4): Account for new enum values.
	* module.c (mio_expr): Likewise.
	* resolve.c (resolve_operator): Deal with new enum values, fix
	inconsistent error messages.
	* trans-expr.c (gfc_conv_expr_op): Account for new enum values.

gcc/testsuite:
2007-07-08  Daniel Franke  <franke.daniel@gmail.com>

	PR fortran/17711
	* gfortran.dg/operator_4.f90: New test.
	* gfortran.dg/operator_5.f90: New test.
	* gfortran.dg/logical_comp.f90: Adjusted error messages.
	* gfortran.dg/module_md5_1.f90: Adjusted MD5 sum.


Co-Authored-By: Tobias Schlüter <tobias.schlueter@physik.uni-muenchen.de>

From-SVN: r126468
2007-07-08 17:08:52 -04:00
Daniel Franke
83b2e4e821 re PR fortran/25094 (Procedure with public generic identifier allowed to have argument of private type)
gcc/fortran:
2007-07-08  Daniel Franke  <franke.daniel@gmail.com>

	PR fortran/25094
	* resolve.c (resolve_fl_procedure): Added check for PRIVATE types
	in PUBLIC interfaces.

gcc/testsuite:
2007-07-08  Daniel Franke  <franke.daniel@gmail.com>

        PR fortran/25094
	* gfortran.dg/interface_15.f90: New test.

From-SVN: r126466
2007-07-08 16:38:58 -04:00
Kazu Hirata
86bf520d74 decl.c, [...]: Fix comment typos.
* decl.c, gfortran.h, interface.c, module.c, resolve.c,
	trans-array.c, trans-decl.c: Fix comment typos.  Follow
	spelling conventions.
	* intrinsic.texi: Fix typos.  Follow spelling conventions.

From-SVN: r126440
2007-07-07 13:15:40 +00:00
Tobias Burnus
5349080dd3 re PR fortran/32359 (incorrect error: Threadprivate isn't SAVEd (implicit save attribute undefined))
gcc/fortran/
2007-07-05  Daniel Franke  <franke.daniel@gmail.com>
	    Tobias Burnus  <burnus@net-b.de>

	PR fortran/32359
	* gfortran.h (symbol_attribute): Change save attribute into an enum.
	* decl.c (add_init_expr_to_sym): Set it to SAVE_IMPLICIT.
	* symbol.c (gfc_add_save): Check for SAVE_EXPLICIT.
	* resolve.c (resolve_fl_variable): Check for SAVE_EXPLICIT.
	(resolve_symbol): Allow OMP threadprivate with
	initialization SAVEd and save_all variable.
	* trans-decl.c (gfc_finish_var_decl): Remove obsolete sym->value check.


libgomp/
2007-07-05  Tobias Burnus  <burnus@net-b.de>

	PR fortran/32359
	* testsuite/libgomp.fortran/pr32359.f90: New.

gcc/testsuite/
2007-07-05  Tobias Burnus  <burnus@net-b.de>

	PR fortran/32359
	* gfortran.dg/module_md5_1.f90: Update MD5 number.

From-SVN: r126366
2007-07-05 14:51:51 +02:00
Jerry DeLisle
a24668a34f re PR fortran/32432 (SEGV/endless loop after: "ERROR: ... already is initialized")
2007-07-03  Jerry DeLisle  <jvdelisle@gcc.gnu.org>

	PR fortran/32432
	* gfortran.h: Change type of gfc_assign_data_value from void to try.
	* data.c (gfc_assign_data_value): Return FAILURE if error found.
	* resolve.c (check_data_variable): If gfc_assign_data_value returns
	failure, break out of loop and return failure.

From-SVN: r126282
2007-07-03 22:14:55 +00:00
Tobias Burnus
ad22b1ff95 re PR fortran/25062 (same name for parameter and common block)
2007-07-03  Tobias Burnus  <burnus@net-b.de>

	PR fortran/25062
	* resolve.c (resolve_common_blocks): New check function.
	(resolve_types): Use it.

2007-07-03  Tobias Burnus  <burnus@net-b.de>

	PR fortran/25062
	* common_7.f90: New.
	* common_8.f90: New.
	* common_9.f90: New.

From-SVN: r126279
2007-07-03 23:41:34 +02:00
Tobias Burnus
bb9e683e79 re PR fortran/20888 (dereferencing NULL still accepted)
2007-07-03  Tobias Burnus  <burnus@net-b.de>

	PR fortran/20888
	* resolve.c (resolve_operator): Check for NULL as operand.

2007-07-03  Tobias Burnus  <burnus@net-b.de>

	PR fortran/20888
	* gfortran.dg/null_2.f90: New.

From-SVN: r126247
2007-07-03 10:02:08 +02:00
Christopher D. Rickett
a8b3b0b633 [multiple changes]
2007-07-01  Christopher D. Rickett  <crickett@lanl.gov>

	* interface.c (gfc_compare_derived_types): Special case for comparing
	derived types across namespaces.
	(gfc_compare_types): Deal with BT_VOID.
	(compare_parameter): Use BT_VOID to accept ISO C Binding pointers.
	* trans-expr.c (gfc_conv_function_call): Remove setting parm_kind
	to SCALAR
	(gfc_conv_initializer): Deal with ISO C Binding NULL_PTR and 
	NULL_FUNPTR.
	(gfc_conv_expr): Convert expressions for ISO C Binding derived types.
	* symbol.c (gfc_set_default_type): BIND(C) variables should not be
	implicitly declared.
	(check_conflict): Add BIND(C) and check for conflicts.
	(gfc_add_explicit_interface): Whitespace.	
	(gfc_add_is_bind_c): New function.  
	(gfc_copy_attr): Use it.
	(gfc_new_symbol): Initialize ISO C Binding objects.
	(get_iso_c_binding_dt):  New function.
	(verify_bind_c_derived_type): Ditto.
	(gen_special_c_interop_ptr): Ditto.
	(add_formal_arg): Ditto.
	(gen_cptr_param): Ditto.
	(gen_fptr_param): Ditto.
	(gen_shape_param): Ditto.
	(add_proc_interface): Ditto.
	(build_formal_args): Ditto.
	(generate_isocbinding_symbol):  Ditto.
	(get_iso_c_sym):  Ditto.
	* decl.c (num_idents_on_line, has_name_equals): New variables.
	(verify_c_interop_param): New function.
	(build_sym): Finish binding labels and deal with COMMON blocks.
	(add_init_expr_to_sym): Check if the initialized expression is
	an iso_c_binding named constants
	(variable_decl): Set ISO C Binding type_spec components.
	(gfc_match_kind_spec): Check match for C interoperable kind.
	(match_char_spec): Fix comment. Chnage gfc_match_small_int
	to gfc_match_small_int_expr.  Check for C interoperable kind.
	(match_type_spec): Clear the current binding label.
	(match_attr_spec): Add DECL_IS_BIND_C.  If BIND(C) is found, use it
	to set attributes.
	(set_binding_label): New function.
	(set_com_block_bind_c): Ditto.
	(verify_c_interop): Ditto.
	(verify_com_block_vars_c_interop): Ditto.
	(verify_bind_c_sym): Ditto.
	(set_verify_bind_c_sym): Ditto.
	(set_verify_bind_c_com_block): Ditto.
	(get_bind_c_idents): Ditto.
	(gfc_match_bind_c_stmt): Ditto.
	(gfc_match_data_decl): Use num_idents_on_line.
	(match_result): Deal with right paren in BIND(C).
	(gfc_match_suffix): New function.
	(gfc_match_function_decl): Use it.  Code is re-arranged to deal with
	ISO C Binding result clauses.
	(gfc_match_subroutine):  Deal with BIND(C).
 	(gfc_match_bind_c): New function.
	(gfc_get_type_attr_spec): New function.  Code is re-arranged in and
	taken from gfc_match_derived_decl.
	(gfc_match_derived_decl): Add check for BIND(C).
	* trans-common.c: Forward declare gfc_get_common.
	(gfc_sym_mangled_common_id): Change arg from 'const char *name' to
	'gfc_common_head *com'.  Check for ISO C Binding of the common block.
	(build_common_decl): 'com->name' to 'com in SET_DECL_ASSEMBLER_NAME.
	* gfortran.h: Add GFC_MAX_BINDING_LABEL_LEN
	(bt): Add BT_VOID
	(sym_flavor): Add FL_VOID.
 	(iso_fortran_env_symbol, iso_c_binding_symbol, intmod_id): New enum
	(CInteropKind_t): New struct.
	(c_interop_kinds_table): Use it.  Declare an array of structs.
	(symbol_attribute): Add is_bind_c, is_c_interop, and is_iso_c
	bitfields.
	(gfc_typespec): Add is_c_interop; is_iso_c, and f90_type members.
	(gfc_symbol): Add from_intmod, intmod_sym_id, binding_label, and
	common_block members.
	(gfc_common_head): Add binding_label and is_bind_c members.
	(gfc_gsymbol): Add sym_name, mod_name, and binding_label members.
	Add prototypes for get_c_kind, gfc_validate_c_kind, 
	gfc_check_any_c_kind, gfc_add_is_bind_c, gfc_add_value,
	verify_c_interop, verify_c_interop_param, verify_bind_c_sym,
	verify_bind_c_derived_type, verify_com_block_vars_c_interop,
	generate_isocbinding_symbol, get_iso_c_sym, gfc_iso_c_sub_interface
	* iso-c-binding.def: New file. This file contains the definitions
	of the types provided by the Fortran 2003 ISO_C_BINDING intrinsic
	module.
	* trans-const.c (gfc_conv_constant_to_tree): Deal with C_NULL_PTR
	 or C_NULL_FUNPTR expressions.
	* expr.c (gfc_copy_expr): Add BT_VOID case.  For BT_CHARACTER, the
	ISO C Binding requires a minimum string length of 1 for '\0'.  
	* module.c (intmod_sym): New struct.
	(pointer_info): Add binding_label member.
	(write_atom): Set len to 0 for NULL pointers. Check for NULL p and *p.
	(ab_attribute): Add AB_IS_BIND_C, AB_IS_C_INTEROP and AB_IS_ISO_C.
	(attr_bits): Add "IS_BIND_C", "IS_C_INTEROP", and "IS_ISO_C".
	(mio_symbol_attribute): Deal with ISO C Binding attributes.
	(bt_types): Add "VOID".
	(mio_typespec): Deal with ISO C Binding components.
	(mio_namespace_ref): Add intmod variable. 
	(mio_symbol): Check for symbols from an intrinsic module.
	(load_commons): Check for BIND(C) common block.
	(read_module): Read binding_label and use it.
	(write_common): Add label.  Write BIND(C) info.
	(write_blank_common): Blank commons are not BIND(C).  Explicitly
	set is_bind_c=0.
	(write_symbol): Deal with binding_label.
	(sort_iso_c_rename_list): New function.
	(import_iso_c_binding_module): Ditto.
	(create_int_parameter): Add to args.
	(use_iso_fortran_env_module): Adjust to deal with iso_c_binding
	intrinsic module.
	* trans-types.c (c_interop_kinds_table): new array of structs. 
	(gfc_validate_c_kind): New function.
	(gfc_check_any_c_kind): Ditto.
	(get_real_kind_from_node): Ditto.
	(get_int_kind_from_node): Ditto.
	(get_int_kind_from_width): Ditto.
	(get_int_kind_from_minimal_width): Ditto.
	(init_c_interop_kinds): Ditto.
	(gfc_init_kinds): call init_c_interop_kinds.
	(gfc_typenode_for_spec): Adjust for BT_VOID and ISO C Binding pointers.
	Adjust handling of BT_DERIVED.
	(gfc_sym_type): Whitespace.
	(gfc_get_derived_type):  Account for iso_c_binding derived types
	* resolve.c (is_scalar_expr_ptr): New function.
	(gfc_iso_c_func_interface): Ditto.
	(resolve_function): Use gfc_iso_c_func_interface. 
	(set_name_and_label): New function.
	(gfc_iso_c_sub_interface): Ditto.
	(resolve_specific_s0): Use gfc_iso_c_sub_interface.
	(resolve_bind_c_comms): New function.
	(resolve_bind_c_derived_types): Ditto.
	(gfc_verify_binding_labels): Ditto.
	(resolve_fl_procedure): Check for ISO C interoperability.
	(resolve_symbol): Check C interoperability.
	(resolve_types): Walk the namespace.  Check COMMON blocks.
	* trans-decl.c (gfc_sym_mangled_identifier):  Prevent the mangling
	of identifiers that have an assigned binding label.
	(gfc_sym_mangled_function_id): Use the binding label rather than
	the mangled name.
	(gfc_finish_var_decl): Put variables that are BIND(C) into a common
	segment of the object file, because this is what C would do.
	(gfc_create_module_variable): Conver to proper types
	(set_tree_decl_type_code): New function.
	(generate_local_decl): Check dummy variables and derived types for
	ISO C Binding attributes.
	* match.c (gfc_match_small_int_expr): New function.
	(gfc_match_name_C): Ditto.
	(match_common_name): Deal with ISO C Binding in COMMON blocks
	* trans-io.c (transfer_expr):  Deal with C_NULL_PTR or C_NULL_FUNPTR
	expressions
	* match.h: Add prototypes for gfc_match_small_int_expr,
	gfc_match_name_C, match_common_name, set_com_block_bind_c,
	set_binding_label, set_verify_bind_c_sym,
	set_verify_bind_c_com_block, get_bind_c_idents,
	gfc_match_bind_c_stmt, gfc_match_suffix, gfc_match_bind_c,
	gfc_get_type_attr_spec
	* parse.c (decode_statement): Use gfc_match_bind_c_stmt
	(parse_derived): Init *derived_sym = NULL, and gfc_current_block
	later for valiadation.
	* primary.c (got_delim): Set ISO C Binding components of ts.
	(match_logical_constant): Ditto.
	(match_complex_constant): Ditto.
	(match_complex_constant): Ditto.
	(gfc_match_rvalue): Check for existence of at least one arg for
	C_LOC, C_FUNLOC, and C_ASSOCIATED.
	* misc.c (gfc_clear_ts): Clear ISO C Bindoing components in ts.
	(get_c_kind): New function.

2007-07-01  Christopher D. Rickett  <crickett@lanl.gov>

	* Makefile.in: Add support for iso_c_generated_procs.c and
	iso_c_binding.c.
	* Makefile.am: Ditto.
	* intrinsics/iso_c_generated_procs.c: New file containing helper
	functions.
	* intrinsics/iso_c_binding.c: Ditto.
	* intrinsics/iso_c_binding.h: New file
	* gfortran.map: Include the __iso_c_binding_c_* functions.
	* libgfortran.h: define GFC_NUM_RANK_BITS.

2007-06-23  Christopher D. Rickett  <crickett@lanl.gov>

	* bind_c_array_params.f03: New files for Fortran 2003 ISO C Binding.
	* bind_c_coms.f90: Ditto.
	* bind_c_coms_driver.c: Ditto.
	* bind_c_dts.f90: Ditto.
	* bind_c_dts_2.f03: Ditto.
	* bind_c_dts_2_driver.c: Ditto.
	* bind_c_dts_3.f03: Ditto.
	* bind_c_dts_4.f03: Ditto.
	* bind_c_dts_driver.c: Ditto.
	* bind_c_implicit_vars.f03: Ditto.
	* bind_c_procs.f03: Ditto.
	* bind_c_usage_2.f03: Ditto.
	* bind_c_usage_3.f03: Ditto.
	* bind_c_usage_5.f03: Ditto.
	* bind_c_usage_6.f03: Ditto.
	* bind_c_usage_7.f03: Ditto.
	* bind_c_vars.f90: Ditto.
	* bind_c_vars_driver.c: Ditto.
	* binding_c_table_15_1.f03: Ditto.
	* binding_label_tests.f03: Ditto.
	* binding_label_tests_10.f03: Ditto.
	* binding_label_tests_10_main.f03: Ditto.
	* binding_label_tests_11.f03: Ditto.
	* binding_label_tests_11_main.f03: Ditto.
	* binding_label_tests_12.f03: Ditto.
	* binding_label_tests_13.f03: Ditto.
	* binding_label_tests_13_main.f03: Ditto.
	* binding_label_tests_14.f03: Ditto.
	* binding_label_tests_2.f03: Ditto.
	* binding_label_tests_3.f03: Ditto.
	* binding_label_tests_4.f03: Ditto.
	* binding_label_tests_5.f03: Ditto.
	* binding_label_tests_6.f03: Ditto.
	* binding_label_tests_7.f03: Ditto.
	* binding_label_tests_8.f03: Ditto.
	* binding_label_tests_9.f03: Ditto.
	* c_assoc.f90: Ditto.
	* c_assoc_2.f03: Ditto.
	* c_f_pointer_shape_test.f90: Ditto.
	* c_f_pointer_tests.f90: Ditto.
	* c_f_tests_driver.c: Ditto.
	* c_funloc_tests.f03: Ditto.
	* c_funloc_tests_2.f03: Ditto.
	* c_funloc_tests_3.f03: Ditto.
	* c_funloc_tests_3_funcs.c: Ditto.
	* c_kind_params.f90: Ditto.
	* c_kind_tests_2.f03: Ditto.
	* c_kinds.c: Ditto.
	* c_loc_driver.c: Ditto.
	* c_loc_test.f90: Ditto.
	* c_loc_tests_2.f03: Ditto.
	* c_loc_tests_2_funcs.c: Ditto.
	* c_loc_tests_3.f03: Ditto.
	* c_loc_tests_4.f03: Ditto.
	* c_loc_tests_5.f03: Ditto.
	* c_loc_tests_6.f03: Ditto.
	* c_loc_tests_7.f03: Ditto.
	* c_loc_tests_8.f03: Ditto.
	* c_ptr_tests.f03: Ditto.
	* c_ptr_tests_10.f03: Ditto.
	* c_ptr_tests_5.f03: Ditto.
	* c_ptr_tests_7.f03: Ditto.
	* c_ptr_tests_7_driver.c: Ditto.
	* c_ptr_tests_8.f03: Ditto.
	* c_ptr_tests_8_funcs.c: Ditto.
	* c_ptr_tests_9.f03: Ditto.
	* c_ptr_tests_driver.c: Ditto.
	* c_size_t_driver.c: Ditto.
	* c_size_t_test.f03: Ditto.
	* com_block_driver.f90: Ditto.
	* global_vars_c_init.f90: Ditto.
	* global_vars_c_init_driver.c: Ditto.
	* global_vars_f90_init.f90: Ditto.
	* global_vars_f90_init_driver.c: Ditto.
	* interop_params.f03: Ditto.
	* iso_c_binding_only.f03: Ditto.
	* iso_c_binding_rename_1.f03: Ditto.
	* iso_c_binding_rename_1_driver.c: Ditto.
	* iso_c_binding_rename_2.f03: Ditto.
	* iso_c_binding_rename_2_driver.c: Ditto.
	* kind_tests_2.f03: Ditto.
	* kind_tests_3.f03: Ditto.
	* module_md5_1.f90: Ditto.
	* only_clause_main.c: Ditto.
	* print_c_kinds.f90: Ditto.
	* test_bind_c_parens.f03: Ditto.
	* test_c_assoc.c: Ditto.
	* test_com_block.f90: Ditto.
	* test_common_binding_labels.f03: Ditto.
	* test_common_binding_labels_2.f03: Ditto.
	* test_common_binding_labels_2_main.f03: Ditto.
	* test_common_binding_labels_3.f03: Ditto.
	* test_common_binding_labels_3_main.f03: Ditto.
	* test_only_clause.f90: Ditto.
	* use_iso_c_binding.f90: Ditto.
	* value_5.f90: Ditto.
	* value_test.f90: Ditto.
	* value_tests_f03.f90: Ditto.

From-SVN: r126185
2007-07-02 02:47:21 +00:00
Daniel Franke
eb2c598d55 re PR fortran/20373 (INTRINSIC symbols can be given the wrong type)
gcc/fortran:
2007-06-30  Daniel Franke  <franke.daniel@gmail.com>

	PR fortran/20373
	* intrinsic.c (add_functions): Additional function types.
	(gfc_convert_type_warn): Remove intrinsic-flag from conversion
	functions.
	* resolve.c (resolve_symbol): Added type checks to explicitly defined
	intrinsics.

gcc/testsuite:
2007-06-28  Daniel Franke  <franke.daniel@gmail.com>

	PR fortran/20373
	* gfortran.dg/intrinsic.f90: New test.

From-SVN: r126153
2007-06-30 12:26:55 -04:00
Daniel Franke
622af87fc8 re PR fortran/31580 (Better error message for not-found operator)
gcc/fortran:
2007-06-29  Daniel Franke  <franke.daniel@gmail.com>

        PR fortran/31580
        * resolve.c (resolve_operator): Added check whether a user 
	defined operator is available.

gcc/testsuite:
2007-06-29  Daniel Franke  <franke.daniel@gmail.com>

	PR fortran/31580
	* gfortran.dg/operator_3.f90: New test.

From-SVN: r126117
2007-06-29 15:05:58 -04:00
Paul Thomas
8de10a622a re PR fortran/32464 (ICE: USE in contained subroutine)
2007-06-25  Paul Thomas  <pault@gcc.gnu.org>

	PR fortran/32464
	* resolve.c (check_host_association): Return if the old symbol
	is use associated.  Introduce retval to reduce the number of
	evaluations of the first-order return value.

	PR fortran/31494
	* match.c (gfc_match_call): If a host associated symbol is not
	a subroutine, build a new symtree/symbol in the current name
	space.


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

	PR fortran/32464
	* gfortran.dg/host_assoc_function_2.f90: New test.

	PR fortran/31494
	* gfortran.dg/host_assoc_call_1.f90: New test.

From-SVN: r126000
2007-06-25 18:27:59 +00:00
Jerry DeLisle
79e7840d22 re PR fortran/31162 (missing warning for real do-loops with implicit typed variables)
2007-06-21  Jerry DeLisle  <jvdelisle@gcc.gnu.org>

	PR fortran/31162
	* resolve.c (gfc_resolve_iterator_expr): Add check for REAL using
	gfc_notify_standard. (gfc_resolve_iterator): Remove check.
	(resolve_branch): Change "Obsolete" to "Deleted feature".
	* io.c (resolve_tag): Ditto.
	* match.c (gfc_match_pause, gfc_match_assign, gfc_match_goto): Ditto.

From-SVN: r125938
2007-06-22 01:50:09 +00:00
Paul Thomas
d2088bb6d4 re PR fortran/20863 ([4.2 only] Pointer problems in PURE procedures)
2007-06-19  Paul Thomas  <pault@gcc.gnu.org>

	PR fortran/20863
	PR fortran/20082
	* resolve.c (resolve_code): Use gfc_impure_variable as a
	condition for rejecting derived types with pointers, in pure
	procedures.
	(gfc_impure_variable): Add test for dummy arguments of pure
	procedures; any for functions and INTENT_IN for subroutines.

	PR fortran/32236
	* data.c (gfc_assign_data_value): Change the ICE on an array
	reference initializer not being an array into an error and
	clear init to prevent a repetition of the error.

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

	PR fortran/20863
	PR fortran/20082
	* gfortran.dg/impure_assignment_2.f90 : New test.

	PR fortran/32236
	* gfortran.dg/data_initialized_2.f90 : New test.

	* gfortran.dg/equiv_7.f90 : Test for endianess and call the
	appropriate version of 'dmach'.

From-SVN: r125831
2007-06-18 23:04:28 +00:00
Paul Thomas
9d99ee7be4 re PR fortran/29786 (Initialization of overlapping variables: Not implemented)
2007-06-12  Paul Thomas  <pault@gcc.gnu.org>

	PR fortran/29786
	PR fortran/30875
	* trans-common.c (get_init_field): New function.
	(create_common): Call get_init_field for overlapping
	initializers in equivalence blocks.
	* resolve.c (resolve_equivalence_derived, resolve_equivalence):
	Remove constraints on initializers in equivalence blocks.
	* target-memory.c (expr_to_char, gfc_merge_initializers):
	New functions.
	(encode_derived): Add the bit offset to the byte offset to get
	the total offset to the field.
	* target-memory.h : Add prototype for gfc_merge_initializers.


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

	PR fortran/29786
	* gfortran.dg/equiv_7.f90: New test.
	* gfortran.dg/equiv_constraint_7.f90: Change error message.


	PR fortran/30875
	* gfortran.dg/equiv_constraint_5.f90: Correct code and error.

From-SVN: r125628
2007-06-11 22:39:21 +00:00
Steven G. Kargl
66e4ab3127 decl.c: Miscellaneous whitespace fixes.
* decl.c: Miscellaneous whitespace fixes.
* expr.c: Likewise.
* gfortran.h: Likewise.
* interface.c : Likewise.
* io.c: Likewise.
* match.c: Likewise.
* match.h: Likewise.
* module.c: Likewise.
* parse.c: Likewise.
* resolve.c: Likewise.
* symbol.c: Likewise.
* trans-array.c: Likewise.
* trans-common.c: Likewise.
* trans-decl.c: Likewise.
* trans-intrinsic.c: Likewise.
* trans-io.c: Likewise.
* trans-stmt.c: Likewise.
* trans-types.c: Likewise.

From-SVN: r125533
2007-06-07 11:10:31 -07:00
Daniel Franke
cd5ecab6a7 gfortran.h: Renamed 'enum gfc_generic_isym_id' to 'enum gfc_isym_id'...
2007-05-29  Daniel Franke  <franke.daniel@gmail.com>

        * gfortran.h: Renamed 'enum gfc_generic_isym_id' to 'enum gfc_isym_id',
        added missing GFC_ISYM_* enumerators, ordered alphabetically.
        (struct gfc_intrinsic_sym): Renamed 'generic_id' to 'id'.
        (gfc_find_subroutine): New prototype.
        * intrinsic.c (add_sym, add_sym_*): Added argument 'id' and changed all callers.
        (find_subroutine): Renamed to 'gfc_find_subroutine', removed static.
        * dependency.c: Changed usage of isym->generic_id to isym->id.
        * openmp.c: Likewise.
        * resolve.c: Likewise.
        * trans-array.c: Likewise.
        * trans-expr.c: Likewise.
        * trans-intrinsic.c: Likewise.
        * trans-openmp.c: Likewise.

From-SVN: r125168
2007-05-29 17:10:48 -04:00
Tobias Burnus
c2de0c194e re PR fortran/32088 (ICE (doesn't occur if given function standalone instead on internal))
fortran/
2007-05-27 Paul Thomas  <pault@gcc.gnu.org>
	   Tobias Burnus  <burnus@net-b.de>

	PR fortran/32088
	* symbol.c (gfc_check_function_type): Copy dimensions of
	  result variable.
	* resolve.c (resolve_contained_fntype): Improve symbol output in
 	  the error message.

testsuite/
2007-05-27  Tobias Burnus  <burnus@net-b.de>

	PR fortran/32088
	* gfortran.dg/func_result_3.f90: New.

-- Diese und die falgenden Zeilen werden ignoriert --

M    gcc/testsuite/ChangeLog
A    gcc/testsuite/gfortran.dg/func_result_3.f90
M    gcc/fortran/symbol.c
M    gcc/fortran/ChangeLog
M    gcc/fortran/resolve.c

From-SVN: r125118
2007-05-27 23:24:48 +02:00
Jerry DeLisle
24016fdb16 re PR fortran/18923 (segfault after subroutine name confusion)
2007-05-22  Jerry DeLisle  <jvdelisle@gcc.gnu.org>

	PR fortran/18923
	* resolve.c (resolve_function): Don't call resolve_global_procedure if
	there is no name. Delete duplicated statement in ELSE clause.

Co-Authored-By: Daniel Franke <franke.daniel@gmail.com>

From-SVN: r124979
2007-05-23 04:15:25 +00:00
Daniel Franke
1b35264fab re PR fortran/32002 (insufficient conformance check when assigning the result of an elemental function to an array)
gcc/fortran:
2005-05-21  Jerry DeLisle  <jvdelisle@verizon.net>
            Daniel Franke  <franke.daniel@gmail.com>

	PR fortran/32002
        * resolve.c (resolve_actual_arglist): Resolve actual argument after
        being identified as variable.


gcc/testsuite:
2005-05-21  Daniel Franke  <franke.daniel@gmail.com>

	PR fortran/32002
        * gfortran.dg/compliant_elemental_intrinsics_2.f90: New test.

From-SVN: r124924
2007-05-21 18:24:55 -04:00
Paul Thomas
eb77cddf42 re PR fortran/30746 (50th Anniversary Bug - Forward reference to contained function)
2007-05-12  Paul Thomas  <pault@gcc.gnu.org>

	PR fortran/30746
	* resolve.c (check_host_association): New function that detects
	incorrect host association and corrects it.
	(gfc_resolve_expr): Call the new function for variables and
	functions.
	* match.h : Remove prototype for gfc_match_rvalue.
	* gfortran.h : Add prototype for gfc_match_rvalue.

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

	PR fortran/30746
	* gfortran.dg/host_assoc_function_1.f90: New test.

From-SVN: r124633
2007-05-12 06:19:43 +00:00
Paul Thomas
847b053dd2 re PR fortran/30878 (Rejects function f1; namelist /nml/ f1)
2007-05-11 Paul Thomas <pault@gcc.gnu.org>

	PR fortran/30878
	* resolve.c (resolve_fl_namelist): It is not an error if the
	namelist element is the result variable of the enclosing
	function.  Search for the symbol in current and all parent
	namespaces for a potential conflict.
	* symbol.c (check_conflict): Remove the conflict between
	'in_namelist' and 'FL_PROCEDURE' because the symbol info
	is not available to exclude function result variables.
	* trans-io.c (nml_get_addr_expr): Use the fake result decl
	if the symbol is an implicit result variable.

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

	PR fortran/30878
	* gfortran.dg/namelist_29.f90: New test.

From-SVN: r124615
2007-05-11 11:42:56 +00:00
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