ChangeLog-2004   [plain text]

2004-12-29  Steven G. Kargl  <>

	* gfortran.h (gfc_case): fix typo in comment.

2004-12-27  Tobias Schlueter  <>

	* trans-intrinsic.c (gfc_conv_intrinsic_ishft): Change to
	logical	shift.  Call fold.  Remove 0-bit shift shortcut.
	(gfc_conv_intrinsic_ishftc): Convert first argument to at least
	4 bytes bits.  Convert 2nd and 3rd argument to 4 bytes.  Convert
	result if width(arg 1) < 4 bytes.  Call fold.

	PR fortran/19032
	* trans-intrinsic.c (gfc_conv_intrinsic_mod): Update comment
	in front of function to match the standard.  Correct handling

2004-12-27  Andrew Pinski  <>

	* trans-expr.c (gfc_conv_cst_int_power): Only check for
	flag_unsafe_math_optimizations if we have a float type.

2004-12-23  Steven G. Kargl  <>

	* gfortran.texi: Fix typo.

2004-12-16  Tobias Schlueter  <>

	* trans-intrinsic.c (build_fixbound_expr): Clarify comment, fix
	comment typo.

2004-12-15  Tobias Schlueter  <>

	PR fortran/18993
	* match.c (gfc_match_if): Don't explicitly skip optional whitespace.
	(gfc_match_nullify): Make sure that ')' is in front of the end of

	* scanner.c (skip_fixed_comments): Fix typo in comment preceding

2004-12-14  Richard Henderson  <>

	* gfortran.h ( Make const.
	(gfc_iresolve_init_1, gfc_iresolve_done_1): Remove.
	(gfc_get_string): Update prototype.
	* iresolve.c: Include tree.h.
	(string_node, HASH_SIZE, string_head, hash): Remove.
	(gfc_get_string): Use vsnprintf, get_identifier.
	(free_strings, gfc_iresolve_init_1, gfc_iresolve_done_1): Remove.
	* misc.c (gfc_init_1): Don't call gfc_iresolve_init_1.
	(gfc_done_1): Don't call gfc_iresolve_done_1.
	* module.c (mio_allocated_string): Take and return const char *,
	instead of modifying char**.
	(mio_expr): Update to match.
	* resolve.c (pure_function): Constify name argument.
	(resolve_function): Constify name.
	* trans-intrinsic.c (gfc_conv_intrinsic_function): Likewise.

2004-12-12  Richard Henderson  <>

	* iresolve.c (gfc_resolve_all, gfc_resolve_any, gfc_resolve_count,
	gfc_resolve_cshift, gfc_resolve_dot_product, gfc_resolve_eoshift,
	gfc_resolve_matmul, gfc_resolve_maxloc, gfc_resolve_maxval,
	gfc_resolve_minloc, gfc_resolve_minval, gfc_resolve_pack,
	gfc_resolve_product, gfc_resolve_reshape, gfc_resolve_shape,
	gfc_resolve_spread, gfc_resolve_sum, gfc_resolve_transpose,
	gfc_resolve_unpack: Use PREFIX.

2004-12-12  Tobias Schlueter  <>

	PR fortran/18869
	* match.c (gfc_match_common): Skip whitespace.

2004-12-12  Steven G. Kargl  <>

	PR fortran/16581
	* check.c (gfc_check_iand, gfc_check_ibclr, gfc_check_ibits,
	gfc_check_ibset, gfc_check_ieor, gfc_check_ior): Remove default
	integer kind check; Issue error for -std=f95 when needed.
	* intrinsic.c (add_functions): Change ieor from GFC_STD_GNU to
	* iresolve.c (gfc_resolve_iand, gfc_resolve_ieor, gfc_resolve_ior):
	Promote arguments to same kind.

2004-12-12  Steven G. Kargl  <>
	Paul Brook  <>

	PR fortran/16222
	* resolve.c (gfc_resolve_iterator_expr): New function.
	(gfc_resolve_iterator): Use it.  Add real_ok argument.  Convert
	start, end and stride to correct type.
	(resolve_code): Pass extra argument.
	* array.c (resolve_array_list): Pass extra argument.
	* gfortran.h (gfc_resolve): Add prototype.
	* trans-stmt.c (gfc_trans_do): Remove redundant type conversions.
	Handle real type iterators.

2004-12-11  Tobias Schlueter  <>

	PR fortran/17175
	* iresolve.c (gfc_resolve_scale): Convert 'I' argument if not of
	same kind as C's 'int'.
	(gfc_resolve_set_exponent): Convert 'I' argument if not of kind 4.

2004-12-08  Richard Henderson  <>

	* intrinsic.c (gfc_convert_type_warn): Propagate the input shape
	to the output expression.
	* iresolve.c (gfc_resolve_cshift, gfc_resolve_eoshift): Suppress
	warning conversion.
	(gfc_resolve_reshape): Force convert SHAPE and ORDER parameters
	to index kind.

2004-12-08  Tobias Schlueter  <>

	PR fortran/18826
	* resolve.c (resolve_code): Impose correct restrictions on
	assigned variable.

	* decl.c (gfc_match_end): Use locus of END when eos is an error.

2004-12-02  Steven G. Kargl  <>
	Paul Brook  <>

	* check.c (gfc_check_flush, gfc_check_fnum): New functions.
	(gfc_check_fstat, gfc_check_fstat_sub): New functions.
	(gfc_check_stat, gfc_check_stat_sub): New functions.
	* gfortran.h (GFC_ISYM_FNUM,GFC_ISYM_FSTAT,GFC_ISYM_STAT): New symbols
	* intrinsic.c (add_functions,add_subroutines): Add flush, fnum,
	fstat, and stat to intrinsics symbol tables.
	* intrinsic.h (gfc_check_flush, gfc_resolve_stat_sub): Add prototypes.
	(gfc_resolve_fstat_sub, gfc_resolve_stat): Ditto.
	* iresolve.c (gfc_resolve_fnum, gfc_resolve_fstat): New functions.
	(gfc_resolve_stat, gfc_resolve_flush): New functions.
	(gfc_resolve_stat_sub,gfc_resolve_fstat_sub): New functions
	* trans-intrinsic.c (gfc_conv_intrinsic_function): Add new intrinsics.

2004-12-02  Steven G. Kargl  <>

	* intrinsic.c: Fix and add comments, fix function declarations
	(add_functions,add_subroutines): Use symbols
	(gmp.h): Remove unused include

2004-11-25  Joseph S. Myers  <>

	* f95-lang.c, gfortranspec.c, trans-decl.c: Avoid ` as left quote
	in diagnostics.

2004-11-24  Steven Bosscher  <>

	* options.c (gfc_post_options): Don't clear flag_inline_functions.

2004-11-20  Steven G. Kargl  <>

	* check.c (gfc_check_getcwd_sub): Fix seg fault.

	* check.c (gfc_check_exit,gfc_check_umask,gfc_check_umask_sub,
	gfc_check_unlink,gfc_check_unlink_sub): New functions
	* gfortran.h (GFC_ISYM_UMASK,GFC_ISYM_UNLINK): New symbols
	* intrinsic.c (add_functions,add_subroutines): Add umask, unlink,
	exit to intrinsics symbol tables.
	* intrinsic.h (gfc_check_umask,gfc_check_unlink,gfc_check_exit,
	gfc_resolve_unlink_sub): Add and sort prototypes.
	* iresolve.c (gfc_resolve_umask,gfc_resolve_unlink,gfc_resolve_exit,
	gfc_resolve_umask_sub,gfc_resolve_unlink_sub): New functions
	* trans-intrinsic.c (gfc_conv_intrinsic_function): Use symbols

2004-11-16  Paul Brook  <>

	PR fortran/13010
	* trans-array.c (gfc_trans_allocate_temp_array): Use gfc_get_dtype.
	(gfc_array_init_size, gfc_conv_expr_descriptor): Ditto.
	* trans-types.c (gfc_get_dtype): Accept array type rather than element
	(gfc_get_nodesc_array_type): Don't set GFC_TYPE_ARRAY_DTYPE.
	(gfc_get_array_type_bounds): Ditto.
	(gfc_get_derived_type): Recurse into derived type pointers.
	* trans-types.h (gfc_get_dtype): Add prototype.
	* trans.h (GFC_TYPE_ARRAY_DTYPE): Add comment.

2004-11-15  Paul Brook  <>

	* trans-types.c (gfc_get_dtype): Remove obsolete TODO.

2004-11-10  Paul Brook  <>

	PR fortran/18375
	* trans-expr.c (gfc_trans_subarray_assign): Free shape before ss.
	* trans-io.c (transfer_array_component): Ditto.

2004-11-10  Paul Brook  <>

	* invoke.texi: Fix typo.

2004-11-08  Kazu Hirata  <>

	* arith.c, array.c, decl.c, expr.c, f95-lang.c, gfortran.h,
	gfortranspec.c, interface.c, intrinsic.c, iresolve.c, match.c,
	module.c, parse.c, parse.h, primary.c, resolve.c, scanner.c,
	trans-array.c, trans-array.h, trans-expr.c, trans-intrinsic.c,
	trans-io.c, trans-stmt.c, trans.h: Fix comment formatting.

2004-11-06  Tobias Schlueter  <>

	PR fortran/18023
	* io.c (resolve_tag): Tighten up exception for assigned FORMAT.

2004-11-06  Kazu Hirata  <>

	* gfortranspec.c: Replace GNU CC with GCC.

2004-11-05  Tobias Schlueter  <>

	* gfortranspec.c (lang_specific_driver): Change year to 2004.

2004-11-05  Tobias Schlueter  <>

	PR fortran/18111
	*  trans-decl.c (create_function_arglist): Set DECL_ARTIFICIAL for
	hidden parameters.

2004-11-05  Tobias Schlueter  <>

	PR fortran/15164
	* trans-decl.c (gfc_finish_var_decl): Don't declare arguments to
	module procedures as if they were module variables.

2004-11-03  Tobias Schlueter  <>

	PR fortran/17535
	PR fortran/17583
	PR fortran/17713
	* module.c (write_symbol1): Set module_name for dummy arguments.

2004-11-02  Paul Brook  <>

	* intrinsic.c (check_intrinsic_standard): Include error locus.
	Remove VLA.
	(gfc_intrinsic_func_interface, gfc_intrinsic_sub_interface): Pass
	locus to check_intrinsic_standard.

2004-10-31  Janne Blomqvist  <>

	PR fortran/17590
	* gfortran.h: Change GFC_STD_* flags to more appropriate
	ones. (struct gfc_intrinsic_isym): Add field for standard. (struct
	gfc_option_t): Add field for warning about use of nonstandard
	* intrinsic.c (add_sym): Add parameter for standard version, check
	this against current standard.
	(add_sym_0): Pass standard parameter to add_sym.
	(add_sym_1, add_sym_0s, add_sym_1s, add_sym_1m, add_sym_2): Ditto.
	(add_sym_2s, add_sym_3, add_sym_3ml, add_sym_3red, add_sym_3s): Ditto.
	(add_sym_4, add_sym_4s, add_sym_5, add_sym_5s): Ditto.
	(make_generic): Add parameter for standard, check this
	against currently selected standard.
	(add_functions, add_subroutines): Add parameter to tell which
	standard an intrinsic belongs to.
	(check_intrinsic_standard): New function.
	(gfc_intrinsic_func_interface): Add call to check_intrinsic_standard.
	(gfc_intrinsic_sub_interface): Ditto.
	* lang.opt: Add Wnonstd-intrinsics option.
	* options.c (gfc_init_options): Change to use new GFC_STD_* flags,
	init new warning.
	(set_Wall): Add warning about nonstd intrinsics.
	(gfc_handle_option): Change to use new GFC_STD_* flags,
	handle new warning.
	* invoke.texi: Update manual to include -Wnonstd-intrinsics.

2004-10-30  Andrew Pinski  <>

	* f95-lang.c (lang_tree_node): Add chain_next to be the TREE_CHAIN.

2004-10-30  Tobias Schlueter  <>

	* simplify.c (twos_complement): Calculate mask in GMP arithmetic.

2004-10-30  Tobias Schlueter  <>

	* trans.c (gfc_trans_code): Set global locus after recursing. Fix
	comment typo.

2004-10-30  Canqun Yang  <>

	* check.c (gfc_check_rand): Allow missing optional argument.
	(gfc_check_irand): Ditto.
	* intrinsic.c (add_functions): Set arg optional flag for {i,}rand.

2004-10-28  Scott Robert Ladd  <>

	PR fortran/13490, PR fortran/17912
	* gcc/fortran/gfortran.h: Added pedantic_min_int to gfc_integer_info
	* gcc/fortran/gfortran.h: Added ARITH_ASYMMETRIC to arith
	* gcc/fortran/arith.c: Added support for an "asymmetric integer"
	warning when compiling with pedantic.
	* gcc/fortran/arith.c: Set minimum integer values to reflect
	realities of two's complement signed integers. Added
	pedantic minimum.

2004-10-17  Andrew Pinski  <>

	(f951): Do not depend on F95_ADDITIONAL_OBJS and don't
	link it in.

2004-10-14  Tobias Schlueter  <>

	* trans-decl.c (generate_local_decl): Simplify logic, fix comment
	(gfc_generate_function_code): Fix formatting issue.

2004-10-10  Tobias Schlueter  <>

	* module.c: Fix formatting issues.

2004-10-09  Tobias Schlueter  <>

	* module.c (mio_interface_rest): Set where member of interface
	while loading.

2004-10-08  Andrew Pinski  <>

	PR fortran/17901
	* options.c (gfc_handle_option): Add break after handing the
	J/M option.

2004-10-08  Tobias Schlueter  <>

	* arith.c: Fix formatting issues.

2004-10-07  Tobias Schlueter  <>

	PR fortran/17676
	* resolve.c (resolve_operator): Use correct operator name in message.

2004-10-07  Tobias Schlueter  <>

	* primary.c (match_boz_constant): Allow kind parameter suffixes.
	Move standard warning further to the front.

2004-10-07  Kazu Hirata  <>

	* trans-stmt.c: Fix a comment typo.

2004-10-07  Paul Brook  <>

	PR fortran/17678
	* trans-array.c (gfc_trans_deferred_array): Leave use associated
	variables alone.

2004-10-06  Tobias Schlueter  <>

	PR fortran/17568
	* simplify.c (twos_complement): New function.
	(gfc_simplify_ishft, gfc_simplify_ishftc): Revise.

	* simplify.c (gfc_simplify_abs): Use mpfr_hypot for CABS.

2004-10-06  Paul Brook  <>

	* trans-stmt.c (gfc_trans_simple_do): New function.
	(gfc_trans_do): Use it.  Evaluate iteration bounds before entering
	loop.  Update comments.

2004-10-04  Tobias Schlueter  <>

	PR fortran/17283
	* iresolve.c (gfc_resolve_pack): Choose function depending if mask
	is scalar.

	PR fortran/17631
	* intrinsic.c (add_sym_5): Remove.
	(add_subroutines): Add resolution function for MVBITS.
	* intrinsic.h (gfc_resolve_mvbits): Declare resolution function for
	* iresolve.c (gfc_resolve_mvbits): New function.
	(gfc_resolve_random_number): Remove empty line at end of function.

	* trans-const.c (gfc_build_cstring_const): New function.
	(gfc_init_cst): Use new function.
	* trans-const.h (gfc_build_cstring_const): Add prototype.
	* trans-io.c (set_string, set_error_locus): Use new function.
	* trans-stmt.c (gfc_trans_goto): Use new function.

	PR fortran/17708
	* parse.c (accept_statement): Don't treat END DO like END IF and
	(parse_do_block): Generate possible END DO label inside END DO

	PR fortran/17776
	* check.c (gfc_check_system_sub): New function.
	* gfortran.h (gfc_generic_isym_id): Add GFC_ISYM_SYSTEM.
	* intrinsic.c (add_functions): Add 'system'.
	(add_subroutines): Add 'system'.
	* intrinsic.h (gfc_check_etime_sub, gfc_check_getcwd_sub):
	Move prototypes to other suborutines.
	(gfc_check_system_sub, gfc_resolve_system, gfc_resolve_system_sub):
	Add prototype.
	(gfc_resolve_system_clock): Fix formatting of prototype.
	* iresolve.c (gfc_resolve_system, gfc_resolve_system_sub): New
	* trans-intrinsic.c (gfc_conv_intrinsic_function): Deal with

2004-10-04  Erik Schnetter  <>

	* scanner.c (preprocessor_line): Accept preprocessor lines without
	file names.  Check file names for closing quotes.  Handle escaped
	quotes in file names.

2004-10-04  Tobias Schlueter  <>
	Paul Brook  <>

	* trans-array.c (gfc_conv_expr_descriptor): Check for substriungs.
	Use gfc_get_expr_charlen.
	* trans-expr.c (gfc_get_expr_charlen): New function.
	* trans.h (gfc_get_expr_charlen): Add prototype.

2004-10-04  Kazu Hirata  <>

	* trans-intrinsic.c: Fix a comment typo.

2004-10-03  Tobias Schlueter  <>

	* simplify.c (range_check): Remove blank line at beginning of function.
	(gfc_simplify_dint): Same at end of function.
	(gfc_simplify_exponent, gfc_simplify_fraction): Simplify calculations.
	(gfc_simplify_bound): Fix indentation.
	(gfc_simplify_log10): Simplify calculation.
	(gfc_simplify_min, gfc_simplify_max): Remove blank line at beginning
	of function.
	(gfc_simplify_nearest): Same at end of function.
	(gfc_simplify_nint, gfc_simplify_idnint): Same at beginning of
	(gfc_simplify_rrspacing, gfc_simplify_set_exponent,
	gfc_simplify_spacing): Simplify calulations.

2004-10-03  Feng Wang  <>

	* trans-intrinsic.c: Fix comments on spacing and rrspacing
	(gfc_conv_intrinsic_rrspacing): Add fold on constant trees.

2004-10-01  Jan Hubicka  <>

	* f95-lang.c (gfc_expand_function): Update call of
	* trans-decl.c (gfc_generate_constructors): Likewise.

2004-09-26  Tobias Schlueter  <>

	* trans-intrinsic.c: Comment fixes.

2004-09-25  Tobias Schlueter  <>

	* decl.c (add_init_expr_to_sym, variable_decl): Comment fixes.

2004-09-24  Tobias Schlueter  <>

	* trans-types.c (gfc_return_by_reference): Remove superfluous

	* intrinsic.h (gfc_resolve_getcwd): Update prototype.
	* iresolve.c (gfc_resolve_getcwd): Add second argument to function.

	PR fortran/17615
	* trans-expr.c (gfc_trans_arrayfunc_assign): Look at resolved
	function to determine return type.

2004-09-20  Jan Hubicka  <>

	* trans-decl.c (build_entry_thunks): Finalize the function; do not lower
	(gfc_generate_function_code): Likewise.

2004-09-20  Tobias Schlueter  <>

	PR fortran/15957
	* simplify.c (gfc_simplify_reshape): Set shape of return value

2004-09-17  Jeffrey D. Oldham  <>
	    Zack Weinberg  <>

	* f95-lang.c, trans-expr.c, trans.c: Update for new tree-class
	enumeration constants.

2004-09-17  Paul Brook  <>

	* gfortran.h (struct gfc_linebuf): Don't use C99 empty arrays.
	(gfc_linebuf_header_size): Define.
	* scanner.c (load_file): Use it.

2004-09-16  Kazu Hirata  <>

	* array.c, data.c, decl.c, dependency.c, error.c, f95-lang.c,
	interface.c, intrinsic.c, io.c, misc.c, module.c, parse.h,
	resolve.c, scanner.c, trans-array.c, trans-array.h,
	trans-common.c, trans-const.h, trans-decl.c, trans-expr.c,
	trans-intrinsic.c, trans-stmt.c, trans-types.c, trans.c,
	trans.h: Fix comment typos.  Follow spelling conventions.

2004-09-16  Victor Leikehman  <>

	* trans-io.c (transfer_array_component): New function.
	(transfer_expr): For array fields, call transfer_array_component.

2004-09-16  Kazu Hirata  <>

	* gfortran.texi: Fix a typo.

2004-09-15  Aaron W. LaFramboise  <>

	* parse.c (eof_buf): Rename eof to eof_buf.
	(unexpected_eof): Same.
	(gfc_parse_file): Same.

2004-09-15  Steven G. Kargl  <>

	* check.c (gfc_check_getcwd_sub): New function.
	* gfortran.h (GFC_ISYM_GETCWD): New symbol.
	* intrinsic.c (add_functions): Add function definition;
	Use symbol.
	* intrinsic.c (add_subroutines): Add subroutine definitions.
	* intrinsic.h: Add prototypes.
	* iresolve.c (gfc_resolve_getcwd, gfc_resolve_getcwd_sub):
	New functions.
	* trans-intrinsic.c (gfc_conv_intrinsic_function): Use symbol.

2004-09-15  Tobias Schlueter  <>

	PR fortran/16485
	* module.c (write_symbol): Don't fill in module name here.
	(write_symbol0): Fill in here instead.

2004-09-14  Kazu Hirata  <>

	* data.c, decl.c, f95-lang.c, gfortran.h, match.c,
	trans-array.c, trans-common.c, trans-expr.c,
	trans-intrinsic.c, trans-stmt.c, trans-types.c, trans.h: Fix
	comment typos.  Follow spelling conventions.

2004-09-09  Paul Brook  <>

	* scanner.c (get_file): Add ATTRIBUTE_UNUSED.

2004-09-08  Paul Brook  <>

	* array.c: Don't include assert.h.
	* data.c: Don't include assert.h.  Replace assert and abort with
	gcc_assert and gcc_unreachable.
	* dependency.c: Ditto.
	* f95-lang.c: Ditto.
	* iresolve.c: Ditto.
	* resolve.c: Ditto.
	* simplify.c: Ditto.
	* symbol.c: Ditto.
	* trans-array.c: Ditto.
	* trans-common.c: Ditto.
	* trans-const.c: Ditto.
	* trans-decl.c: Ditto.
	* trans-expr.c: Ditto.
	* trans-intrinsic.c: Ditto.
	* trans-io.c: Ditto.
	* trans-stmt.c: Ditto.
	* trans-types.c: Ditto.
	* trans.c: Ditto.

2004-09-07  Per Bothner  <>
	Paul Brook  <>

	* error.c (show_locus): Handle mapped locations.
	* f95-lang.c (gfc_be_parse_file): Initialize mapped locations.
	* gfortran.h: Include input.h.
	(struct gfc_linebuf): Use source_location.
	* scanner.c (get_file): Initialize linemap.
	(preprocessor_line): Pass extra argument to get_file.
	(load_file): Ditto.  Setup linemap.
	(gfc_new_file): Handle mapped locations.
	* trans-common.c (build_field, build_equiv_decl, build_common_decl):
	Set decl source locations.
	(gfc_trans_common): Set blank common block location.
	* trans-decl.c (gfc_set_decl_location): New function.
	(gfc_get_label_decl, gfc_get_symbol_decl): Use it.
	(trans_function_start): Move call to gfc_set_backend_locus..
	(build_function_decl): ... to here.
	(build_entry_thunks): Set and restore the backend locus.
	(gfc_generate_constructors): Remove excess arguments to
	(gfc_generate_block_data): Add comments.  Set the decl locus.
	* trans-io.c (set_error_locus): Handle mapped locations.
	* trans.c (gfc_get_backend_locus, gfc_get_backend_locus): Ditto.
	(gfc_trans_code): Use SET_EXPR_LOCATION.
	(gfc_generate_code): Override the location of the new symbol.
	* trans.h (gfc_set_decl_location): Add prototype.

2004-08-31  Paul Brook  <>

	* trans-types.c (gfc_type_for_mode): Return NULL for unknown modes.

2004-09-01  Tobias Schlueter  <>

	PR fortran/15327
	* trans-intrinsic.c (gfc_conv_intrinsic_merge): Do the right thing for

2004-09-01  Tobias Schlueter  <>

	PR fortran/16400
	PR fortran/16404
	(port from g95)
	* resolve.c (resolve_transfer): New function.
	(resolve_code): Call resolve_transfer in case of EXEC_TRANSFER.

2004-08-31  Tobias Schlueter  <>

	PR fortran/16579
	* trans-types.c (gfc_init_types): Make gfc_character1_type_node an
	unsigned char.

2004-08-31  Tobias Schlueter  <>

	* CONTRIB, NEWS, README, TODO: Remove obsolete files.

2004-08-31  Tobias Schlueter  <>

	PR fortran/17244
	* trans-types.c (gfc_return_by_reference): Remove TODO error,
	add comment pointing out possible issue WRT compatibility with g77.

2004-08-31  Tobias Schlueter  <>

	* trans-decl.c, trans-expr.c, trans-io.c, trans-types.c: Replace
	all occurences of 'gfc_strlen_type_node' by
	* trans-types.h: Same. Also update comment accordingly.

2004-08-31  Tobias Schlueter  <>

	* primary.c: Update copyright boilerplate to say GCC.
	* f95-lang.c: Change initial comment to say gfortran.

2004-08-31  Paul Brook  <>

	* trans-types.h: Add comments.
	(intmax_type_node, string_type_node, const_string_type_node): Remove.

2004-08-30  Richard Henderson  <>

	* (fortran/f95-lang.o): Update dependencies.
	(fortran/trans-decl.o, fortran/trans-types.o): Likewise.
	* gfortran.h (gfc_integer_info): Add c_char, c_short, c_int,
	c_long, c_long_long.
	(gfc_logical_info): Add c_bool.
	(gfc_real_info): Add mode_precision, c_float, c_double, c_long_double.
	* trans-array.c (gfc_array_allocate): Use TYPE_PRECISION
	rather than gfc_int[48]_type_node for allocate choice.
	* trans-decl.c (gfc_build_intrinsic_function_decls): Cache
	local copies of some kind type nodes.
	(gfc_build_builtin_function_decls): Likewise.
	* trans-expr.c (gfc_conv_power_op): Likewise.
	* trans-intrinsic.c (gfc_conv_intrinsic_index,
	gfc_conv_intrinsic_scan, gfc_conv_intrinsic_verify,
	gfc_conv_intrinsic_trim, gfc_conv_intrinsic_repeat): Likewise.
	* trans-stmt.c (gfc_trans_pause, gfc_trans_stop,
	gfc_trans_character_select, gfc_trans_allocate): Likewise.
	* trans-io.c (gfc_pint4_type_node): Move into ...
	(gfc_build_io_library_fndecls): ... here.  Cache local copies of
	some kind type nodes.
	* trans-types.c (gfc_type_nodes): Remove.
	(gfc_character1_type_node, gfc_strlen_type_node): New.
	(gfc_integer_types, gfc_logical_types): New.
	(gfc_real_types, gfc_complex_types): New.
	(gfc_init_kinds): Fill in real mode_precision.
	(gfc_build_int_type, gfc_build_real_type): New.
	(gfc_build_complex_type, gfc_build_logical_type): New.
	(c_size_t_size): New.
	(gfc_init_types): Loop over kinds.
	(gfc_get_int_type, gfc_get_real_type): Use gfc_validate_kind.
	(gfc_get_complex_type, gfc_get_logical_type): Likewise.
	(gfc_get_character_type_len): Likewise.
	(gfc_type_for_size): Loop over kinds; use a reduced set of
	unsigned type nodes.
	(gfc_type_for_mode): Loop over kinds.
	(gfc_signed_or_unsigned_type): Use gfc_type_for_size.
	(gfc_unsigned_type, gfc_signed_type): Use gfc_signed_or_unsigned_type.
	* trans-types.h (F95_INT1_TYPE, F95_INT2_TYPE, F95_INT4_TYPE,
	F95_CHARACTER1_TYPE, NUM_F95_TYPES, gfc_type_nodes,
	gfc_int1_type_node, gfc_int2_type_node, gfc_int4_type_node,
	gfc_int8_type_node, gfc_int16_type_node, gfc_real4_type_node,
	gfc_real8_type_node, gfc_real16_type_node, gfc_complex4_type_node,
	gfc_complex8_type_node, gfc_complex16_type_node,
	gfc_logical1_type_node, gfc_logical2_type_node,
	gfc_logical4_type_node, gfc_logical8_type_node,
	gfc_logical16_type_node, gfc_strlen_kind): Remove.
	(gfc_character1_type_node): Turn in to a variable.
	(gfc_strlen_type_node): Likewise.

2004-08-30  Tobias Schlueter  <>

	* gfortran.h (gfc_namespace): Add new field is_block_data.
	* parse.c (accept_statement): Remove special handling for BLOCK DATA.
	(parse_block_data): Record BLOCK DATA name, set is_block_data field.
	* trans.c (gfc_generate_code): Handle BLOCK DATA units.
	* trans.h (gfc_generate_block_data): Add prototype.
	* trans-decl.c (gfc_generate_block_data): New function.

2004-08-29  Richard Henderson  <>

	* trans-const.c (gfc_conv_mpz_to_tree): Use mpz_export.
	* trans-types.c (gfc_init_kinds): Reject integer kinds larger
	than two HOST_WIDE_INT.

2004-08-29  Tobias Schlueter  <>

	PR fortran/13910
	* decl.c (free_variable, free_value, gfc_free_data, var_list,
	var_element, top_var_list, match_data_constant, top_val_list,
	gfc_match_data): Move here from match.c.
	(match_old_style_init): New function.
	(variable_decl): Match old-style initialization.
	* expr.c (gfc_get_variable_expr): New function.
	* gfortran.h (gfc_get_variable_expr): Add prototype.
	* gfortran.texi: Start documentation for supported extensions.
	* match.c: Remove the functions moved to decl.c.
	* match.h (gfc_match_data): Move prototype to under decl.c.
	* symbol.c (gfc_find_sym_tree, gfc_find_symbol): Add/correct

2004-08-29  Steven G. Kargl  <>
	Paul Brook  <>

	* check.c (gfc_check_besn, gfc_check_g77_math1): New functions.
	* f95-lang.c (DO_DEFINE_MATH_BUILTIN): Define.
	(build_builtin_fntypes): New function.
	(gfc_init_builtin_functions): Use it.
	* gfortran.h (enum gfc_generic_isym_id): Add GFC_ISYM_{J,Y}{0,1,N}
	and GFC_ISYM_ERF{,C}.
	(gfc_c_int_kind): Declare.
	* intrinsic.c (add_functions): Add [d]bes* and [d]erf*.
	* intrinsic.h (gfc_check_besn, gfc_check_g77_math1, gfc_resolve_besn,
	gfc_resolve_g77_math1): Add prototypes.
	* resolve.c (gfc_resolve_besn, gfc_resolve_g77_math1): New functions.
	* mathbuiltins.def: Add comment.  Change third argument.  Use
	DEFINE_MATH_BUILTIN_C.  Add bessel and error functions.
	* trans-intrinsic.c (BUILT_IN_FUNCTION): Define.
	* trans-types.c (gfc_c_int_kind): Declare.
	(gfc_init_kinds): Set it.

2004-08-29  Steven G. Kargl  <>
	Paul Brook  <>

	* gfortran.h (enum gfc_generic_isym_id): Add GFC_ISYM_GET?ID.
	(gfc_check_f, gfc_simplify_f): Add f0.
	* intrinsic.c (do_check): Call f0.  Flatten.
	(add_sym_0): Fix prototype.  Set f0.
	(add_functions): Add getgid, getgid and getuid.
	(resolve_intrinsic): Remove obsolete comment.
	(do_simplify): Call f0.
	* intrinsic.h (gfc_resolve_getgid, gfc_resolve_getpid,
	gfc_resolve_getuid): Add prototypes.
	* iresolve.c (gfc_resolve_getgid, gfc_resolve_getpid,
	gfc_resolve_getuid): New functions.
	* trans-intrinsic.c (gfc_conv_intrinsic_function): Handle

2004-08-28  Tobias Schlueter  <>

	* error.c (gfc_error_init_1): Remove blank line in front of
	function body. Add missing blank.
	(gfc_buffer_error, error_char, error_string): Remove blank line in
	front of function body.
	(show_locus): Add comma in comment.
	(gfc_clear_warning, gfc_warning_check, gfc_clear_error,
	gfc_push_error, gfc_pop_error): Remove blank line in front of
	function body.
	(gfc_get_errors): Typo fix in comment in front of function. Remove
	blank line in front of function body.

2004-08-27  Tobias Schlueter  <>

	* gfortran.h (gfc_default_*_kind): Remove prototypes, add extern
	variable declaration of same name.
	* arith.c, check.c, decl.c, dump_parse_tree.c, expr.c,
	intrinsic.c, io.c, iresolve.c, match.c, options.c, primary.c,
	resolve.c, simplify.c, symbol.c, trans-const.c, trans-io.c:
	Replace all calls to gfc_default_*_kind with variable accesses.
	* trans-types.c: Same as above.
	(gfc_default_*_kind_1): Rename to gfc_default_*_kind, remove
	static qualifier. Replace all occurences.
	(gfc_default_*_kind): Remove functions.

2004-08-26  Richard Henderson  <>

	* arith.c: Include system.h, not real system headers.
	(gfc_integer_kinds, gfc_logical_kinds, gfc_real_kinds,
	gfc_index_integer_kind, gfc_default_integer_kind,
	gfc_default_character_kind, gfc_default_logical_kind,
	gfc_default_complex_kind, validate_integer, validate_real,
	validate_logical, validate_character,
	gfc_validate_kind): Move to trans-types.c.
	(gfc_set_model_kind): Use gfc_validate_kind.
	(gfc_set_model): Just copy the current precision to default.
	(gfc_arith_init_1): Use mpfr precision 128 for integer setup.
	* f95-lang.c (gfc_init_decl_processing): Invoke gfc_init_kinds.
	* gfortran.h: Update file commentary.
	* trans-types.c (MAX_INT_KINDS, MAX_REAL_KINDS): New.
	(gfc_default_integer_kind_1, gfc_default_real_kind_1,
	gfc_default_double_kind_1, gfc_default_character_kind_1,
	gfc_default_logical_kind_1, gfc_default_complex_kind_1): New.
	(gfc_init_kinds): New.
	(gfc_init_types): Don't set gfc_index_integer_kind here.
	* trans-types.h (gfc_init_kinds): Declare.
	* doc/invoke.texi: Clarify DOUBLE PRECISION behaviour wrt -r8.

2004-08-26  Tobias Schlueter  <>

	* check.c (gfc_check_atan2): New function.
	* intrinsic.c (add_functions): Use gfc_check_atan2 for ATAN2
	* intrinsic.h (gfc_check_atan2): Add prototype.

2004-08-25  Richard Henderson  <>

	* arith.c (gfc_validate_kind): Add may_fail argument; abort if
	false and we don't validate the kind.
	(gfc_check_integer_range, gfc_check_real_range): Update to match.
	* check.c (kind_check): Likewise.
	* decl.c (gfc_match_old_kind_spec, gfc_match_kind_spec): Likewise.
	(match_char_spec, match_logical_spec): Likewise.
	* gfortran.h (gfc_validate_kind): Likewise.
	* options.c (gfc_handle_option): Likewise.
	* primary.c (match_integer_constant, match_real_constant,
	match_string_constant, match_logical_constant,
	match_const_complex_part): Likewise.
	* simplify.c (get_kind, gfc_simplify_bit_size, gfc_simplify_digits,
	gfc_simplify_epsilon, gfc_simplify_huge, gfc_simplify_ibclr,
	gfc_simplify_ibset, gfc_simplify_ishft, gfc_simplify_ishftc,
	gfc_simplify_maxexponent, gfc_simplify_minexponent,
	gfc_simplify_nearest, gfc_simplify_not, gfc_simplify_precision,
	gfc_simplify_radix, gfc_simplify_range, gfc_simplify_rrspacing,
	gfc_simplify_scale, gfc_simplify_spacing, gfc_simplify_tan,
	gfc_simplify_tiny): Likewise.
	* trans-intrinsic.c (gfc_conv_intrinsic_aint, gfc_conv_intrinsic_mod,
	gfc_conv_intrinsic_minmaxloc, gfc_conv_intrinsic_minmaxval,
	prepare_arg_info): Likewise.

2004-08-25  Tobias Schlueter  <>

	* expr.c (gfc_check_assign): Add comment. Add new warning.
	* trans-expr.c (gfc_conv_function_call): Correctly dereference
 	result of pointer valued function when not in pointer assignment.

2004-08-25  Paul Brook  <>

	* Remove dead commented line.
	* module.c: Replace g95 with gfortran in comment.

2004-08-25  Paul Brook  <>

	PR fortran/17190
	* arith.c (gfc_mpfr_to_mpz): Workaround mpfr bug.

2004-08-25  Paul Brook  <>

	PR fortran/17144
	* trans-array.c (gfc_trans_allocate_temp_array): Remove
	string_length argument.
	(gfc_trans_array_ctor_element): New function.
	(gfc_trans_array_constructor_subarray): Use it.
	(gfc_trans_array_constructor_value): Ditto.  Handle constant
	character arrays.
	(get_array_ctor_var_strlen, get_array_ctor_strlen): New functions.
	(gfc_trans_array_constructor): Use them.
	(gfc_add_loop_ss_code): Update to new gfc_ss layout.
	(gfc_conv_ss_descriptor): Remember section string length.
	(gfc_conv_scalarized_array_ref): Ditto.  Remove dead code.
	(gfc_conv_resolve_dependencies): Update to new gfc_ss layout.
	(gfc_conv_expr_descriptor): Ditto.
	(gfc_conv_loop_setup): Ditto.  Spelling fixes.
	* trans-array.h (gfc_trans_allocate_temp_array): Update prototype.
	* trans-const.c (gfc_conv_constant):  Update to new gfc_ss layout.
	* trans-expr.c (gfc_conv_component_ref): Turn error into ICE.
	(gfc_conv_variable): Set string_length from section.
	(gfc_conv_function_call): Remove extra argument.
	(gfc_conv_expr, gfc_conv_expr_reference): Update to new gfc_ss layout.
	* trans-types.c (gfc_get_character_type_len): New function.
	(gfc_get_character_type): Use it.
	(gfc_get_dtype): Return zero for internal types.
	* trans-types.h (gfc_get_character_type_len): Add prototype.
	* trans.h (struct gfc_ss): Move string_length out of union.

2004-08-25  Tobias Schlueter  <>

	* trans.h (build2_v, build3_v): New macros.
	(build_v): Remove.
	* f95-lang.c (gfc_truthvalue_conversion): Use build2 instead of
	* trans-array.c (gfc_conv_descriptor_data,
	gfc_conv_descriptor_offset, gfc_conv_descriptor_dimension,
	gfc_conv_descriptor_stride, gfc_conv_descriptor_lbound,
	gfc_conv_descriptor_ubound, gfc_trans_allocate_array_storage,
	gfc_trans_array_constructor_value, gfc_conv_array_index_ref,
	gfc_trans_array_bound_check, gfc_conv_array_index_offset,
	gfc_conv_scalarized_array_ref, gfc_conv_array_ref,
	gfc_conv_array_ref, gfc_trans_preloop_setup,
	gfc_trans_scalarized_loop_end, gfc_conv_ss_startstride,
	gfc_conv_loop_setup, gfc_array_init_size,
	gfc_conv_array_initializer, gfc_trans_array_bounds,
	gfc_trans_auto_array_allocation, gfc_trans_dummy_array_bias,
	gfc_conv_expr_descriptor, gfc_conv_array_parameter,
	gfc_trans_deferred_array): Use buildN and buildN_v macros instead
	of build and build_v as appropriate.
	* trans-common.c (create_common): Same.
	* trans-decl.c (gfc_trans_auto_character_variable,
	gfc_trans_entry_master_switch, gfc_generate_function_code): Same.
	* trans-expr.c (gfc_conv_expr_present, gfc_conv_substring,
	gfc_conv_component_ref, gfc_conv_unary_op, gfc_conv_powi,
	gfc_conv_cst_int_power, gfc_conv_string_tmp, gfc_conv_concat_op,
	gfc_conv_expr_op, gfc_conv_function_call,
	gfc_trans_structure_assign): Same.
	* trans-intrinsic.c (build_fixbound_expr, build_round_expr,
	gfc_conv_intrinsic_aint, gfc_conv_intrinsic_bound,
	gfc_conv_intrinsic_cmplx, gfc_conv_intrinsic_mod,
	gfc_conv_intrinsic_dim, gfc_conv_intrinsic_sign,
	gfc_conv_intrinsic_dprod, gfc_conv_intrinsic_minmax,
	gfc_conv_intrinsic_anyall, gfc_conv_intrinsic_count,
	gfc_conv_intrinsic_arith, gfc_conv_intrinsic_minmaxloc,
	gfc_conv_intrinsic_minmaxval, gfc_conv_intrinsic_btest,
	gfc_conv_intrinsic_bitop, gfc_conv_intrinsic_singlebitop,
	gfc_conv_intrinsic_ibits, gfc_conv_intrinsic_ishft,
	gfc_conv_intrinsic_merge, gfc_conv_intrinsic_strcmp,
	gfc_conv_allocated, gfc_conv_associated, prepare_arg_info,
	gfc_conv_intrinsic_spacing, gfc_conv_intrinsic_rrspacing,
	gfc_conv_intrinsic_trim, gfc_conv_intrinsic_repeat,
	gfc_conv_intrinsic_iargc): Same.
	* trans-io.c (set_parameter_value, set_parameter_ref, set_string,
	set_flag, add_case, io_result, transfer_namelist_element,
	transfer_expr): Same.
	* trans-stmt.c (gfc_trans_goto, gfc_trans_return, gfc_trans_if_1,
	gfc_trans_arithmetic_if, gfc_trans_do, gfc_trans_do_while,
	gfc_trans_integer_select, gfc_trans_logical_select,
	gfc_trans_character_select, gfc_trans_forall_loop,
	gfc_trans_nested_forall_loop, gfc_do_allocate,
	generate_loop_for_temp_to_lhs, generate_loop_for_rhs_to_temp,
	compute_inner_temp_size, compute_overall_iter_number,
	allocate_temp_for_forall_nest, gfc_trans_pointer_assign_need_temp,
	gfc_trans_forall_1, gfc_evaluate_where_mask,
	gfc_trans_where_assign, gfc_trans_allocate): Same.
	* trans-types.c (gfc_get_dtype, gfc_get_array_type_bounds): Same.
	* trans.c (gfc_add_modify_expr, gfc_finish_block,
	gfc_build_array_ref, gfc_build_function_call,
	gfc_trans_runtime_check): Same.

2004-08-25  Tobias Schlueter  <>

	* trans-const.c (gfc_conv_mpz_to_tree): Change call to
	build_int_cst to build_int_cst_wide in accordance to Nathan's
	previous patch.

2004-08-25  Nathan Sidwell  <>

	* trans-array.c (gfc_trans_array_constructor_value): Adjust
	build_int_cst calls.
	* trans-const.c (gfc_build_string_const, gfc_init_constants,
	gfc_conv_mpz_to_tree, gfc_conv_constant_to_tree): Likewise.
	* trans-decl.c (gfc_get_symbol_decl, build_entry_thunks,
	gfc_trans_entry_master_switch): Likewise.
	* trans-intrinsic.c (gfc_conv_intrinsic_ibits,
	gfc_conv_intrinsic_len, prepare_arg_info): Likewise.
	* trans-io.c (add_case, set_error_locus,
	transfer_namelist_element, transfer_expr): Likewise.
	* trans-stmt.c (gfc_trans_label_assign, gfc_trans_pause,
	gfc_trans_stop, gfc_trans_character_select): Likewise.
	* trans-types.c (gfc_init_types, gfc_get_dtype): Likewise.
	* trans.c (gfc_trans_runtime_check): Likewise.

2004-08-24  Tobias Schlueter  <>

	* trans-decl.c, trans-types.c: Add and remove blank lines as

2004-08-24  Richard Henderson  <>

	* trans-const.c (gfc_conv_mpz_to_tree): Fix 64-bit shift warning.

2004-08-24  Tobias Schlueter  <>

	* resolve.c (merge_argument_lists): Revert unintentionally
	committed change.

2004-08-24  Tobias Schlueter  <>

	* trans-decl.c (build_function_decl): Fix spelling in comment.
	(build_entry_thunks): Remove code with no function.
	(gfc_build_intrinsic_function_decls): Remove empty line.

	* resolve.c (resolve_entries): Fix a bunch of comment typos.

2004-08-24  Nathan Sidwell  <>

	* f95-lang.c (gfc_init_decl_processing): Adjust
	build_common_tree_nodes call.

2004-08-24  Tobias Schlueter  <>

	* trans-types.c: Spelling and formatting fixes.

2004-08-23  Richard Henderson  <>

	* trans-const.c (gfc_conv_mpz_to_tree): Use mpz_getlimbn instead
	of going through an intermediate string.  Fix 32/64 int/long bug.

2004-08-23  Eric Christopher  <>

	* trans-types.c (gfc_type_for_mode): Remove VECTOR_TYPE_SUPPORTED_P
	usage. Use build_vector_type_for_mode for vector types.

2004-08-22  Richard Henderson  <>

	PR 13465
	* data.c (find_con_by_offset): Search ordered list; handle
	elements with repeat counts.
	(gfc_assign_data_value_range): New.
	* gfortran.h (struct gfc_data_value): Make repeat unsigned.
	(gfc_assign_data_value_range): Declare.
	* match.c (top_val_list): Extract repeat count into a temporary.
	* resolve.c (values): Make left unsigned.
	(next_data_value): Don't decrement left.
	(check_data_variable): Use gfc_assign_data_value_range.

2004-08-22  Tobias Schlueter  <>

	* trans-const.c, trans-decl.c, trans-expr.c: Spelling fixes.

2004-08-22  Tobias Schlueter  <>

	* check.c (gfc_check_reduction): Rename to ...
	(check_reduction): ... this. Make static. Don't check type of
	first argument.
	(gfc_check_minval_maxval, gfc_check_prodcut_sum): New functions.
	* intrinsic.c (add_functions): Change MAXVAL, MINVAL, PRODUCT and
	SUM to use new check functions.
	(check_specific): Change logic to call new functions.
	* intrinsic.h (gfc_check_minval_maxval, gfc_check_product_sum):
	Add prototypes.
	(gfc_check_reduction): Remove prototype.

2004-08-20  Paul Brook  <>
	Canqun Yang  <>

	PR fortran/17077
	* trans-array.c (gfc_conv_array_parameter): Pass correct pointer
	for automatic arrays.
	* trans-types.c (gfc_get_nodesc_array_type): Add comment.

2004-08-19  Tobias Schlueter  <>
	(Port from g95)

	PR fortran/17074
	* match.c (match_simple_forall, match_simple_where): Forward-declare.
	(gfc_match_if): Order statement list alphabetically, add WHERE and
	FORALL, remove double PAUSE.
	(gfc_match_simple_where, match_forall_header,
	gfc_match_simple_forall): New functions.
	(gfc_match_forall): Use match_forall_header.

2004-08-19  Paul Brook  <>

	PR fortran/17091
	* gfortran.h (gfc_access): Give ACCESS_UNKNOWN value 0.
	* symbol.c (gfc_clear_attr): Use memset.

2004-08-19  Paul Brook  <>

	PR fortran/14976
	PR fortran/16228
	* data.c (assign_substring_data_value): Remove.
	(create_character_intializer): New function.
	(gfc_assign_data_value): Track the typespec for the current
	subobject.  Use create_character_intializer.

2004-08-19  Erik Schnetter  <>

	PR fortran/16946
	* check.c (gfc_check_reduction): New function.
	(gfc_check_minval_maxval): Removed.
	(gfc_check_product): Removed.
	(gfc_check_sum): Removed.
	* intrinsic.h: Add/remove declarations for these.
	* gfortran.h: Add field f3red to union gfc_check_f.
	* intrinsic.c (add_sym_3red): New function.
	(add_functions): Register maxval, minval, product, and sum intrinsics
	through add_sym_3red.
	(check_specific): Handle f3red union field.
	* iresolve.c: Whitespace change.

2004-08-18  Paul Brook  <>

	* trans-types.c (gfc_sym_type): Use pointer types for optional args.

2004-08-18  Victor Leikehman  <>

	PR fortran/13278
	* trans-io.c (transfer_namelist_element): New. Recursively handle
	derived-type variables.  Pass string lengths.
	(build_dt): Code moved to build_namelist, with some
	changes and additions.
	(gfc_build_io_library_fndecls): Declare the fifth
	argument in st_set_nml_var_char -- string_length.

2004-08-17  Paul Brook  <>
	Tobias Schlueter  <>

	PR fortran/13082
	* decl.c (get_proc_name): Update mystery comment.
	(gfc_match_entry): Check for errors earlier.  Add entry point to list.
	* dump-parse-tree.c (gfc_show_code_node): Print EXEC_ENTRY nodes.
	* gfortran.h (symbol_attribute): Add entry_master.  Document entry.
	(struct gfc_entry_list): Define.
	(gfc_get_entry_list): Define.
	(struct gfc_namespace): Add refs and entries.
	(enum gfc_exec_op): Add EXEC_ENTRY.
	(struct gfc_code): Add ext.entry.
	* module.c (ab_attribute, attr_bits): Remove AB_ENTRY.
	(mio_symbol_attribute): Don't save/reture addr->entry.
	(mio_namespace_ref): Refcount namespaces.
	* parse.c (accept_statement): Handle ST_ENTRY.
	(gfc_fixup_sibling_symbols): Mark symbol as referenced.
	(parse_contained): Fixup sibling references to entry points
	after parsing the procedure body.
	* resolve.c (resolve_contained_fntype): New function.
	(merge_argument_lists, resolve_entries): New functions.
	(resolve_contained_functions): Use them.
	(resolve_code): Handle EXEC_ENTRY.
	(gfc_resolve): Call resolve_entries.
	* st.c (gfc_free_statement): Handle EXEC_ENTRY.
	* symbol.c (gfc_get_namespace): Refcount namespaces.
	(gfc_free_namespace): Ditto.
	* trans-array.c (gfc_trans_dummy_array_bias): Treat all args as
	optional when multiple entry points are present.
	* trans-decl.c (gfc_get_symbol_decl): Remove incorrect check.
	(gfc_get_extern_function_decl): Add assertion.  Fix coment.
	(create_function_arglist, trans_function_start, build_entry_thunks):
	New functions.
	(gfc_build_function_decl): Rename ...
	(build_function_decl): ... to this.
	(gfc_create_function_decl): New function.
	(gfc_generate_contained_functions): Use it.
	(gfc_trans_entry_master_switch): New function.
	(gfc_generate_function_code): Use new functions.
	* trans-stmt.c (gfc_trans_entry): New function.
	* trans-stmt.h (gfc_trans_entry): Add prototype.
	* trans-types.c (gfc_get_function_type): Add entry point argument.
	* trans.c (gfc_trans_code): Handle EXEC_ENTRY.
	(gfc_generate_module_code): Call gfc_create_function_decl.
	* trans.h (gfc_build_function_decl): Remove.
	(gfc_create_function_decl): Add prototype.

2004-08-15  Andrew Pinski  <>

	PR fortran/17030
	* f95-lang.c (gfc_init_builtin_functions): Initialize the builtins
	for cabs{,f} and copysign{,f}.
	* trans-decl.c (gfor_fndecl_math_cabsf): Delete.
	(gfor_fndecl_math_cabs): Delete.
	(gfor_fndecl_math_sign4): Delete.
	(gfor_fndecl_math_sign8): Delete.
	(gfc_build_intrinsic_function_decls): Remove the
	initializing of cabs{,f} and copysign{,f} functions.
	* trans-intrinsic.c (gfc_conv_intrinsic_abs): Use the builtins
	instead of the functions definitions.
	(gfc_conv_intrinsic_sign): Likewise.
	* trans.h (gfor_fndecl_math_cabsf): Delete.
	(gfor_fndecl_math_cabs): Delete.
	(gfor_fndecl_math_sign4): Delete.
	(gfor_fndecl_math_sign8): Delete.

2004-08-15  Nathan Sidwell  <>

	* trans-array.c (gfc_trans_array_constructor_value): Use
	* trans-const.c (gfc_build_string_const,
	gfc_init_constants, gfc_conv_mpz_to_tree,
	gfc_conv_constant_to_tree): Likewise.
	* trans-decl.c (gfc_get_symbol_decl): Likewise.
	* trans-intrinsic.c (gfc_conv_intrinsic_ibits,
	gfc_conv_intrinsic_len, prepare_arg_info): Likewise.
	* trans-io.c (add_case, set_error_locus, build_dt,
	transfer_expr): Likewise.
	* trans-stmt.c (gfc_trans_label_assign, gfc_trans_pause,
	gfc_trans_stop, gfc_trans_character_select): Likewise.
	* trans-types.c (gfc_init_types, gfc_get_dtype): Likewise.
	* trans.c (gfc_trans_runtime_check): Likewise.

2004-08-14  Paul Brook  <>

	* trans-decl.c (gfc_build_function_decl): Remove dead code.

2004-08-14  Paul Brook  <>

	* trans-arry.c (gfc_trans_auto_array_allocation): Remove unused var.

2004-08-13  Tobias Schlueter  <>

	* gfortran.h: Add comments.
	* parse.c (parse_contained): Fix comment typo.
	* resolve.c (was_declared): Ditto.
	* symbol.c: Ditto.

2004-08-11  Paul Brook  <>

	PR fortran/16917
	* intrinsic.c (add_functions): Add dfloat as an alias for dble.

2004-08-10  Richard Henderson  <>

	* f95-lang.c (gfc_init_builtin_functions): Remove
	 __builtin_stack_alloc, add __builtin_alloca.
	* trans-array.c (gfc_trans_auto_array_allocation): Use DECL_EXPR.
	* trans-decl.c (gfc_trans_auto_character_variable): Likewise.

2004-08-10  Paul Brook  <>

	* trans-io.c (transfer_expr): Handle pointters.

2004-08-10  Paul Brook  <>

	PR fortran/16919
	* trans-array.c (gfc_add_loop_ss_code): Handle GFC_SS_COMPONENT.
	(gfc_conv_array_index_offset): Allow "temporary" with nonzero delta.
	(gfc_trans_preloop_setup, gfc_trans_scalarized_loop_boundary):
	(gfc_conv_ss_startstride): Ditto.  Set ss->shape.
	(gfc_conv_loop_setup): Tweak commends. Remove dead code.
	Use ss->shape.
	(gfc_conv_array_initializer): Call specific initializer routines.
	* trans-expr.c (gfc_trans_structure_assign): New function.
	(gfc_trans_subarray_assign): New function.
	(gfc_trans_subcomponent_assign): New fucntion
	(gfc_conv_structure): Use them.
	* trans.h (gfc_ss_type): Add GFC_SS_COMPONENT.
	(gfc_ss): Add shape.

2004-08-08  Victor Leikehman  <>

	* simplify.c (gfc_simplify_shape): Bugfix.
	* expr.c (gfc_copy_shape_excluding): New function.
	* gfortran.h (gfc_get_shape): Bugfix.
	(gfc_copy_shape_excluding): Added declaration.
	* iresolve.c (gfc_resolve_all, gfc_resolve_any, gfc_resolve_count,
	gfc_resolve_cshift, gfc_resolve_eoshift, gfc_resolve_lbound,
	gfc_resolve_ubound, gfc_resolve_transpose): Added compile
	time resolution of shape.

2004-08-06  Janne Blomqvist  <>

	* intrinsic.c (add_subroutines): Add getenv and
	get_environment_variable. (add_sym_5s): New function.
	* intrinsic.h (gfc_resolve_get_environment_variable): Add
	* iresolve.c (gfc_resolve_get_environment_variable): New

2004-08-06  Feng Wang  <>

	* f95-lang.c (gfc_init_builtin_functions): Fix the number of
	__builtin_pow[f] arguments.

2004-08-06  Steven G. Kargl  <>

	* arith.c: Add #define for model numbers.  Remove global GMP variables.
	cosine,arctangent,hypercos,hypersine ): Remove.
	(gfc_mpfr_to_mpz,gfc_set_model_kind,gfc_set_model): New functions.
	gfc_check_real_range, gfc_constant_result, gfc_range_check,
	gfc_arith_uminus,gfc_arith_plus, gfc_arith_minus, gfc_arith_times,
	gfc_complex2int,gfc_complex2real,gfc_complex2complex): Convert GMP
	to MPFR, use new functions.
	* arith.h: Remove extern global variables.
	(natural_logarithm,common_logarithm,exponential, sine, cosine,
	arctangent,hypercos,hypersine): Remove prototypes.
	(arctangent2): Update prototype from GMP to MPFR.
	(gfc_mpfr_to_mpz, gfc_set_model_kind,gfc_set_model): Add prototypes.
	* dump-parse-tree.c (gfc_show_expr): Convert GMP to MPFR.
	* expr.c (free_expr0,gfc_copy_expr): Convert GMP to MPFR.
	* gfortran.h (GFC_REAL_BITS): Remove.
	(arith): Add ARITH_NAN.
	Include mpfr.h.  Define GFC_RND_MODE.
	(gfc_expr): Convert GMP to MPFR.
	* module.c: Add arith.h, correct type in comment.
	(mio_gmp_real): Convert GMP to MPFR.
	(mio_expr):  Use gfc_set_model_kind().
	* primary.c:  Update copyright date with 2004.
	(match_real_constant,match_const_complex_part): Convert GMP to MPFR.
	* simplify.c: Remove global GMP variables
	gfc_simplify_init_1,gfc_simplify_done_1):  Convert GMP to MPFR.
	Use new functions.
	* trans-const.c (gfc_conv_mpfr_to_tree): Rename from
	gfc_conv_mpf_to_tree.  Convert it to use MPFR
	(gfc_conv_constant_to_tree): Use it.
	* trans-const.h: Update prototype for gfc_conv_mpfr_to_tree().
	* trans-intrinsic.c: Add arith.h, remove gmp.h
	(gfc_conv_intrinsic_aint,gfc_conv_intrinsic_mod): Convert GMP to MPFR.

2004-08-06  Victor Leikehman  <>
	Paul Brook  <>

	* trans-array.c (gfc_trans_allocate_array_storage,
	gfc_trans_allocate_temp_array, gfc_add_loop_ss_code,
	gfc_conv_loop_setup): For functions, if the shape of the result
	is not known in compile-time, generate an empty array descriptor for
	the result and let the callee to allocate the memory.
	(gfc_trans_dummy_array_bias): Do nothing for pointers.
	(gfc_conv_expr_descriptor): Use function return values directly.
	* trans-expr.c (gfc_conv_function_call): Always add byref call
	insn to pre chain.
	(gfc_trans_pointer_assignment): Add comments.
	(gfc_trans_arrayfunc_assign): Don't chain on expression.

2004-08-01  Roger Sayle  <>

	* options.c (gfc_init_options): Don't warn about the use GNU
	extensions by default.
	(gfc_post_options): Warn about GNU extensions with -pedantic.
	(gfc_handle_option): Don't warn about GNU extensions with -std=gnu.

2004-07-30  Richard Henderson  <>

	* trans-expr.c (gfc_conv_expr_reference): Create a CONST_DECL

2004-07-25  Richard Henderson  <>

	* trans-decl.c (gfc_build_function_decl): Set DECL_ARTIFICIAL
	(gfc_generate_constructors): Likewise.

2004-07-18  Tobias Schlueter  <>

	PR fortran/16465
	* lang.opt (ffixed-line-length-none, ffixed-line-length-): New
	(ffixed-line-length-80, ffixed-line-length-132): Remove.
	* options.c (gfc_handle_options): Deal with changed options.
	* scanner.c (load_line): Change second arg to 'char **',
	allocate if pointing to NULL. Keep track of buffer's length.
	Adapt buffer size to overlong lines. Pad lines to full length
	in fixed form.
	(load_file): Adapt to new interface of load_line.

2004-07-17  Joseph S. Myers  <>

	* trans.h (builtin_function): Declare.

2004-07-16  Tobias Schlueter  <>

	PR fortran/16404
	(parts ported from g95)
	* parse.h (gfc_state_data): New field do_variable.
	(gfc_check_do_variable): Add prototype.
	* parse.c (push_state): Initialize field 'do_variable'.
	(gfc_check_do_variable): New function.
	(parse_do_block): Remember do iterator variable.
	(parse_file): Initialize field 'do_variable'.
	* match.c (gfc_match_assignment, gfc_match_do,
	gfc_match_allocate, gfc_match_nullify, gfc_match_deallocate):
	Add previously missing checks.
	(gfc_match_return): Reformat error message.
	* io.c (match_out_tag): New function.
	(match_open_element, match_close_element,
	match_file_element, match_dt_element): Call match_out_tag
	instead of match_vtag where appropriate.
	(match_io_iterator, match_io_element): Add missing check.
	(match_io): Reformat error message.
	(match_inquire_element): Call match_out_tag where appropriate.

	* parse.c (gfc_check_do_variable): Fix error locus.

2004-07-15  Tobias Schlueter  <>

	PR fortran/15129
	* trans-decl.c (gfc_build_function_decl): Create a new chardecl
	for every assumed length character dummy argument.

	PR fortran/15140
	* trans-decl.c (gfc_trans_deferred_vars): Remove bogus assertion.

	PR fortran/13792
	* simplify.c (gfc_simplify_bound): Copy the bound expression.

2004-07-15  Tobias Schlueter  <>

 	PR fortran/15324
	* trans-array.c gfc_trans_g77_array,
	gfc_trans_dummy_array_bias): Don't call gfc_trans_string_init
	for assumed length characters.
	(gfc_conv_expr_descriptor): Set se->string_length if dealing
	with a character expression.
	(gfc_cvonv_array_parameter): Pass string length when passing
	character array according to g77 conventions.

2004-07-12  Paul Brook  <>

	* expr.c (gfc_check_assign_symbol): Handle pointer assignments.
	* trans-array.c (gfc_trans_auto_array_allocation): Remove
	initialization code.
	* trans-common.c (create_common): Use gfc_conv_initializer.
	* trans-decl.c (gfc_get_symbol_decl): Use gfc_conv_initializer.
	* trans-expr.c (gfc_conv_initializer): New function.
	(gfc_conv_structure): Use it.
	* trans.h (gfc_conv_initializer): Add prototype.

2004-07-11  Paul Brook  <>

	PR fortran/15986
	* parse.c (gfc_fixup_sibling_symbols): Also look for untyped
	(parse_contained): Mark contained symbols as referenced.

2004-07-11  Tobias Schlueter  <>

	PR fortran/16455
	* module.c (gfc_dump_module, gfc_use_module): Print locus
	when opening of module file fails.

	PR fortran/16404
	* io.c (match_io): Flag 'WRITE(...), ...' as extension.

	PR fortran/16404
	* match.c (gfc_match_program): A program name is obligatory.
	(gfc_match_return): RETURN in main program is an extension.
	(gfc_match_block_data): A space is required before a block data

	PR fortran/16433
	* primary.c (match_boz_constant): Call gfc_notify_std only if
	we actually have a non-standard boz-literal-constant.

	PR fortran/15754
	* expr.c (gfc_check_assign): Print ranks if incompatible. Issue
	warning if assigning NULL().

2004-07-11  Joseph S. Myers  <>

	* f95-lang.c (set_block): Remove.
	(gfc_clear_binding_stack): New.
	(struct binding_level): Remove block_created_by_back_end.
	(clear_binding_level): Likewise.
	(poplevel): Don't handle block_created_by_back_end.

2004-07-10  Tobias Schlueter  <>

	* trans-decl.c (gfc_create_module_variable): Nothing to do if
	symbol is in common, because we ...
	(gfc_generate_module_vars): Call gfc_trans_common.

2004-07-10  Paul Brook  <>

	* trans-array.c (gfc_build_null_descriptor): New function.
	(gfc_trans_static_array_pointer): Use it.
	* trans-array.h (gfc_build_null_descriptor): Add prototype.
	* trans-expr.c (gfc_conv_structure): Handle array pointers.

2004-07-10  Tobias Schlueter  <>

	PR fortran/16336
	* decl.c (gfc_match_save): Use-associated common block
	doesn't collide.
	* gfortran.h (gfc_common_head): Add new field 'name'.
	Fix typo in comment after #endif.
	* match.c (gfc_get_common): Add new argument from_common,
	mangle name if flag is set, fill in new field in structure
	(match_common): Set new arg in call to gfc_get_common,
	use-associated common block doesn't collide.
	* match.h (gfc_get_common): Adapt prototype.
	* module.c (load_commons): Set new arg in call to
	* symbol.c (free_common_tree): New function.
	(gfc_free_namespace): Call new function.
	* trans-common.c (several functions): Remove argument
	'name', use name from gfc_common_head instead.

2004-07-10  Tobias Schlueter  <>

	* expr.c (gfc_check_pointer_assign): Verify that rank of the LHS
	and RHS match. Return early if the RHS is NULL().

	PR fortran/16336
	* match.c (match_common): Fix error reporting for used common.

	PR fortran/15969
	* trans-expr.c (gfc_conv_structure): Handle initialization
	of scalar pointer components.

	* parse.c (decode_statement): Fix matching of BLOCK DATA.

	* trans-decl.c (generate_local_decl): Remove workaround obsoleted
	by fix for PR 15481.

2004-07-10  Tobias Schlueter  <>

	* trans-common.c: Fix whitespace issues, make variable names
	more readable.
	(create_common): Additionally, make loop logic more obvious.

2004-07-10  Tobias Schlueter  <>
	Paul Brook  <>

	PR fortran/13415
	* trans-common.c (calculate_length): Remove ...
	(get_segment_info): Merge into here.  Save field type.
	(build_field): Use saved type.
	(create_common, new_condition, new_segment, finish_equivalences):
	Use new get_segment_info.
	* trans-types.c: Update comment.

2004-07-09  Tobias Schlueter  <>

	PR fortran/14077
	* moduele.c (mio_symbol): Don't I/O initial values unless
	symbol is a parameter.

2004-07-09  Tobias Schlueter  <>

	PR fortran/13201
	* resolve.c (resolve_symbol): Verify that the shape of a
	parameter array is not only explicit, but also constant.
	* array.c (gfc_is_compile_time_shape): New function.
	* gfortran.h (gfc_is_compile_time_shape): Add prototype.

2004-07-09  Tobias Schlueter  <>

	PR fortran/15481
	PR fortran/13372
	PR fortran/13575
	PR fortran/15978
	* module.c (write_symbol, write_symtree): Remove workaround.
	* primary.c (match_actual_arglist): Enhance comment.
	(gfc_match_rvalue): Handle function call with first argument
	a keyword argument correctly.
	* resolve.c (resolve_symbol): Change call to
	gfc_set_default_type to issue error if no implicit type
	can be found.
	* trans-decl.c (gfc_create_module_variable): Remove workaround.

2004-07-08  Paul Brook  <>

	* intrinsic.c (add_sym_4s): New function.
	(add_subroutines): Change gfc_add_sym_? to gfc_add_sym_?s.

2004-07-04  Janne Blomqvist  <>
	Paul Brook  <>

	PR fortran/15280
	PR fortran/15665
	* gfortran.h (enum gfc_generic_isym_id): Add GFC_ISYM_IARGC and
	* intrinsic.c (add_functions):  Identify iargc.  Add
	(add_subroutines): Resolve getarg.  Add get_command and
	* intrinsic.h (gfc_resolve_getarg, gfc_resolve_get_command,
	gfc_resolve_get_command_argument): Add prototypes.
	* iresolve.c (gfc_resolve_getarg, gfc_resolve_get_command,
	gfc_resolve_get_command_argument): New functions.
	* trans-decl.c (gfor_fndecl_iargc): New variable.
	(gfc_build_intrinsic_function_decls): Set it.
	* trans-intrinsic.c (gfc_conv_intrinsic_iargc): New function.
	(gfc_conv_intrinsic_function): Use it.
	* trans.h (gfor_fndecl_iargc): Declare.

2004-07-04  Matthias Klose  <>

	* Generate and install gfortran man page.
	* invoke.texi: Remove extra '@c man end'.

2004-07-04  Richard Henderson  <>

	* f95-lang.c (gfc_mark_addressable): Don't put_var_into_stack.

2004-07-04  Paul Brook  <>

	* decl.c (gfc_match_implicit_range): Don't use typespec.
	(gfc_match_implicit): Handle character selectors.
	* gfortran.h (gfc_set_implicit): Remove prototype.
	(gfc_add_new_implicit_range, gfc_merge_new_implicit): Update.
	* parse.c (accept_statement): Don't call gfc_set_implicit.
	* symbol.c (new_ts): Remove.
	(gfc_set_implicit_none): Use same loop bounds as other functions.
	(gfc_set_implicit): Remove.
	(gfc_clear_new_implicit, gfc_add_new_implicit_range): Only set flags.
	(gfc_merge_new_implicit): Combine with gfc_set_implicit.

2004-06-30  Richard Henderson  <>

	* match.c (var_element): Remove unused variable.

	* trans-decl.c (gfc_generate_function_code): Don't set
	(gfc_generate_constructors): Likewise.

2004-06-30  Richard Henderson  <>

	* trans-decl.c (gfc_generate_function_code): Don't set
	(gfc_generate_constructors): Likewise.

2004-06-30  Tobias Schlueter  <>

	PR fortran/16161
	* decl.c (gfc_match_type_spec): Rename second argument to
	'implicit_flag', reverse meaning. Don't match_char_spec if
	'implicit_flag' is set. Rename to ...
	(match_type_spec): ... this.
	(gfc_match_implicit_none, match_implicit_range): Move here
	from match.c.
	(gfc_match_implicit): Move here from match.c, try to
	match_char_len if match_implicit_range doesn't succeed for
	CHARACTER implicits. Call renamed fucntion match_type_spec.
	(gfc_match_data_decl, match_prefix): Call renamed function
	* match.c (gfc_match_implicit_none, match_implicit_range,
	gfc_match_implicit): Move to decl.c.
	* match.h (gfc_match_implicit_none, gfc_match_implicit):
	Move protoypes to section 'decl.c'.
	(gfc_match_type_spec): Remove prototype.

2004-06-29  Tobias Schlueter  <>

	* decl.c, interface.c, symbol.c, trans-common.c: Add 2004 to
	copyright years.

2004-06-29  Steven Bosscher  <>

	Make sure types in assignments are compatible.  Mostly mechanical.
	* trans-const.h (gfc_index_one_node): New define.
	* trans-array.c (gfc_trans_allocate_array_storage,
	gfc_trans_allocate_temp_array, gfc_trans_array_constructor_subarray,
	gfc_trans_array_constructor_value, gfc_trans_array_constructor,
	gfc_conv_array_ubound, gfc_conv_array_ref,
	gfc_trans_scalarized_loop_end, gfc_conv_section_startstride,
	gfc_conv_ss_startstride, gfc_conv_loop_setup, gfc_array_init_size,
	gfc_trans_array_bounds, gfc_trans_dummy_array_bias,
	gfc_conv_expr_descriptor, gfc_trans_deferred_array): Use the correct
	types in assignments, conversions and conditionals for expressions.
	* trans-expr.c (gfc_conv_expr_present, gfc_conv_substring,
	gfc_conv_unary_op, gfc_conv_cst_int_power, gfc_conv_string_tmp,
	gfc_conv_function_call, gfc_trans_pointer_assignment,
	gfc_trans_scalar_assign): Likewise.
	* trans-intrinsic.c (build_fixbound_expr, gfc_conv_intrinsic_bound,
	gfc_conv_intrinsic_anyall, gfc_conv_intrinsic_count,
	gfc_conv_intrinsic_minmaxloc, gfc_conv_intrinsic_btest,
	gfc_conv_intrinsic_singlebitop, gfc_conv_intrinsic_ishft,
	gfc_conv_intrinsic_ishftc, gfc_conv_intrinsic_strcmp,
	gfc_conv_allocated, gfc_conv_associated,
	gfc_conv_intrinsic_rrspacing, gfc_conv_intrinsic_trim): Likewise.
	* trans-io.c (set_string): Likewise.
	* trans-stmt.c (gfc_trans_do, gfc_trans_forall_loop,
	gfc_do_allocate, generate_loop_for_temp_to_lhs,
	generate_loop_for_rhs_to_temp, compute_inner_temp_size,
	compute_overall_iter_number, gfc_trans_assign_need_temp,
	gfc_trans_pointer_assign_need_temp, gfc_trans_forall_1,
	gfc_evaluate_where_mask, gfc_trans_where_assign,
	gfc_trans_where_2): Likewise.
	* trans-types.c (gfc_get_character_type, gfc_build_array_type,
	gfc_get_nodesc_array_type, gfc_get_array_type_bounds): Likewise.

	* trans.c (gfc_add_modify_expr): Add sanity check that types
	for the lhs and rhs are the same for scalar assignments.

2004-06-29  Tobias Schlueter  <>

	* dump-parse-tree.c (show_common): New function.
	(gfc_show_namespace): Show commons.

2004-06-29  Tobias Schlueter  <>
	Andrew Vaught  <>

	PR fortran/13249
	PR fortran/15481
	* decl.c (gfc_match_save): Adapt to new common structures,
	don't allow saving USE-associated common.
	* dump-parse-tree (gfc_show_attr): (saved_)common are not
	symbol attributes any longer.
	(gfc_show_symbol): Don't show old-style commons any longer.
	(gfc_show_namespace): Adapt call to gfc_traverse_symtree to new
	* gfortran.h (symbol_attribute): Remove common and saved_common
	(gfc_symbol): Remove common_head element.
	(gfc_common_head): New struct.
	(gfc_get_common_head): New macro.
	(gfc_symtree): Add field 'common' to union.
	(gfc_namespace): Add field 'common_root'; change type of field
	'blank_common' to blank_common.
	(gfc_add_data): New prototype.
	(gfc_traverse_symtree): Expect a symtree as first argument
	instead of namespace.
	* match.c (gfc_get_common): New function.
	(match_common_name): Change to take char * as argument, adapt,
	fix bug with empty name.
	(gfc_match_common): Adapt to new data structures. Disallow
	redeclaration of USE-associated COMMON-block. Fix bug with
	empty common.
	(var_element): Adapt to new common structures.
	* match.h (gfc_get_common): Declare.
	* module.c: Add 2004 to copyright years, add commons to module
	file layout description.
	(ab_attribute, attr_bits, mio_symbol_attributes): Remove code
	for removed attributes.
	(mio_symbol): Adapt to new way of storing common relations.
	(load_commons): New function.
	(read_module): Skip common list on first pass, load_commons at
	(write_commons): New function.
	(write_module): Call write_commons().
	* symbol.c (gfc_add_saved_comon, gfc_add_common): Remove
	functions related to removed attributes.
	(gfc_add_data): New function.
	(gfc_clear_attr): Don't set removed attributes.
	(gfc_copy_attr): Don't copy removed attributes.
	(traverse_symtree): Remove.
	(gfc_traverse_symtree): Don't traverse symbol
	tree of the passed namespace, but require a symtree to be passed
	instead. Unify with traverse_symtree.
	(gfc_traverse_ns): Call gfc_traverse_symtree according to new
	(save_symbol): Remove setting of removed attribute.
	* trans-common.c (gfc_sym_mangled_common_id): Change to
	take 'char *' argument instead of 'gfc_symbol'.
	(build_common_decl, new_segment, translate_common): Adapt to new
	data structures, add new
	argument name.
	(create_common): Adapt to new data structures, add new
	argument name. Fix typo in intialization of derived types.
	(finish_equivalences): Add second argument in call to
	(named_common): take 'gfc_symtree' instead of 'gfc_symbol'.
	(gfc_trans_common): Adapt to new data structures.
	* trans-decl.c (gfc_create_module_variables): Remove test for
	removed attribute.

2004-06-29  Tobias Schlueter  <>

	* io.c: Add 2004 to copyright years.

2004-06-29  Tobias Schlueter  <>
	Andrew Vaught  <>

	* gfortran.h (gfc_gsymbol): New typedef.
	(gfc_gsym_root): New variable.
	(gfc_get_gsymbol, gfc_find_gsym): New prototypes.
	* parse.c (global_used): New function.
	(parse_block_data): Check for double empty BLOCK DATA,
	use global symbol table.
	(parse_module): Use global symbol table.
	(add_global_procedure, add_global_program): New functions.
	(gfc_parse_file): Use global symbol table.
	* symbol.c (gfc_gsym_root): New variable.
	(gfc_find_gsym, gsym_compare, gfc_get_gsymbol): New

2004-06-29  Tobias Schlueter  <>

	* module.c (mio_gmp_real): Correct writing of negative numbers.

2004-06-29  Tobias Schlueter  <>

	PR fortran/15963
	* expr.c (check_intrinsic_op): Allow comparison of characters.
	Make logic easier.

2004-06-26  Tobias Schlueter  <>
	Andrew Vaught  <>

	* decl.c (contained_procedure): New function.
	(match_end): Verify correctness of END STATEMENT in
	all cases.

2004-06-26  Tobias Schlueter  <>
	Andrew Vaught  <>

	PR fortran/15190
	* decl.c (gfc_match_type_spec), io.c (match_io), parse.c
	(decode_statement): Enforce required space in free-form.

2004-06-22  Richard Kenner  <>

	* trans-array.c (gfc_conv_descriptor_data): Add operand
	(gfc_conv_descriptor_offset, gfc_conv_descriptor_dtype): Likewise.
	(gfc_conv_descriptor_dimension, gfc_conv_descriptor_stride): Likewise.
	(gfc_conv_descriptor_lbound, gfc_conv_descriptor_ubound): Likewise.
	* trans-common.c (create_common): Likewise.
	* trans-expr.c (gfc_conv_component_ref): Likewise.
	* trans-io.c (set_parameter_value): Likewise.
	(set_parameter_ref, set_string, set_flag, io_result): Likewise.
	(transfer_expr): Likewise.
	* trans-decl.c (gfc_trans_auto_character_variable):
	Set up to get DECL_SIZE and DECL_SIZE_UNIT gimplified.
	(gfc_gimplify_function): New function.
	(gfc_generate_function-code): Properly handle nested functions.
	* trans.c (gfc_build_array_ref): Add two new operands for ARRAY_REF.

2004-06-22  Janne Blomqvist  <>

	PR fortran/15750
	* io.c (gfc_match_inquire): Bugfix for iolength related stuff.
	(gfc_resolve_inquire): Resolve the iolength tag.  Return
	SUCCESS at end of function if no failure has occured.
	* resolve.c (resolve_code): Resolve if iolength is encountered.
	* trans-io.c: (ioparm_iolength, iocall_iolength,
	iocall_iolength_done): New variables.
	(last_dt): Add IOLENGTH.
	(gfc_build_io_library_fndecls ): Set iolength related variables.
	(gfc_trans_iolength): Implement.
	(gfc_trans_dt_end): Treat iolength as a third form of data transfer.

2004-06-21  Tobias Schlueter  <

	PR fortran/15511
	* scanner.c (load_line): Don't truncate preprocessor lines.
	Reformat error message.
	(preprocessor_line): Issue warning in case of malformed
	preprocessor line.

2004-06-21  Tobias Schlueter  <>

	* resolve.c (resolve_symbol): Add comment in function body.
	(check_data_variable): Change type of mark to ar_type, adapt code

2004-06-21  Tobias Schlueter  <>

	* array.c (gfc_insert_constructor): Avoid redundant call to
	mpz_comp. Add 2004 to copyright years.

2004-06-21  Joseph S. Myers  <>

	* trans.h (stmtblock_t): Change has_scope to unsigned int.

2004-06-20  Steven G. Kargl  <>

	* arith.c (gfc_range_check): correct complex underflow.

2004-06-15  Tobias Schlueter  <>

	PR fortran/15962
	* match.c (match_case_selector): Call gfc_match_init_expr
	instead of gfc_match_expr.
	* resolve.c (validate_case_label_expr): No need to check for
	constant, since it wouldn't have been matched with the fix to

2004-06-14  Tobias Schlueter  <>

	PR fortran/15211
	* trans-intrinsic.c (gfc_conv_intrinsic_len): Deal with arrays
	of strings.

2004-06-14  Tobias Schlueter  <>

	PR fortran/15510
	* trans-deecl.c (generate_local_decl): Do not issue warning for
	unused variables if they're use associated.

2004-06-14  Tobias Schlueter  <>
	Andrew Vaught  <>

	PR fortran/14928
	* gfortran.h (gfc_check_f): Add new field f3ml.
	* check.c (gfc_check_minloc_maxloc): Take argument list instead
	of individual arguments, reorder if necessary.
	* intrinsic.h (gfc_check_minloc_maxloc): ... adapt prototype.
	* intrinsic.c (add_sym_3ml): New function.
	(add_functions): Change to add_sym_3ml for MINLOC, MAXLOC.
	(check_specific): Catch special case MINLOC, MAXLOC.

2004-06-14  Paul Brook  <>

	* intrinsic.c (add_sym_2s): Use correct function types.

2004-06-12  Tobias Schlueter  <>

	* (F95_OBJS, F95_PARSER_OBJS): Alphabetize.  Move data.c
	* data.c (gfc_get_section_index):  Remove dependency on trans.h.

2004-06-12  Steven G. Kargl  <>

	* check.c (gfc_check_second_sub, gfc_check_irand, gfc_check_rand
	gfc_check_srand, gfc_check_etime, gfc_check_etime_sub): New functions.
	* gfortran.h (gfc_generic_isym_id): New symbols GFC_ISYM_ETIME,
	* trans-intrinsic.c:  Use symbols.
	* intrinsic.c (add_sym_2s): New function.
	* intrinsic.c: Add etime, dtime, irand, rand, second, srand.
	* intrinsic.h: Function prototypes.
	* iresolve.c (gfc_resolve_etime_sub, gfc_resolve_second_sub
	gfc_resolve_srand):  New functions.

2004-06-12  Tobias Schlueter  <>

	PR fortran/14957
	* decl.c (gfc_match_end): Require END {SUBROUTINE|FUNCTION} for
	contained procedure.

2004-06-12  Tobias Schlueter  <>

	PR fortran/12841
	* interface.c (compare_parameter, compare_actual_formal): Don't
	check types and array shapes for NULL()
	* trans-expr.c (conv_function_call): No double indirection for

2004-06-09  Toon Moene  <>

	* trans-expr.c (gfc_conv_cst_int_power): Compute
	x**(-n) by converting it to (1/x)**n instead of

2004-06-09  Tobias Schlueter  <>

	PR fortran/13372
	* module.c (write_symbol, write_symtree): Don't write symbols
	wrongly added to namespace.
	* trans-decl.c (gfc_create_module_variable): Don't create a
	backend decl for a symbol incorrectly added to namespace.

2004-06-09  Tobias Schlueter  <>

	PR fortran/13201
	* resolve.c (resolve_symbol): Verify that parameter array has an
	explicit shape. Fix typos and coding style issues in surrounding

2004-06-05  Tobias Schlueter  <>

	PR fortran/15478
	* gfortran.texi: The documentation doesn't contain infomration on
	how to report bugs, and shouldn't, so remove the line which
	says it does.

2004-06-05  Tobias Schlueter  <>

	* intrinsic.c (sort_actual): Keep track of type of missing
	arguments. (Missing from previous commit.)

2004-06-03  Tobias Schlueter  <>

	* gfortran.h (gfc_actual_arglist): New field missing_arg_type.
	* interface.c (compare_actual_formal): Keep type of omitted
	optional arguments.
	* trans-expr.c (gfc_conv_function_call): Add string length
	argument for omitted string argument.

2004-06-03  Paul Brook  <>

	* trans.c (gfc_finish_block, gfc_add_expr_to_block): Build statement
	lists instead of compound expr chains.
	(gfc_trans_code): Annotate statement lists.

2004-06-03  Tobias Schlueter  <>

	* trans-array.c: Fix spelling in comments.

2004-06-02  Tobias Schlueter  <>

	PR fortran/15557
	* data.c (assign_substring_data_value): New function.
	(gfc_assign_data_value): Call the new function if we're dealing
	with a substring LHS.

2004-06-01  Tobias Schlueter  <>

	PR fortran/15477
	* gfortran.h (GFC_VERSION): Remove.
	* gfortran.texi (version-gfortran): Remove, replace by version-GCC
	where used.

2004-05-31  Tobias Schlueter  <>

	* trans-types.c: Fix spelling & layout in comments.

2004-05-30  Tobias Schlueter  <>

	PR fortran/14067
	* trans-const.c (gfc_conv_string_init): Allow variable string
	length lower than initialization string length.

2004-05-30  Paul Brook  <>

	PR fortran/15620
	* trans-decl.c (gfc_shadow_sym, gfc_restore_sym): New functions.
	* trans-expr.c (gfc_trans_string_copy): New function.
	(gfc_conv_statement_function): Use them.  Create temp vars.  Enforce
	character lengths.
	(gfc_conv_string_parameter): Use gfc_trans_string_copy.
	* trans-stmt.c (gfc_trans_forall_1): Use gfc_{shadow,restore}_sym.
	* trans.h (struct gfc_saved_var): Define.
	(gfc_shadow_sym, gfc_restore_sym): Add prototypes.

2004-05-30  Steven G. Kargl  <>

	* iresolve.c (gfc_resolve_random_number): Clean up conditional.

2004-05-29  Steven G. Kargl  <>

	* simplify.c (gfc_simplify_log): Remove useless line of code.

2004-05-29  Paul Brook  <>

	* trans-common.c (find_equivalence): Find multiple rules.

2004-05-27  Tobias Schlueter  <>

	* gfortran.h (gfc_current_locus, gfc_set_locus): Remove.
	(gfc_current_locus): Declare new global variable.
	* scanner.c (gfc_current_locus, gfc_set_locus): Remove.
	(gfc_current_locus1): Rename ...
	(gfc_current_locus): ... to this.
	(gfc_at_eof, gfc_at_bol, gfc_at_eol, gfc_advance_line, next_char,
	skip_fixed_comments, skip_free_comments, gfc_next_char_literal,
	gfc_peek_char, gfc_gobble_whitespace, gfc_new_file): Use
	gfc_current_locus instead of gfc_current_locus1, gfc_set_locus()
	and gfc_current_locus(), respectively.
	* array.c (match_subscript, gfc_match_array_ref, match_array_list,
	match_array_cons_element, gfc_match_array_constructor):
	Read/modify gfc_current_locus instead of calling gfc_set_locus()
	and gfc_current_locus().
	* decl.c (gfc_match_null, variable_decl, gfc_match_kind_spec,
	match_attr_spec, gfc_match_function_decl, gfc_match_end,
	attr_decl1, gfc_match_save): Likewise.
	* error.c (error_print, gfc_internal_error): Likewise.
	* expr.c (gfc_int_expr, gfc_default_logical_kind): Likewise.
	* interface.c (gfc_add_interface): Likewise.
	* io.c (gfc_match_format, match_dt_format, match_dt_element,
	match_io_iterator, match_io): Likewise.
	* match.c (gfc_match_space, gfc_match_eos,
	gfc_match_small_literal_int, gfc_match_st_label,
	gfc_match_strings, gfc_match_name, gfc_match_iterator,
	gfc_match_char, gfc_match, gfc_match_assignment,
	gfc_match_pointer_assignment, gfc_match_if, gfc_match_do,
	gfc_match_nullify, gfc_match_call, match_implicit_range,
	gfc_match_implicit, gfc_match_data, match_case_selector,
	gfc_match_case, match_forall_iterator): Likewise.
	* matchexp.c (gfc_match_defined_op_name, next_operator,
	match_level_1, match_mult_operand, match_ext_mult_operand,
	match_add_operand, match_ext_add_operand, match_level_2,
	match_level_3, match_level_4, match_and_operand, match_or_operand,
	match_equiv_operand, match_level_5, gfc_match_expr): Likewise.
	* module.c (gfc_match_use, mio_array_ref, mio_expr): Likewise.
	* parse.c (match_word, decode_statement, next_free, next_fixed,
	add_statement, verify_st_order, parse_if_block, gfc_parse_file):
	* primary.c (match_digits, match_integer_constant,
	match_boz_constant, match_real_constant, match_substring,
	next_string_char, match_charkind_name, match_string_constant,
	match_logical_constant, match_const_complex_part,
	match_complex_constant, match_actual_arg, match_keyword_arg,
	gfc_match_actual_arglist, gfc_match_structure_constructor,
	gfc_match_rvalue, gfc_match_variable): Likewise.
	* st.c (gfc_get_code): Likewise.
	* symbol.c (check_conflict, check_used, check_done,
	duplicate_attr, add_flavor, gfc_add_procedure, gfc_add_intent,
	gfc_add_access, gfc_add_explicit_interface, gfc_add_type,
	gfc_add_component, gfc_reference_st_label, gfc_new_symbol): Likewise.

2004-05-26  Roger Sayle  <>

	* io.c (format_asterisk): Silence compiler warnings by correcting
	the number of elements of a "locus" initializer.

2004-05-25  Roger Sayle  <>

	PR fortran/13912
	* matchexp.c: Allow unary operators after arithmetic operators
	as a GNU extension.
	(match_ext_mult_operand, match_ext_add_operand): New functions.
	(match_mult_operand): Tweak to call match_ext_mult_operand.
	(match_add_operand): Tweak to call match_ext_mult_operand.
	(match_level_2): Rearrange to call match_ext_add_operand.

2004-05-25  Paul Brook  <>

	* expr.c (check_inquiry): Remove bogus tests.

2004-05-23  Paul Brook  <>

	PR fortran/13773
	* expr.c (restricted_args): Remove redundant checks/argument.
	(external_spec_function): Update to match.
	(restricted_intrinsic): Rewrite.

2004-05-23  Paul Brook  <>
	Victor Leikehman  <>

	* gfortran.h (struct gfc_symbol): Add equiv_built.
	* trans-common.c: Change int to HOST_WIDE_INT.  Capitalize error
	(current_length): Remove.
	(add_segments): New function.
	(build_equiv_decl): Create initialized common blocks.
	(build_common_decl): Always add decl to bindings.
	(create_common): Create initializers.
	(find_segment_info): Reformat to match coding conventions.
	(new_condition): Use add_segments.
	(add_condition, find_equivalence, add_equivalences): Move iteration
	inside functions.  Only process each segment once.
	(new_segment, finish_equivalences, translate_common): Simplify.

2004-05-23  Steven G. Kargl  <>

	* check.c (gfc_check_random_seed): Issue for too many arguments.

2004-05-22  Steven G. Kargl  <>

	* intrinsic.c (add_subroutines): Use add_sym_3s for random_seed.

2004-05-22  Paul Brook  <>

	* dump-parse-tree.c (gfc_show_equiv): New function.
	(gfc_show_namespace): Use it.

2004-05-22  Victor Leikehman  <>

	PR fortran/13249
	* symbol.c (gfc_add_common): Disable checks to work around other more
	fundamental inadequacies.

2004-05-22  Tobias Schlüter  <>

	* trans-decl.c (gfc_get_extern_function_decl): Set DECL_IS_PURE
	only for functions.
	(gfc_build_function_decl): Likewise.

2004-05-22  Steven G. Kargl  <>

	* check.c (gfc_check_system_clock): New function.
	* intrinsic.c (add_sym_3s): New function.
	(add_subroutines): Use it.
	* intrinsic.h (gfc_check_system_clock, gfc_resolve_system_clock):
	Add prototypes.
	* iresolve.c (gfc_resolve_system_clock): New function.

2004-05-22  Steven G. Kargl  <>

	* invoke.texi: Document -Wunderflow and spell check.
	* lang.opt: Add Wunderflow.
	* gfortran.h (gfc_option_t): Add warn_underflow option.
	* options.c (gfc_init_options, set_Wall): Use it.
	* primary.c (match_real_constant): Explicitly handle UNDERFLOW.
	* arith.c (gfc_arith_uminus, gfc_arith_plus, gfc_arith_minus,
	gfc_arith_times, gfc_arith_divide, gfc_arith_power, gfc_real2real,
	gfc_real2complex, gfc_complex2real, gfc_complex2complex): Ditto.
	* arith.c (common_logarithm): Fix typo in comment.

2004-05-21  Roger Sayle  <>

	* io.c (check_format): As a GNU extension, allow the comma after a
	string literal to be optional in a format.  Use gfc_notify_std to
	issue an error/warning as appropriate.

2004-05-21  Roger Sayle  <>

	* io.c (check_format): Use gfc_notify_std to determine whether to
	issue an error/warning for omitting the digits from the X format.

2004-05-20  Roger Sayle  <>

	* io.c (check_format): Allow the number before the X format to
	be optional when not -pedantic.

2004-05-18  Feng Wang  <>
	Paul Brook  <>

	* f95-lang.c (gfc_init_builtin_functions): Use vold_list_node.
	Create decls for __builtin_pow{,f}.
	* gfortran.h (PREFIX_LEN): Define.
	* trans-decl.c (gfor_fndecl_math_powi): Add.
	(gfor_fndecl_math_powf, gfor_fndecl_math_pow): Remove.
	(gfc_build_intrinsic_function_decls): Create decls for powi.
	* trans-expr.c (powi_table): Add.
	(gfc_conv_integer_power): Remove.
	(gfc_conv_powi): New function.
	(gfc_conv_cst_int_power): New function.
	(gfc_conv_power_op): Use new powi routines.
	* trans.h (struct gfc_powdecl_list): Add.
	(gfor_fndecl_math_powi): Add.
	(gfor_fndecl_math_powf, gfor_fndecl_math_pow): Remove.

2004-05-18  Tobias Schlueter  <>

	* trans.c, trans-decl.c: Fix comment typos.

2004-05-18  Tobias Schlueter  <>

	* trans-const.c (gfc_conv_mpf_to_tree): Fix typo.

2004-05-18  Steve Kargl  <>

	* arith.c (gfc_int2complex): Fix incorrect range checking.

2004-05-18  Paul Brook  <>

	PR fortran/13930
	* decl.c (add_init_expr_to_sym): Remove incorrect check.
	(default_initializer): Move to expr.c.
	(variable_decl): Don't assign default initializer to variables.
	* expr.c (gfc_default_initializer): Move to here.
	* gfortran.h (gfc_default_initializer): Add prototype.
	* resolve.c (resolve_symbol): Check for illegal initializers.
	Assign default initializer.

2004-05-17  Steve Kargl  <>

	* arith.c (gfc_arith_power): Complex number raised to 0 power is 1.

2004-05-17  Steve Kargl  <>

	* arith.c (gfc_real2complex): Range checking wrong part of complex

2004-05-16  Paul Brook  <>

	* options.c (gfc_handle_module_path_options): Fix buffer overrun.

2004-05-16  Paul Brook  <>

	* arith.c (gfc_range_check): Fix logic error.

2004-05-16  Steve Kargl  <>

	* arith.c: Fix comment typos.

2004-05-15  Tobias Schlueter  <>

	PR fortran/13742
	* decl.c (add_init_expr_to_sym): Verify that COMMON variable is
	not initialized in a disallowed fashion.
	* match.c (gfc_match_common): Likewise.
	(var_element): Verify that variable is not in the blank COMMON,
	if it is in a common.

2004-05-15  Joseph S. Myers  <>

	* (f95.generated-manpages): Remove.
	(f95.srcextra): New.
	(, fortran/, fortran/gfortran.dvi,
	f95.maintainer-clean): Generate info and dvi files in objdir/doc.
	(f95.dvi): Remove.
	(dvi): New.
	(f95.install-info): Remove.
	(install-info): New.

2004-05-15  Victor Leikehman  <>

	* decl.c (add_init_expr_to_sym): Check for variable size arrays.

2004-05-15  Tobias Schlueter  <>

	* primary.c (match_boz_constant): Use gfc_notify_std() for
	issuing a warning or an error.

2004-05-15  Tobias Schlueter  <>

	PR fortran/13826
	* primary.c (match_structure_constructor): Rename ...
	(gfc_match_structure_constructor): ... to this. Make non-static.
	(gfc_match_rvalue): Call renamed function.
	* match.h (gfc_match_structure_constructor): Declare.
	* match.c (gfc_match_data_constant): Handle structure

2004-05-15  Tobias Schlueter  <>

	PR fortran/13702
	(Port from g95)
	* gfortran.h (gfc_linebuf): New typedef.
	(linebuf): Remove.
	(gfc_file): Revamped, use new gfc_linebuf.
	(locus): Revamped, use new types.
	(gfc_current_file): Remove.
	(gfc_current_form, gfc_source_file): New global variables.
	* match.c (gfc_match_space, gfc_match_strings): Use
	gfc_current_form to find source form.
	* module.c (gfc_dump_module): Use gfc_source_file when printing
	module header.
	* error.c (show_locus, show_loci) Use new data structures to print
	* scanner.c (first_file, first_duplicated_file, gfc_current_file):
	(file_head, current_file, gfc_current_form, line_head, line_tail,
	gfc_current_locus1, gfc_source_file): New global variables.
	(gfc_scanner_init1): Set new global variables.
	(gfc_scanner_done1): Free new data structures.
	(gfc_current_locus): Return pointer to gfc_current_locus1.
	(gfc_set_locus): Set gfc_current_locus1.
	(gfc_at_eof): Set new variables.
	(gfc_at_bol, gfc_at_eol, gfc_advance_line, gfc_next_char): Adapt
	to new locus structure.
	(gfc_check_include): Remove.
	(skip_free_comments, skip_fixed_comments): Use gfc_current_locus1.
	(gfc_skip_comments): Use gfc_current_form, find locus with
	(gfc_next_char): Use gfc_current_form.
	(gfc_peek_char, gfc_gobble_whitespace): Use gfc_current_locus1.
	(load_line): Use gfc_current_form. Recognize ^Z as EOF. Fix
	comment formatting.
	(get_file): New function.
	(preprocessor_line, include_line): New functions.
	(load_file): Move down, rewrite to match new data structures.
	(gfc_new_file): Rewrite to match new data structures.
	* parse.c (next_statement): Remove code which is now useless. Use
	gfc_source_form and gfc_source_file where appropriate.
	* trans-decl.c (gfc_get_label_decl): adapt to new data structures
	when determining locus of frontend code.
	* trans-io.c (set_error_locus): Same.
	* trans.c (gfc_get_backend_locus, gfc_set_backend_locus): Likewise.
	* lang-specs.h (@f77-cpp-input, @f95-cpp-input): Remove '-P' from
	preprocessor flags.
	(all): Add missing initializers.

2004-05-15  Tobias Schlueter  <>

	* (trans-common.o): Remove redundant dependency.
	(data.c): Replace object file name ...
	(data.o): ... by the correct one.

2004-05-14  Tobias Schlueter  <>

	* dump-parse-tree.c (gfc_show_array_ref): Print colon only
	for ranges when dumping array references.

2004-05-14  Victor Leikehman  <>

	* decl.c (variable_decl): Always apply default initializer.

2004-05-08  Tobias Schlüter  <>

	PR fortran/15206
	* trans-intrinsic.c (gfc_conv_intrinsic_rrspacing): Fixed to
	handle zero correctly.

2004-05-14  Tobias Schlueter  <>

	* match.c (gfc_match): Eliminate dead code.

2004-05-14  Tobias Schlueter  <>

	* parse.c (gfc_statement_next_fixed): (Change from Andy's tree)
	Detect bad continuation line in fixed form sources.

2004-05-14  Tobias Schlueter  <>

	PR fortran/15205
	* iresolve.c (gfc_resolve_nearest): Add new function.
	* intrinsic.h: ... declare it here.
	* intrinsic.c (add_functions): ... add it as resolving function

2004-05-14  Tobias Schlueter  <>

	PR fortran/14066
	* match.c (gfc_match_do): Allow infinite loops with
	label-do-stmt. Do not enforce space after comma.

2004-05-14  Tobias Schlueter  <>

	PR fortran/15051
	* parse.c (parse_interface): Allow empty INTERFACE, remove

2004-05-14  Tobias Schlueter  <>

	*, arith.c, arith.h, array.c, bbt.c, check.c,
	decl.c, dependency.c, dependency.h, dump-parse-tree.c, error.c,
	expr.c, f95-lang.c, gfortran.h, interface.c, intrinsic.c,
	intrinsic.h, io.c, iresolve.c, lang-specs.h, match.c, match.h,
	matchexp.c, misc.c, module.c, options.c, parse.c, parse.h,
	primary.c, resolve.c, scanner.c, simplify.c, st.c, symbol.c,
	trans-array.c, trans-array.h, trans-common.c, trans-const.c,
	trans-const.h, trans-decl.c, trans-expr.c, trans-intrinsic.c,
	trans-io.c, trans-stmt.c, trans-stmt.h, trans-types.c,
	trans-types.h, trans.c, trans.h: Update copyright years and
	* data.c: Likewise, also removed two whitespace-only lines.
	* gfortranspec.c, lang.opt: Update copyright years.

2004-05-14  Tobias Schlueter  <>

	PR fortran/14568
	* trans-decl.c (generate_local_decl): Don't warn for unused
	variables which are in common blocks.

2004-05-13  Diego Novillo  <>

	*, f95-lang.c, trans-array.c, trans-decl.c,
	trans-expr.c, trans-intrinsic.c, trans-io.c, trans-stmt.c,
	trans.c: Rename tree-simple.[ch] to tree-gimple.[ch].

2004-05-13  Victor Leikehman  <>

	PR fortran/15314
	* trans-expr.c (gfc_conv_structure): Use field type, not expr type.

2004-05-13  Joseph S. Myers  <>

	* gfortran.texi: Use @table @emph instead of @itemize @emph.
	Remove "set DEVELOPMENT".
	(Compiling GFORTRAN): Remove.

2004-05-09  Tobias Schlüter  <>

	* array.c (match_subscript, match_array_ref): Add comments
	explaining argument 'init'.
	* decl.c, f95-lang.c, match.c, resolve.c, trans-array.c,
	trans-expr.c, trans.c: Fix some typos in comments.
	* dump-parse-tree.c (gfc_show_expr): Remove wrong comment.
	* primary.c (match_digits, match_integer_constant): Add comment
	explaining signflag.

2004-05-01  Tobias Schlüter  <>

	PR fortran/13940
	* primary.c: Include system.h and flags.h, needed for pedantic.
	(match_boz_constant): Allow "x" for hexadecimal constants, warn if
	pedantic is set.

2004-05-01  Tobias Schlüter  <>

	PR fortran/13940
	* match.c (match_data_constant): Handle case where
	gfc_find_symbol	sets sym to NULL

2004-04-28  Tobias Schlüter  <>

	* (f95-lang.o, trans-intrinsic.o): Add missing
	dependency on mathbuiltins.def

2004-04-24  Victor Leikehman  <>

	* trans-io.c (transfer_expr): Implemented recursive printing
	of derived types.

2004-04-24  Andrew Pinski  <>

	* gfortranspec.c: Do not include multilib.h.

2004-04-24  Tobias Schlüter  <>

	* trans-intrinsic.c: Fix comment, this is not trans-expr.c. Add
	2004 to copyright years.
	* trans-expr.c, trans-decl.c: Comment update, we now generate
	GENERIC, not SIMPLE. Add 2004 to copyright years.

2004-04-24  Paul Brook  <>

	* (gfortranspec.o): Add dependency on $(TM_H).

2004-04-24  Feng Wang  <>

	PR 14817
	* arith.c (gfc_arith_divide): Fix complex divide.

2004-04-23  Andrew Pinski  <>

	* gfortranspec.c: Include the target headers.

2004-04-18  Feng Wang  <>

	PR fortran/14921
	PR fortran/14540
	* arith.c (arctangent2): New function.
	* arith.h (arctangent2): Add function prototype.
	* simplify.c (gfc_simplify_atan2): Use it.
	(gfc_simplify_log): Use it.

2004-04-12  Diego Novillo  <>

	* fortran/f95-lang.c (gfc_expand_stmt): Remove.

2004-04-11  Bud Davis  <>

	PR fortran/14872
	* trans-io.c (build_dt): Change REC to value.

2004-04-11  Feng Wang  <>

	PR 14394
	* trans-const.c (gfc_conv_mpf_to_tree): Loosen the maximum digits of
	the real value when converting mpf to string.

2004-04-11  Feng Wang  <>

	PR 14395
	* trans-intrinsic.c (gfc_conv_intrinsic_cmplx): Fix the imag part of
	the result.

2004-04-11  Feng Wang  <>

	PR fortran/14377
	* simplify.c (simplify_min_max): Convert the type of the result.

2004-04-11  Paul Brook  <>

	* gfortran.texi: Use full target triplet.

2004-04-11  Paul Brook  <>

	* (GFORTRAN_TEXI): Set it.
	(fortran/dfortran.dvi): Use it.  Add fortran to include paths.
	(fortran/ Ditto.
	* gfortran.texi: Major update.
	* invoke.texi: New file.

2004-04-10  Paul Brook  <>

	* trans-array.c (gfc_trans_allocate_temp_array,
	gfc_conv_tmp_array_ref): Don't use GFC_DECL_STRING.
	* trans-decl.c (gfc_build_dummy_array_decl,
	gfc_get_symbol_decl, gfc_build_function_decl,
	gfc_create_module_variable): Ditto.
	* trans-expr.c (gfc_conv_variable): Ditto.
	* trans-intrinsic.c (gfc_conv_intrinsic_len): Ditto.
	* trans.h (GFC_DECL_STRING): Remove.
	GFC_DECL_ASSIGN): Renumber flags.

2004-04-05  Paul Brook  <>

	PR 13252
	PR 14081
	* f95-lang.c (gfc_init_builtin_functions): Add stack_alloc, stack_save
	and stack_restore.
	* gfortran.h (struct gfc_charlen): Add backend_decl.
	* trans-array.c (gfc_trans_allocate_temp_array,
	gfc_conv_temp_array_ref, gfc_conv_resolve_dependencies,
	(gfc_conv_loop_setup, gfc_array_allocate, gfc_conv_array_init_size):
	Remove old, broken string handling.
	(gfc_trans_auto_array_allocation, gfc_trans_g77_array,
	gfc_trans_dummy_array_bias, gfc_conv_expr_descriptor,
	gfc_trans_deferred_array): Handle character arrays.
	* trans-const.c (gfc_conv_const_charlen): New function.
	* trans-const.h (gfc_conv_const_charlen): Add prototype.
	* trans-decl.c (gfc_finish_var_decl): Don't mark automatic variables
	as static.
	(gfc_build_dummy_array_decl): Handle arrays with unknown element size.
	(gfc_create_string_length): New function.
	(gfc_get_symbol_decl): Create lengths for character variables.
	(gfc_get_fake_result_decl): Ditto.
	(gfc_build_function_decl): Only set length for assumed length
	character arguments.
	(gfc_trans_dummy_character): New function.
	(gfc_trans_auto_character_variable): Rewrite.
	(gfc_trans_deferred_vars): Handle more types of character variable.
	(gfc_create_module_variable): String lengths have moved.
	(gfc_generate_function_code): Initialize deferred var chain earlier.
	* trans-expr.c (gfc_conv_init_string_length): Rename ...
	(gfc_trans_init_string_length):  ... to this.
	(gfc_conv_component_ref, gfc_conv_variable, gfc_conv_concat_op,
	gfc_conv_function_call): Update to new format for character variables.
	(gfc_conv_string_length): Remove.
	(gfc_conv_string_parameter): Update assertion.
	* trans-intrinsic.c (gfc_conv_intrinsic_len): Use new location.
	* trans-io.c (set_string): Use new macro names.
	* trans-stmt.c (gfc_trans_label_assign. gfc_trans_goto): Ditto.
	* trans-types.c (gfc_get_character_type): Use existing length expr.
	(gfc_is_nodesc_array): Make public.
	(gfc_get_dtype_cst): Rename ...
	(gfc_get_dtype): ... to this.  Handle unknown size arrays.
	(gfc_get_nodesc_array_type): Use new name.
	(gfc_sym_type): New character variable code.
	(gfc_get_derived_type): Ditto.
	(gfc_get_function_type): Evaluate character variable lengths.
	* trans-types.h (gfc_strlen_kind): Define.
	(gfc_is_nodesc_array): Add prototype.
	* trans.h: Update prototypes.
	(struct lang_type): Update comments.

2004-04-04  Paul Brook  <>

	* gfortran.h (struct gfc_option_t): Remove flag_g77_calls.
	* options.c (gfc_init.options, gfc_handle_option): Ditto.
	* trans-expr.c (gfc_conv_function_call): Ditto.
	* trans-types.c (gfc_is_nodesc_array): Ditto
	* lang.opt (fg77-calls): Remove.

2004-04-04  Paul Brook  <>

	* trans-array.c (OFFSET_FIELD): Rename from BASE_FIELD.
	(gfc_conv_descriptor_base): Rename ...
	(gfc_conv_descriptor_offset): ... to this.
	(gfc_trans_allocate_array_storage): Set offset to zero.
	(gfc_conv_array_base): Rename ...
	(gfc_conv_array_offset): ... to this.
	(gfc_conv_array_index_ref): Add offset parameter.
	(gfc_conv_array_ref): Include offset.
	(gfc_trans_preloop_setup): Use existing offset.
	(gfc_trans_allocate_temp_array,  gfc_array_allocate,
	gfc_trans_auto_array_allocation, gfc_trans_g77_array,
	gfc_trans_dummy_array_bias, gfc_conv_expr_descriptor,
	gfc_conf_ss_descriptor): Set offset.
	* trans-array.h: Rename prototypes.
	* trans-const.h (gfc_index_zero_node): Define.
	* trans-decl.c (gfc_build_qualified_array): Change base to offset.
	* trans-types.c (gfc_get_array_type_bounds): Ditto.
	(gfc_get_nodesc_array_type): Calculate offset before upper bound.

2004-03-25  Diego Novillo  <>

	* convert.c (convert): Don't handle WITH_RECORD_EXPR.

2004-03-24  Bud Davis  <>

	PR 14055
	* arith.c (gfc_convert_integer,gfc_convert_real):  Removed leading '+'
	before conversion by gmp library call.

2004-03-24  Bud Davis  <>

	PR 12921
	* trans-io.c (gfc_trans_open): Change RECL= to a value parameter.

2004-02-24  Richard Henderson  <>

	* trans-array.c (gfc_trans_dummy_array_bias): Fix typo.

2004-02-19  Loren J. Rittle  <>

	* ($(srcdir)/fortran/ Move...
	(fortran/ ... to here.
	(f95.srcinfo): New.

2004-02-16  Richard Henderson  <>

	* (f95-lang.o, trans-decl.o): Depend on cgraph.h.
	* f95-lang.c (LANG_HOOKS_EXPAND_DECL): Remove.
	(gfc_expand_function): Rename from expand_function_body, make static,
	don't do anything except invoke tree_rest_of_compilation.
	(gfc_be_parse_file): Invoke cgraph.
	(gfc_expand_decl): Remove.
	(gfc_init_builtin_functions): Add __builtin_init_trampoline and
	* trans-decl.c (gfc_get_extern_function_decl): Don't set DECL_CONTEXT.
	(gfc_finalize): New.
	(gfc_generate_function_code): Use it.  Lower nested functions.
	* trans-expr.c (gfc_conv_function_call): Add static chain operand
	to call_expr.
	* trans.c (gfc_build_function_call): Likewise.
	* trans.h (expand_function_body): Remove.

2004-02-15  Victor Leikehman  <>

	PR gfortran/13433
	* trans-decl.c (gfc_build_function_decl) For functions
	returning CHARACTER pass an extra length argument,
	following g77 calling conventions.
	* trans-types.c (gfc_get_function_type) Ditto.
	* trans-expr.c (gfc_conv_function_call) Ditto.

2004-02-14  Paul Brook  <>

	* f95-lang.c (gfc_init_builtin_functions): Build chain properly.

2004-02-12  Paul Brook  <>

	* BUGS: Remove.

2004-02-08  Steve Kargl  <>

	* gfortran.texi: Fix typos.

2004-02-07  Bud Davis  <>

	PR gfortran/13909
	* intrinsic.c (add_conversions) Use logical conversion instead
	of real.
	* trans-types.c (gfc_get_logical_type) implemented logical*1
	and logical*2.

2004-01-17  Paul Brook  <>

	* lang-specs.h: Remove %<fixed-form.

2004-01-15  Toon Moene  <>

	* lang-specs.h: Enable preprocessing of source files
	ending in .F, .fpp, .FPP, .F90 and .F95.

2004-01-13  Toon Moene  <>

	PR fortran/12912
	* lang-specs.h: Enable compilation of files ending
	in .f, .for and .FOR.

2004-01-11  Paul Brook  <>

	* trans-stmt.c (gfc_trans_if_1): New function.
	(gfc_trans_if): Use it.

2004-01-11  Erik Schnetter  <>

	* gfortran.h (GFC_MAX_SYMBOL_LEN): Increase.
	(gfc_option_t): Add max_identifier_length.
	* lang.opt: Add fmax-identifier-length.
	* match.c (parse_name): Use limit.
	* options.c (gfc_init_options): Set max_identifier_length.
	(gfc_handle_option): Ditto.

2004-01-11  Feng Wang  <>

	* intrinsic.c (add_functions): Add resolve function to dcmplx.
	* intrinsic.h (gfc_resolve_dcmplx): Add prototype.
	* iresolve.c (gfc_resolve_dcmplx): New function.

2004-01-10  Paul Brook  <>

	* trans-decl.c (gfc_get_symbol_decl): Don't set subroutine attr.
	* trans-types.c (gfc_sym_type): Handle external dummy procedures.
	(gfc_return_by_reference): Correct condition.
	(gfc_get_function_type): Ditto.

2004-01-10  Paul Brook  <>

	* trans-intrinsic.c (gfc_conv_intrinsic_minmax): Convert mismatched

2004-01-10  Huang Chun  <>

	* iresolve.c: Use correct kind.

2004-01-10  Huang Chun  <>

	PR fortran/13467
	* trans-decl.c (gfc_create_module_variable):  Output array valued

2004-01-10  Paul Brook  <>

	* resolve.c (resolve_branch): Get error message right way round.

2004-01-10  Canqun Yang  <>

	* trans-array (gfc_conv_loop_setup): Adjust comment to track
	(gfc_array_allocate): Don't count size of element twice.

2004-01-04  Paul Brook  <>

	* lang.opt (i8, r8, std=*): Remove RejectNegative.

2004-01-04  Paul Brook  <>

	* error.c (gfc_notify_std): New function.
	* gfortran.h (gfc_notify_std): Declare.
	(GFC_STD_*): Define.
	(gfc_option_t): Add warn_std and allow_std.
	* intrinsic.c (gfc_init_expr_extensions): Fix logic.
	(gfc_intrinsic_func_interface): Use gfc_notify_std.
	* check.c (check_rest): Use gfc_notify_std.
	* match.c (gfc_match_pause): Ditto.
	(gfc_match_assign): Ditto.
	(gfc_match_goto): Ditto.
	* resolve.c (resolve_branch): Ditto.
	* lang.opt: Add std=<foo> and w.
	* options.c (gfc_init_options): Set allow_std and warn_std.
	(gfc_handle_option): Handle OPT_std_* and OPT_w.

2004-01-01  Paul Brook  <>

	* array.c (gfc_append_constructor): Take constructor, not expression.
	* data.c (struct gfc_expr_stack): Remove.
	(expr_stack): Remove.
	(find_con_by_offset): Rename from find_expr_in_con.
	(find_con_by_component): Rename from find_component_in_con.
	(gfc_get_expr_stack): Remove.
	(gfc_assign_data_value): Rewrite.
	(gfc_expr_push): Remove.
	(gfc_expr_pop): Remove.
	(gfc_advance_section): Rename from
	gfc_modify_index_and_calculate_offset.  Handle unbounded sections.
	(gfc_get_section_index): Handle unbounded sections.
	* gfortran.h: Update prototypes.
	* resolve.c (check_data_variable): Array section maight not be the
	last ref.

2004-01-01  Paul Brook  <>

	PR fortran/13432
	* resolve.c (resolve_symbol): Allow assumed length function results.

2004-01-01  Steve Kargl  <>

	* match.c (gfc_match_pause): Fix spelling.

2004-01-01  Steven Bosscher  <>

	PR fortran/13251
	* trans-expr.c (gfc_conv_variable): Take the type kind of a substring
	reference from the expression.