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

	PR fortran/34558
	* interface.c (gfc_compare_types): Prevent linked lists from
	putting this function into an endless recursive loop.

2007-12-26  Daniel Franke  <franke.daniel@gmail.com>

	PR fortran/34532
	* gfortran.texi: Fixed section about implicit conversion of
	logical and integer variables.

2007-12-25  Tobias Burnus  <burnus@net-b.de>

	PR fortran/34514
	* decl.c (attr_decl1): Reject specifying the DIMENSION for
	already initialized variable.
	(do_parm): Reject PARAMETER for already initialized variable.

2007-12-25  Daniel Franke  <franke.daniel@gmail.com>

	PR fortran/34533
	* intrinsic.h (gfc_check_etime): Renamed to ...
	(gfc_check_dtime_etime): ... this.
	(gfc_check_etime_sub): Renamed to ...
	(gfc_check_dtime_etime_sub): ... this.
	(gfc_resolve_dtime_sub): New prototype.
	* check.c (gfc_check_etime): Renamed to ...
	(gfc_check_dtime_etime): ... this.
	(gfc_check_etime_sub): Renamed to ...
	(gfc_check_dtime_etime_sub): ... this.
	* iresolve.c (gfc_resolve_dtime_sub): New implementation.
	* intrinsic.c (add_functions): Removed alias from ETIME to DTIME,
	added stand-alone intrinsic DTIME.
	(add_subroutines): Adjusted check and resolve function names for
	DTIME and ETIME.
	* trans-intrinsic.c (gfc_conv_intrinsic_function): Added DTIME
	to known functions in switch.
	* intrinsic.texi (DTIME): Added paragraph about thread-safety,
	fixed return value section.
	(CPU_TIME): Clarified intent and added implementation notes.

2007-12-23  Tobias Burnus  <burnus@net-b.de>

	PR fortran/34421
	* resolve.c (resolve_entries): Add standard error for functions
	returning characters with different length.

2007-12-23  Daniel Franke  <franke.daniel@gmail.com>

	PR fortran/34536 
	* matchexp.c (match_ext_mult_operand): Print warning for unary 
	operators following arithmetic ones by default.
	(match_ext_add_operand): Likewise.

2007-12-22  Daniel Franke  <franke.daniel@gmail.com>

	PR fortran/34559
	* simplify.c (gfc_simplify_repeat): Added safeguard for empty
	string literals.

2007-12-22  Thomas Koenig  <tkoenig@gcc.gnu.org>

	PR fortran/34549
	* check.c (gfc_check_cshift):  Add check that shift is
	type INTEGER.

2007-12-21  Jerry DeLisle  <jvdelisle@gcc.gnu.org>

	PR fortran/34540
	* iresolve.c (gfc_resolve_cshift): Take optional dim path
	only if the argument is an optional itself.
	* iresolve.c (gfc_resolve_eoshift): Same.

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

	PR fortran/34438
	* trans-decl.c (gfc_finish_var_decl): Do not mark derived types
	with default initializers as TREE_STATIC unless they are in the
	main program scope.
	(gfc_get_symbol_decl): Pass derived types with a default
	initializer to gfc_defer_symbol_init.
	(init_default_dt): Apply default initializer to a derived type.
	(init_intent_out_dt): Call init_default_dt.
	(gfc_trans_deferred_vars): Ditto.

	* module.c (read_module): Check sym->module is there before
	using it in a string comparison.

2007-12-20  Tobias Burnus  <burnus@net-b.de>

	PR fortran/34482
	* gfortran.texi (BOZ): Document behavior for complex
	numbers.
	* target-memory.h (gfc_convert_boz): Update prototype.
	* target-memory.c (gfc_convert_boz): Add error check
	and convert BOZ to smallest possible bit size.
	* resolve.c (resolve_ordinary_assign): Check return value.
	* expr.c (gfc_check_assign): Ditto.
	* simplify.c (simplify_cmplx, gfc_simplify_dble,
	gfc_simplify_float, gfc_simplify_real): Ditto.

2007-12-19  Jerry DeLisle  <jvdelisle@gcc.gnu.org>

	PR fortran/34325
	* match.h: New function declaration.
	* match.c (gfc_match_parens): New function to look for mismatched
	parenthesis. (gfc_match_if): Use new function to catch missing '('.

2007-12-19  Daniel Franke  <franke.daniel@gmail.com>

	PR fortran/34495
	* expr.c (check_init_expr): Check whether variables with flavor
	FL_PARAMETER do have a value assigned. Added error messages where
	appropriate.
	* simplify.c (gfc_simplify_transfer): Added check if the MOLD
	argument is a constant if working with initialization
	expressions.

2007-12-17  Tobias Burnus  <burnus@net-b.de>

	* intrinsic.c (add_functions): Undo change; mark float and
	sngl as STD_F77.
	* intrinsic.texi (FLOAT, SNGL): Change standard to F77 and later.
	* gfortran.texi (BOZ): Make note about FLOAT etc. clearer.

2007-12-16  Tobias Burnus  <burnus@net-b.de>

	PR fortran/34495
	* intrinsic.c (add_functions): Mark float and sngl as STD_GNU.
	(gfc_intrinsic_func_interface): Reject REAL, DBLE and CMPLX
	in initialization expressions for -std=f95.

2007-12-16  Thomas Koenig  <tkoenig@gcc.gnu.org>

	PR fortran/34305
	* resolve.c (compare_bound):  If either of the types of
	the arguments isn't INTEGER, return CMP_UNKNOWN.

2007-12-16  Tobias Burnus  <burnus@net-b.de>

	PR fortran/34246
	* trans-types.c (gfc_init_types): Change build_type_variant
	to build_qualified_type.
	(gfc_sym_type): Return gfc_character1_type_node for
	character-returning bind(C) functions.
	* trans-expr.c (gfc_conv_function_call): Do not set
	se->string_length for character-returning bind(c) functions.
	(gfc_trans_string_copy,gfc_trans_scalar_assign):
	Support also single characters.

2007-12-16  Bernhard Fischer  <aldot@gcc.gnu.org>

	* errors.c (gfc_notify_std): As originally stated but improperly
	changed, disregard warnings_are_errors for deciding which buffer
	to use for warnings.

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

	PR fortran/31213
	PR fortran/33888
	PR fortran/33998
	* trans-array.c (gfc_trans_array_constructor_value): If the
	iterator variable does not have a backend_decl, use a local
	temporary.
	(get_elemental_fcn_charlen): New function to map the character
	length of an elemental function onto its actual arglist.
	(gfc_conv_expr_descriptor): Call the above so that the size of
	the temporary can be evaluated.
	* trans-expr.c : Include arith.h and change prototype of
	gfc_apply_interface_mapping_to_expr to return void.  Change all
	references to gfc_apply_interface_mapping_to_expr accordingly.
	(gfc_free_interface_mapping): Free the 'expr' field.
	(gfc_add_interface_mapping): Add an argument for the actual
	argument expression. This is copied to the 'expr' field of the
	mapping.  Only stabilize the backend_decl if the se is present.
	Copy the character length expression and only add it's backend
	declaration if se is present.  Return without working on the
	backend declaration for the new symbol if se is not present.
	(gfc_map_intrinsic_function) : To simplify intrinsics 'len',
	'size', 'ubound' and 'lbound' and then to map the result.
	(gfc_map_fcn_formal_to_actual): Performs the formal to actual
	mapping for the case of a function found in a specification
	expression in the interface being mapped.
	(gfc_apply_interface_mapping_to_ref): Remove seen_result and
	all its references. Remove the inline simplification of LEN
	and call gfc_map_intrinsic_function instead.  Change the
	order of mapping of the actual arguments and simplifying
	intrinsic functions.  Finally, if a function maps to an
	actual argument, call gfc_map_fcn_formal_to_actual.
	(gfc_conv_function_call): Add 'e' to the call to
	gfc_add_interface_mapping.
	* dump-parse-tree.c (gfc_show_symbol_n): New function for
	diagnostic purposes.
	* gfortran.h : Add prototype for gfc_show_symbol_n.
	* trans.h : Add 'expr' field to gfc_add_interface_mapping.
	Add 'expr' to prototype for gfc_show_symbol_n.
	* resolve.c (resolve_generic_f0): Set specific function as
	referenced.

2007-12-14  Tobias Burnus  <burnus@net-b.de>

	PR fortran/34438
	* resolve.c (resolve_symbol): Do not emit public-variable-
	of-private-derived-type error for non-module variables.

2007-12-14  Tobias Burnus  <burnus@net-b.de>

	PR fortran/34398
	* expr.c (gfc_check_assign): Add range checks for assignments of BOZs.
	* resolve.c (resolve_ordinary_assign): Ditto.
	* arith.c (gfc_range_check): Fix return value for complex numbers.

2007-12-14  Daniel Franke  <franke.daniel@gmail.com>

	PR fortran/34324
	* module.c (parse_atom): Fixed parsing of modules files whose
	lines are terminated by CRLF.

2007-12-13  Anton Korobeynikov  <asl@math.spbu.ru>

	* trans-decl.c (gfc_build_builtin_function_decls): Correct decl
	construction for select_string() and internal_unpack()

2007-12-13  Duncan Sands  <baldrick@free.fr>
	    Anton Korobeynikov  <asl@math.spbu.ru>

	* trans-expr.c (gfc_conv_structure): Make sure record constructors
	for static variables are marked constant.

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

	PR fortran/34254
	* decl.c (match_char_kind): Support use-associated/imported
	kind parameters.
	(gfc_match_kind_spec): Support als BT_CHARACTER, when
	re-scanning kind spec.

2007-12-11  Aldy Hernandez  <aldyh@redhat.com>

	* decl.c (add_global_entry): Make type unsigned.

2007-12-11  Bernhard Fischer  <aldot@gcc.gnu.org>

	* decl.c (match_prefix): Make seen_type a boolean.
	(add_global_entry): Cache type distinction.
	* trans-decl.c: Whitespace cleanup.

2007-12-10  Tobias Burnus  <burnus@net-b.de>

	PR fortran/34425
	* interface.c (get_expr_storage_size): Use signed integer when
	obtaining the bounds.

2007-12-09  Jakub Jelinek  <jakub@redhat.com>

	PR fortran/22244
	* trans.h (struct array_descr_info): Forward declaration.
	(gfc_get_array_descr_info): New prototype.
	(enum gfc_array_kind): New type.
	(struct lang_type): Add akind field.
	(GFC_TYPE_ARRAY_AKIND): Define.
	* trans-types.c: Include dwarf2out.h.
	(gfc_build_array_type): Add akind argument.  Adjust
	gfc_get_array_type_bounds call.
	(gfc_get_nodesc_array_type): Include proper debug info even for
	assumed-size arrays.
	(gfc_get_array_type_bounds): Add akind argument, set
	GFC_TYPE_ARRAY_AKIND to it.
	(gfc_sym_type, gfc_get_derived_type): Adjust gfc_build_array_type
	callers.
	(gfc_get_array_descr_info): New function.
	* trans-array.c (gfc_trans_create_temp_array,
	gfc_conv_expr_descriptor): Adjust gfc_get_array_type_bounds
	callers.
	* trans-stmt.c (gfc_trans_pointer_assign_need_temp): Likewise.
	* trans-types.h (gfc_get_array_type_bounds): Adjust prototype.
	* Make-lang.in (fortran/trans-types.o): Depend on dwarf2out.h.
	* f95-lang.c (LANG_HOOKS_GET_ARRAY_DESCR_INFO): Define.

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

	PR fortran/32129
	* dump-parse-tree.c (gfc_show_expr_n): New function for
	debugging.
	* gfortran.h : Add prototype for gfc_show_expr_n.
	* expr.c (simplify_constructor): Copy the constructor
	expression and try to simplify that.  If success, replace the
	original.  Otherwise discard the copy, keep going through
	the structure and return success.

	PR fortran/31487
	* decl.c (build_struct): Pad out default initializers with
	spaces to the component character length.

2007-12-08  Tobias Burnus  <burnus@net-b.de>

	PR fortran/34342
	PR fortran/34345
	PR fortran/18026
	PR fortran/29471
	* gfortran.texi (BOZ literal constants): Improve documentation
	and adapt for BOZ changes.
	* Make-lang.ini (resolve.o): Add target-memory.h dependency.
	* gfortran.h (gfc_expr): Add is_boz flag.
	* expr.c: Include target-memory.h.
	(gfc_check_assign): Support transferring BOZ for real/cmlx.
	* resolve.c: Include target-memory.h
	(resolve_ordinary_assign): Support transferring BOZ for real/cmlx.
	* target-memory.c (gfc_convert_boz): New function.
	* target-memory.c (gfc_convert_boz): Add prototype.
	* primary.c (match_boz_constant): Set is_boz, enable F95 error
	also without -pedantic, and allow for Fortran 2003 BOZ.
	(match_real_constant): Fix comment.
	* simplify.c (simplify_cmplx,gfc_simplify_dble,gfc_simplify_float,
	gfc_simplify_real): Support Fortran 2003 BOZ.

2007-12-08  Jakub Jelinek  <jakub@redhat.com>

	PR fortran/34359
	* gfortran.h (gfc_file): Remove sibling and down fields.
	* scanner.c (file_changes, file_changes_cur, file_changes_count,
	file_changes_allocated): New variables.
	(add_file_change, report_file_change): New functions.
	(change_file): Remove.
	(gfc_start_source_files, gfc_end_source_files): Call
	report_file_change instead of change_file.
	(gfc_advance_line): Call report_file_change instead of change_file,
	call it even if lb->file == lb->next->file.
	(get_file): Revert last changes.
	(preprocessor_line): Call add_file_change when entering or leaving
	a file.
	(load_file): Likewise.  Set file_change[...].lb for all newly added
	file changes.

2007-12-06  Tobias Burnus  <burnus@net-b.de>

	PR fortran/34333
	* primary.c (match_boz_constant): Add gfc_notify_std diagnostics.

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

	PR fortran/34335
	* module.c (find_symbol): Do not return symtrees with unique
	names, which shows that they are private.

2007-12-05  Jakub Jelinek  <jakub@redhat.com>

	PR debug/33739
	* gfortran.h (gfc_file): Remove included_by field, add sibling and
	down.
	(gfc_start_source_files, gfc_end_source_files): New prototypes.
	* parse.c (gfc_parse_file): Call gfc_start_source_files and
	gfc_end_source_files instead of calling the debugging hooks directly.
	* error.c (show_locus): Use up field instead of included_by.
	* scanner.c (change_file, gfc_start_source_files,
	gfc_end_source_files): New functions.
	(gfc_advance_line): Call change_file instead of calling debug hooks
	directly.
	(get_file): Set up rather than included_by.  Initialize down and
	sibling.
	(preprocessor_line, load_file): Don't set up field here.

2007-12-05  Tobias Burnus  <burnus@net-b.de>

	PR fortran/34333
	* arith.h (gfc_compare_expr): Add operator argument, needed
	for compare_real.
	* arith.c (gfc_arith_init_1): Use mpfr_min instead of mpfr_cmp/set
	to account for NaN.
	(compare_real): New function, as mpfr_cmp but takes NaN into account.
	(gfc_compare_expr): Use compare_real.
	(compare_complex): Take NaN into account.
	(gfc_arith_eq,gfc_arith_ne,gfc_arith_gt,gfc_arith_ge,gfc_arith_lt,
	gfc_arith_le): Pass operator to gfc_compare_expr.
	* resolve.c (compare_cases,resolve_select): Pass operator
	to gfc_compare_expr.
	* simplify.c (simplify_min_max): Take NaN into account.

2007-12-04  Tobias Burnus  <burnus@net-b.de>

	PR fortran/34318
	* module.c (mio_gmp_real): Properly write NaN and Infinity.

2007-12-02  Tobias Burnus  <burnus@net-b.de>

	PR fortran/34186
	* symbol.c (generate_isocbinding_symbol): Fix setting string length.

2007-11-30  Tobias Burnus  <burnus@net-b.de>

	PR fortran/34133
	* match.h: Add bool allow_binding_name to gfc_match_bind_c.
	* decl.c (match_attr_spec,gfc_match_bind_c_stmt,gfc_match_entry):
	Adjust accordingly.
	(gfc_match_bind_c): Add allow_binding_name argument, reject
	binding name for dummy arguments.
	(gfc_match_suffix,gfc_match_subroutine): Make use of
	allow_binding_name.

2007-11-30  Tobias Burnus  <burnus@net-b.de>

	PR fortran/34186
	* symbol.c (generate_isocbinding_symbol): Set string length.
	* dump-parse-tree.c (gfc_show_attr): Show BIND(C) attribute.
	* misc.c (gfc_basic_typename): Handle BT_VOID.

2007-11-29  Steven G. Kargl  <kargls@comcast.net>

	PR fortran/34230
	* fortran/arith.c (gfc_check_real_range): Set intermediate values
	to +-Inf and 0 when -fno-range-check is in effect.
	* fortran/invoke.texi: Improve -fno-range-check description.

	PR fortran/34203
	* fortran/invoke.texi: Document the C escaped characters activated
	by -fbackslash.

2007-11-29  Tobias Burnus  <burnus@net-b.de>

	PR fortran/34248
	* trans-decl.c (generate_dependency_declarations): Check
	for NULL pointers before accessing the string length.

2007-11-29  Tobias Burnus  <burnus@net-b.de>

	PR fortran/34262
	* intrinsic.c (gfc_get_intrinsic_sub_symbol): Add comment.
	(gfc_intrinsic_sub_interface): Copy elemental state if needed.
	* iresolve.c (gfc_resolve_mvbits): Mark procedure as elemental.

2007-11-28  Jakub Jelinek  <jakub@redhat.com>

	* trans-expr.c (gfc_trans_string_copy): Convert both dest and
	src to void *.

	PR fortran/34247
	* trans-openmp.c (gfc_omp_privatize_by_reference): For REFERENCE_TYPE
	pass by reference only PARM_DECLs or non-artificial decls.

2007-11-27  Jerry DeLisle  <jvdelisle@gcc.gnu.org>

	PR fortran/32928
	* decl.c (match_data_constant): Use gfc_match_init_expr to match the
	array spec and set the initializer expression.

2007-11-27  Jerry DeLisle  <jvdelisle@gcc.gnu.org>

	PR fortran/34227
	* match.c (gfc_match_common): Add additional check for BLOCK DATA.

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

	PR fortran/29389
	*resolve.c (resolve_ordinary_assign): Use find_sym_in_expr to
	test if a temporary should be written for a vector subscript
	on the lhs.

	PR fortran/33850
	* restore.c (pure_stmt_function): Add prototype and new
	function. Calls impure_stmt_fcn.
	(pure_function): Call it.
	(impure_stmt_fcn): New function.

	* expr.c (gfc_traverse_expr): Call *func for all expression
	types, not just variables. Add traversal of character lengths,
	iterators and component character lengths and arrayspecs.
	(expr_set_symbols_referenced): Return false if not a variable.
	* trans-stmt.c (forall_replace, forall_restore): Ditto.
	* resolve.c (forall_index): Ditto.
	(sym_in_expr): New function.
	(find_sym_in_expr): Rewrite to traverse expression calling
	sym_in_expr.
	*trans-decl.c (expr_decls): New function.
	(generate_expr_decls): Rewrite to traverse expression calling
	expr_decls.
	*match.c (check_stmt_fcn): New function.
	(recursive_stmt_fcn): Rewrite to traverse expression calling
	check_stmt_fcn.

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

	PR fortran/33541
	*interface.c (compare_actual_formal): Exclude assumed size
	arrays from the possibility of scalar to array mapping.
	* decl.c (get_proc_name): Fix whitespace problem.

	PR fortran/34231
	* gfortran.h : Add 'use_rename' bit to symbol_attribute.
	* module.c : Add 'renamed' field to pointer_info.u.rsym.
	(load_generic_interfaces): Add 'renamed' that is set after the
	number_use_names is called.  This is used to set the attribute
	use_rename, which, in its turn identifies those symbols that
	have not been renamed.
	(load_needed): If pointer_info.u.rsym->renamed is set, then
	set the use_rename attribute of the symbol.
	(read_module): Correct an erroneous use of use_flag. Use the
	renamed flag and the use_rename attribute to determine which
	symbols are not renamed.

2007-11-26  Steven G. Kargl  <kargls@comcast.net>

	PR fortran/34203
	* options.c:  Change default behavior of backslash processing.
	* invoke.texi: Update documentation.

2007-11-25  Jerry DeLisle  <jvdelisle@gcc.gnu.org>

	PR fortran/33152
	* decl.c (add_init_expr_to_sym): Remove error message.
	* resolve.c (check_data_variable): Add new check for a data variable
	that has an array spec, but no ref and issue an error.
	* match.c (gfc_match_common): Remove error message.

2007-11-25  Tobias Burnus  <burnus@net-b.de>

	PR fortran/34079
	* trans-types.c (gfc_return_by_reference,
	gfc_get_function_type): Do not return result of
	character-returning bind(C) functions as argument.
	* trans-expr.c (gfc_conv_function_call): Ditto.

2007-11-25  Jerry DeLisle  <jvdelisle@gcc.gnu.org>

	PR fortran/34175
	* gfortran.texi: Document default forms assumed for various file
	extensions.

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

	PR fortran/33499
	* decl.c (get_proc_name): If ENTRY statement occurs before type
	specification, set the symbol untyped and ensure that it is in
	the procedure namespace.

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

	PR fortran/33541
	* module.c (find_symtree_for_symbol): Move to new location.
	(find_symbol): New function.
	(load_generic_interfaces): Rework completely so that symtrees
	have the local name and symbols have the use name.  Renamed
	generic interfaces exclude the use of the interface without an
	ONLY clause (11.3.2).
	(read_module): Implement 11.3.2 in the same way as for generic
	interfaces.

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

	* trans-common.c (build_common_decl): Fix the alignment for
	BIND(C) common blocks.

2007-11-23  Jerry DeLisle  <jvdelisle@gcc.gnu.org>

	PR fortran/34209
	* iresolve.c (gfc_resolve_nearest): If sign variable kind does not match
	kind of input variable, convert it to match.

	PR fortran/33317
	* trans.h: Modify prototype for gfc_conv_missing_dummy.
	* trans-expr.c (gfc_conv_missing_dummy): Modify to pass an integer kind
	parameter in.  Set the type of the dummy to the kind given.
	(gfc_conv_function_call): Pass representation.length to
	gfc_conv_missing_dummy.
	* iresolve.c (gfc_resolve_cshift): Determine the correct kind to use and
	if appropriate set representation.length to this kind value.
	(gfc_resolve_eoshift): Likewise.
	* check.c (gfc_check_cshift): Enable dim_check to allow DIM as an
	optional argument. (gfc_check_eoshift): Likewise.
	* trans_intrinsic.c (gfc_conv_intrinsic_function_args): Update call to
	gfc_conv_missing_dummy.

2007-11-23  Tobias Burnus  <burnus@net-b.de>

	PR fortran/34187
	* module.c (load_needed): Ensure binding_label is not lost.

	* decl.c (set_binding_label,gfc_match_bind_c): Replace
	strncpy by strcpy.

2007-11-23  Tobias Burnus  <burnus@net-b.de>
	    Steven G. Kargl  <kargl@gcc.gnu.org>

	PR fortran/34192
	* simplify.c (gfc_simplify_nearest): Fix NEAREST for
	subnormal numbers.

2007-11-23  Aldy Hernandez  <aldyh@redhat.com>

	* trans-expr.c (gfc_trans_string_copy): Use "void *" when building a
	memset.
		
2007-11-22  Tobias Burnus  <burnus@net-b.de>

	* primary.c (gfc_match_structure_constructor): Allow
	constructor for types without components.

2007-11-22  Tobias Burnus  <burnus@net-b.de>

	PR fortran/34079
	* trans-expr.c (gfc_conv_function_call): Do not append
	string length arguments when calling bind(c) procedures.
	* trans-decl.c (create_function_arglist): Do not append
	string length arguments when declaring bind(c) procedures.

2007-11-21  Francois-Xavier Coudert  <fxcoudert@gcc.gnu.org>

	PR fortran/34083
	* resolve.c (resolve_structure_cons): Also check for zero rank.

2007-11-19  Jerry DeLisle  <jvdelisle@gcc.gnu.org>

	PR fortran/33317
	* trans-expr.c (gfc_conv_missing_dummy): Revert.
	* iresolve.c (gfc_resolve_cshift): Revert.
	(gfc_resolve_eoshift): Likewise.
	* check.c (gfc_check_cshift): Revert.
	(gfc_check_eoshift): Likewise.

2007-11-19  Tobias Burnus  <burnus@net-b.de>

	PR fortran/34079
	* decl.c (gfc_match_entry): Support BIND(C).
	(gfc_match_subroutine): Fix comment typo.

2007-11-18  Jerry DeLisle  <jvdelisle@gcc.gnu.org>

	PR fortran/33317
	* trans-expr.c (gfc_conv_missing_dummy): Set the type of the dummy
	argument to default integer if flagged to do so. Fix typo in comment.
	* resolve.c (gfc_resolve_dim_arg): Whitespace cleanup.
	* iresolve.c (gfc_resolve_cshift): Do not convert type, mark attribute
	for converting the DIM type appropriately in trans-expr.c.
	(gfc_resolve_eoshift): Likewise.
	* check.c (dim_check): Remove pre-existing dead code.
	(gfc_check_cshift): Enable dim_check to allow DIM as an optional.
	(gfc_check_eoshift): Likewise.
	* trans_intrinsic.c (gfc_conv_intrinsic_function_args): Fix whitespace.

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

	PR fortran/31608
	* trans-array.c (gfc_conv_expr_descriptor): Remove exception
	for indirect references in the call to gfc_trans_scalar_assign.
	* trans-expr.c (gfc_conv_string_parameter): Instead of asserting
	that the expression is not an indirect reference, cast it to a
	pointer type of the length given by se->string_length.

2007-11-18  Tobias Burnus  <burnus@net-b.de>

	PR fortran/34137
	* primary.c (match_variable): Reject non-result entry symbols.
	* resolve.c (resolve_contained_fntype): Do not check entry master
	functions.

2007-11-17  Francois-Xavier Coudert  <fxcoudert@gcc.gnu.org>

	* trans-types.c (gfc_init_types): Use wider buffer.

2007-11-17  Francois-Xavier Coudert  <fxcoudert@gcc.gnu.org>

	* trans-types.c (gfc_init_types): Use Fortran-90-style type
	names, with kinds.

2007-11-17  Tobias Burnus  <burnus@net-b.de>

	PR fortran/34133
	* decl.c (gfc_match_suffix,gfc_match_subroutine): Disallow
	bind(c) attribute for internal procedures.

2007-11-17  Francois-Xavier Coudert  <fxcoudert@gcc.gnu.org>

	PR fortran/25252
	* interface.c (gfc_current_interface_head,
	gfc_set_current_interface_head): New functions.
	* decl.c (gfc_match_modproc): Move check for syntax error earlier.
	On syntax error, restore previous state of the interface.
	* gfortran.h (gfc_current_interface_head,
	gfc_set_current_interface_head): New prototypes.

2007-11-17  Francois-Xavier Coudert  <fxcoudert@gcc.gnu.org>

	PR fortran/30285
	* module.c (struct written_common, written_commons): New structure.
	(compare_written_commons, free_written_common, write_common_0):
	New functions.
	(write_common): Call recursive function write_common_0.

2007-11-17  Francois-Xavier Coudert  <fxcoudert@gcc.gnu.org>

	PR fortran/34108
	* io.c (check_format_string): Only check character expressions.
	(match_dt_format): Return MATCH_ERROR if that is what
	gfc_match_st_label said.

2007-11-16  Francois-Xavier Coudert  <fxcoudert@gcc.gnu.org>

	PR fortran/33957
	* expr.c (check_inquiry): Don't call gfc_error now.

2007-11-16  Francois-Xavier Coudert  <fxcoudert@gcc.gnu.org>

	PR fortran/33739
	PR fortran/34084
	* scanner.c (start_source_file, end_source_file,
	exit_remaining_files, gfc_advance_line): Revert rev. 130016.

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

	PR fortran/34008
	* trans-stmt.c (gfc_conv_elemental_dependencies): Add check for
	INTENT_INOUT as well as INTENT_OUT.
	(gfc_trans_call): Remove redundant gcc_asserts in dependency
	check.

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

	PR fortran/33986
	* trans-array.c (gfc_conv_array_parameter ): Allow allocatable
	function results.

2007-11-15  Tobias Burnus  <burnus@net-b.de>
 
	PR fortran/33917
	* decl.c (match_procedure_decl): Pre-resolve interface.
	* resolve.c (resolve_symbol): Reject interfaces later
	declared in procedure statements.

2007-11-13  Jerry DeLisle  <jvdelisle@gcc.gnu.org>

	PR fortran/33162
	* decl.c (match_procedure_decl): Remove TODO and allow intrinsics in
	PROCEDURE declarations.  Set attr.untyped to allow the interface to be
	resolved later where the symbol type will be set.
	* interface.c (compare_intr_interfaces): Remove static from pointer
	declarations.  Add type and kind checks for dummy function arguments.
	(compare_actual_formal_intr): New function to compare an actual
	argument with an intrinsic function. (gfc_procedures_use): Add check for
	interface that points to an intrinsic function, use the new function.
	* resolve.c (resolve_specific_f0): Resolve the intrinsic interface.
	(resolve_specific_s0): Ditto.

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

	PR fortran/34080
	* iresolve.c (gfc_resolve_transfer): Do not try to convert
	to a constant MOLD expression, if it is an assumed size
	dummy.

2007-11-10  Francois-Xavier Coudert  <fxcoudert@gcc.gnu.org>

	* trans-common.c: Remove prototype for gfc_get_common.

2007-11-10  Francois-Xavier Coudert  <fxcoudert@gcc.gnu.org>

	PR fortran/33592
	* trans.c (gfc_call_realloc): Fix the logic and rename variables.

2007-11-08  Francois-Xavier Coudert  <fxcoudert@gcc.gnu.org>

	PR fortran/33739
	* scanner.c (start_source_file, end_source_file,
	exit_remaining_files): New functions.
	(gfc_advance_line): Use the new functions.

2007-11-08  Francois-Xavier Coudert  <fxcoudert@gcc.gnu.org>

	PR fortran/34028
	* trans-intrinsic.c (gfc_conv_intrinsic_ishft): Use correct type.

2007-11-08  Tobias Burnus  <burnus@net-b.de>

	PR fortran/33917
	* interface.c (check_sym_interfaces): Disallow PROCEDURE-declared
	procedures for MODULE PROCEDURE.
	* decl.c (match_procedure_in_interface): Do not mark as procedure.

2007-11-03  Francois-Xavier Coudert  <fxcoudert@gcc.gnu.org>

	PR fortran/33881
	* trans-array.c (gfc_conv_array_parameter): Evaluate
	se->string_length instead of the expr->ts.cl->backend_decl.

2007-11-03  Francois-Xavier Coudert  <fxcoudert@gcc.gnu.org>

	* gfortran.h: Shorten comment.
	* trans-types.c (gfc_get_function_type): Allow argument to have
	flavor FL_PROGRAM.
	* trans-decl.c (gfc_sym_mangled_function_id): Mangle main program
	name into MAIN__.
	(build_function_decl): Fix comment.
	* parse.c (main_program_symbol): Give the main program its proper
	name, if any. Set its flavor to FL_PROGRAM.
	(gfc_parse_file): Likewise.

2007-11-02  Francois-Xavier Coudert  <fxcoudert@gcc.gnu.org>

	* intrinsic.texi (ALLOCATED): Fix typo.

2007-10-31  Tobias Burnus  <burnus@net-b.de>

	PR fortran/33941
	* modules.c (intrinsics): Use only alphabetic names for
	intrinsic operators.

2007-10-31  Jerry DeLisle  <jvdelisle@gcc.gnu.org>

	PR fortran/33162
	* interface.c (compare_intr_interfaces): New function to check intrinsic
	function arguments against formal arguments. (compare_interfaces): Fix
	logic in comparison of function and subroutine attributes.
	(compare_parameter): Use new function for intrinsic as argument.
	* resolve.c (resolve_actual_arglist): Allow an intrinsic without
	function attribute to be checked further.  Set function attribute if
	intrinsic symbol is found, return FAILURE if not.

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

	PR fortran/33897
	* decl.c (gfc_match_entry): Do not make ENTRY name
	global for contained procedures.
	* parse.c (gfc_fixup_sibling_symbols): Fix code for
	determining whether a procedure is external.

2007-10-30  Francois-Xavier Coudert  <fxcoudert@gcc.gnu.org>

	PR fortran/33596
	* trans-intrinsic.c (gfc_conv_intrinsic_isnan): Strip NOP_EXPR
	from the result of build_call_expr.

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

	PR fortran/31217
	PR fortran/33811
	PR fortran/33686

	* trans-array.c (gfc_conv_loop_setup): Send a complete type to
	gfc_trans_create_temp_array if the temporary is character.
	* trans-stmt.c (gfc_trans_assign_need_temp): Do likewise for
	allocate_temp_for_forall_nest.
	(forall_replace): New function.
	(forall_replace_symtree): New function.
	(forall_restore): New function.
	(forall_restore_symtree): New function.
	(forall_make_variable_temp): New function.
	(check_forall_dependencies): New function.
	(cleanup_forall_symtrees): New function.
	gfc_trans_forall_1): Add and initialize pre and post blocks.
	Call check_forall_dependencies to check for all dependencies
	and either trigger second forall block to copy temporary or
	copy lval, outside the forall construct and replace all
	dependent references. After assignment clean-up and coalesce
	the blocks at the end of the function.
	* gfortran.h : Add prototypes for gfc_traverse_expr and
	find_forall_index.
	expr.c (gfc_traverse_expr): New function to traverse expression
	and visit all subexpressions, under control of a logical flag,
	a symbol and an integer pointer. The slave function is caller
	defined and is only called on EXPR_VARIABLE.
	(expr_set_symbols_referenced): Called by above to set symbols
	referenced.
	(gfc_expr_set_symbols_referenced): Rework of this function to
	use two new functions above.
	* resolve.c (find_forall_index): Rework with gfc_traverse_expr,
	using forall_index.
	(forall_index): New function used by previous.
	* dependency.c (gfc_check_dependency): Use gfc_dep_resolver for
	all references, not just REF_ARRAY.
	(gfc_dep_resolver): Correct the logic for substrings so that
	overlapping arrays are handled correctly.

2007-10-28  Tobias Schlüter  <tobi@gcc.gnu.org>

	PR fortran/32147
	* module.c (write_symbol): Fix whitespace.
	(write_symbol0): Walk symtree from left-to-right instead
	breadth-first.
	(write_symbol1): Similarly change walk of pointer info tree.
	(write_module): Insert linebreak.
	* symbol.c (gfc_traverse_symtree): Change to left-to-right order.
	(traverse_ns): Likewise.

2007-10-27 Jerry DeLisle <jvdelisle@gcc.gnu.org>

	PR fortran/31306
	* decl.c (char_len_param_value): Add check for conflicting attributes of
	function argument.

2007-10-27  Tobias Burnus  <burnus@net-b.de>

	PR fortran/33862
	* lang-specs.h: Support .ftn and .FTN extension, use CPP for .FOR.
	* options.c (form_from_filename): Support .ftn extension.
	* gfortran.texi: Document support of .for and .ftn file extension.

2007-10-26  Jerry DeLisle  <jvdelisle@gcc.gnu.org>

	PR fortran/33162
	* intrinsic.h: Add prototypes for four new functions, gfc_check_datan2,
	gfc_check_dprod, gfc_check_fn_d, and gfc_check_x_yd.
	* intrinsic.c (add_functions): Add double precision checks for dabs,
	dacos, dacosh, dasin, dasinh, datan, datanh, datan2, dbesj0, dbesj1,
	dbesy0, dbesy1, dcos, dcosh, ddim, derf, derfc, dexp, dgamma,
	dlgama, dlog, dlog10, dmod, dsign, dsin, dsinh, dsqrt, dtan, and dtanh.
	Add real check dprod.
	* check.c (gfc_check_datan2): New function to check for double precision
	argumants. (gfc_check_dprod, gfc_check_fn_d, and gfc_check_x_yd): Ditto.

2007-10-26  Jerry DeLisle  <jvdelisle@gcc.gnu.org>

	* invoke.texi: Fix typo in -fmax-errors=.

2007-10-26  Francois-Xavier Coudert  <fxcoudert@gcc.gnu.org>

	PR fortran/29784
	* gfortran.texi: Document that there is no logical/integer
	conversion performed during I/O operations.

2007-10-22  Jerry DeLisle  <jvdelisle@gcc.gnu.org>

	PR fortran/33849
	* resolve.c (resolve_actual_arglist): Fix error message text.

2007-10-22  Steven G. Kargl  <kargl@gcc.gnu.org>

	PR fortran/31244
	* gfortran.h (gfc_data_value): Change repeat from unsigned int
	to mpz_t.
	* decl.c(top_val_list): Remove msg variable.  Use mpz_t for
	repeat count.
	* resolve.c (values):  Change left from unsigned int to mpz_t.
	(next_data_value): Change for mpz_t.
	(check_data_variable): Change ??? to FIXME in a comment.  Use
	"mpz_t left".
	(resolve_data ): Use "mpz_t left".

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

	PR fortran/33749
	* resolve.c (resolve_ordinary_assign): New function that takes
	the code to resolve an assignment from resolve_code. In
	addition, it makes a temporary of any vector index, on the
	lhs, using gfc_get_parentheses.
	(resolve_code): On EXEC_ASSIGN call the new function.

2007-10-20  Tobias Burnus  <burnus@net-b.de>

	PR fortran/33818
	* resolve.c (resolve_variable): Check that symbol is in the same
	namespace as the entry function.

2007-10-20  Paul Thomas  <pault@gcc.gnu.org>
	    FX Coudert <fxcoudert@gcc.gnu.org>

	PR fortran/31608
	* trans-array.c (gfc_conv_expr_descriptor): For all except
	indirect references, use gfc_trans_scalar_assign instead of
	gfc_add_modify_expr.
	* iresolve.c (check_charlen_present): Separate creation of cl
	if necessary and add code to treat an EXPR_ARRAY.
	(gfc_resolve_char_achar): New function.
	(gfc_resolve_achar, gfc_resolve_char): Call it.
	(gfc_resolve_transfer): If the MOLD expression does not have a
	character length expression, get it from a constant length.

2007-10-19  Jerry DeLisle  <jvdelisle@gcc.gnu.org>

	PR fortran/33544
	* simplify.c (gfc_simplify_transfer): Only warn for short transfer when
	-Wsurprising is given.
	* invoke.texi: Document revised behavior.

2007-10-18  Jerry DeLisle  <jvdelisle@gcc.gnu.org>

	PR fortran/33795
	* gfortran.texi: Document GFORTRAN_UNBUFFERED_PRECONNECTED
	environment variable.  Delete mention of environment variable
	GFORTRAN_UNBUFFERED_n.

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

	PR fortran/33233
	* resolve.c (check_host_association): Check singly contained
	namespaces and start search for symbol in current namespace.

2007-10-18  Paul Thomas  <pault@gcc.gnu.org>
	    Dominique d'Humières  <dominiq@lps.ens.fr>

	PR fortran/33733
	* simplify.c (gfc_simplify_transfer): Return null if the source
	expression is EXPR_FUNCTION.

2007-10-17 Christopher D. Rickett <crickett@lanl.gov>

	PR fortran/33760
	* symbol.c (gen_special_c_interop_ptr): Remove code to create
	constructor for c_null_ptr and c_null_funptr with value of 0.
	* expr.c (check_init_expr): Prevent check on constructors for
	iso_c_binding derived types.
	* resolve.c (resolve_structure_cons): Verify that the user isn't
	trying to invoke a structure constructor for one of the
	iso_c_binding derived types.

2007-10-15 Christopher D. Rickett <crickett@lanl.gov>

	PR fortran/32600
	* trans-expr.c (gfc_conv_function_call): Generate code to inline
	c_associated.
	* symbol.c (get_iso_c_sym): Preserve from_intmod and intmod_sym_id
	attributes in the resolved symbol.
	* resolve.c (gfc_iso_c_sub_interface): Remove dead code.

2007-10-15  Jerry DeLisle  <jvdelisle@gcc.gnu.org>

	PR fortran/33055
	* trans-io.c (create_dummy_iostat): New function to create a unique
	dummy variable expression to use with IOSTAT.
	(gfc_trans_inquire): Use the new function to pass unit number error info
	to run-time library if a regular IOSTAT variable was not given.

2007-10-14  Tobias Burnus  <burnus@net-b.de>

	PR fortran/33745
	* trans-array.c (gfc_conv_ss_startstride): Fix dimension check.
	(gfc_trans_array_bound_check, gfc_conv_array_ref,
	gfc_conv_ss_startstride): Simplify error message.
	* resolve.c (check_dimension): Fix dimension-type switch;
	improve error message.

2007-10-13  Tobias Schlüter  <tobi@gcc.gnu.org>
	    Paul Thomas  <pault@gcc.gnu.org>

	PR fortran/33254
	PR fortran/33727
	* trans-array.c (get_array_ctor_var_strlen): Check upper bound for
	constness instead of lower bound.
	(get_array_ctor_strlen): Add bounds-checking code.

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

	PR fortran/33542
	* resolve.c (resolve_actual_arglist): If the actual argument is
	ambiguous, then there is an error.

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

	PR fortran/33664
	* expr.c (gfc_specification_expr): If a function is not
	external, intrinsic or pure is an error.  Set the symbol pure
	to prevent repeat errors.

2007-10-10  Francois-Xavier Coudert  <fxcoudert@gcc.gnu.org>

	PR fortran/33636
	* expr.c (find_array_section): Check for constructor constantness.

2007-10-08  Tobias Schlüter  <tobi@gcc.gnu.org>

	PR fortran/33689
	* resolve.c (gfc_resolve_expr): Fix indentation.
	(resolve_fl_variable_derived): Rename argument.
	(resolve_fl_variable): Fix case in message.  Clarify logic.
	Correctly simplify array bounds.

2007-10-07  Thomas Koenig  <tkoenig@gcc.gnu.org>

	PR libfortran/33683
	* mathbuiltins.def (GAMMA):  Change function name to
	"tgamma" instad of "gamma".

2007-10-07  Tobias Schlüter  <tobi@gcc.gnu.org>

	PR fortran/20851
	* expr.c (check_inquiry): Typo fix in error message.
	(check_init_expr): Same * 3.
	(check_restricted): Verify that no dummy arguments appear in
	restricted expressions in ELEMENTAL procedures.
	* resolve.c (resolve_fl_variable): Exchange order of checks to
	avoid side-effect.

2007-10-06  Jerry DeLisle  <jvdelisle@gcc.gnu.org>

	PR fortran/33609
	* simplify.c (range_check): Return gfc_bad_expr if incoming expression 
	is NULL.

2007-10-06  Tobias Schlüter  <tobi@gcc.gnu.org>

	* simplify.c (gfc_simplify_size): Fix typo.

2007-10-06  Tobias Schlüter  <tobi@gcc.gnu.org>

	PR fortran/25076
	* resolve.c (gfc_find_forall_index): Move towards top,
	renaming to ...
	(find_forall_index): ... this.  Add check for NULL expr.
	(resolve_forall_iterators): Verify additional constraint.
	(resolve_forall): Remove checks obsoleted by new code in
	resolve_forall_iterators.

2007-10-05  Francois-Xavier Coudert  <fxcoudert@gcc.gnu.org>

	* gfortran.h (gfc_get_data_variable, gfc_get_data_value,
	gfc_get_data): Move to decl.c.
	(global_used): Rename into gfc_global_used.
	(gfc_formalize_init_value, gfc_get_section_index,
	gfc_assign_data_value, gfc_assign_data_value_range,
	gfc_advance_section): Move to data.h.
	(gfc_set_in_match_data): Remove.
	* decl.c (gfc_get_data_variable, gfc_get_data_value,
	gfc_get_data): Move here.
	(gfc_set_in_match_data): Rename into set_in_match_data.
	(gfc_match_data): Likewise.
	(add_global_entry): Rename global_used into gfc_global_used.
	* data.c: Include data.h.
	* trans.h (gfc_todo_error): Remove.
	* trans-array.c (gfc_trans_array_constructor,
	gfc_conv_ss_startstride, gfc_conv_loop_setup): Change
	gfc_todo_error into assertions.
	* resolve.c (resolve_global_procedure): Rename global_used into
	gfc_global_used.
	* parse.c (gfc_global_used, parse_module, add_global_procedure,
	add_global_program): Likewise.
	* trans-intrinsic.c (gfc_walk_intrinsic_function): Rename
	global_used into gfc_global_used.
	* Make-lang.in: Add dependencies on fortran/data.h.
	* data.h: New file.

2007-10-04  Francois-Xavier Coudert  <fxcoudert@gcc.gnu.org>

	PR fortran/33529
	* decl.c (match_char_kind): New function.
	(match_char_spec): Use match_char_kind.

2007-10-04  Francois-Xavier Coudert  <fxcoudert@gcc.gnu.org>

	PR fortran/33502
	* scanner.c (gfc_advance_line): Call debug_hooks->end_source_file
	and debug_hooks->start_source_file when appropriate, and set
	dbg_emitted.
	(gfc_define_undef_line): New function.
	(load_file): Don't error out on #define and #undef lines.
	* parse.c (next_statement): Call gfc_define_undef_line.
	(gfc_parse_file): Call debug_hooks->start_source_file and
	debug_hooks->end_source_file for the main source file if
	required.
	* gfortran.h (gfc_linebuf): Add dbg_emitted field.
	(gfc_define_undef_line): New prototype.

2007-10-04  Tobias Schlüter  <tobi@gcc.gnu.org>

	PR fortran/33626
	* resolve.c (resolve_operator): Always copy the type for
	expressions in parentheses.

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

	PR fortran/33646
	PR fortran/33542
	* interface.c (check_interface1): Revert patch of 10-02.

2007-10-03  Francois-Xavier Coudert  <fxcoudert@gcc.gnu.org>

	PR fortran/26682
	* trans-decl.c (build_function_decl): Set "externally_visible"
	attribute on the MAIN program decl.

2007-10-03  Tobias Schlüter  <tobi@gcc.gnu.org>

	PR fortran/33198
	* resolve.c (has_default_initializer): Move to top.  Make bool.
	(resolve_common_blocks): Simplify logic.  Add case for derived
	type initialization.
	(resolve_fl_variable_derived): Split out from ...
	(resolve_fl_variable): ... here, while adapting to new h_d_i
	interface.

2007-10-03  Francois-Xavier Coudert  <fxcoudert@gcc.gnu.org>

	PR fortran/26682
	* options.c (gfc_post_options): Issue an error when
	-fwhole-program is used.

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

	PR fortran/33542
	* interface.c (check_interface1): Specific procedures are
	always ambiguous if they have the same name.

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

	PR fortran/33566
	* primary.c (gfc_match_rvalue): Make all expressions with array
	references to structure parameters into variable expressions.

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

	PR fortran/33554
	* trans-decl.c (init_intent_out_dt): New function.
	(gfc_trans_deferred_vars): Remove the code for default
	initialization of INTENT(OUT) derived types and put it
	in the new function.  Call it earlier than before, so
	that array offsets and lower bounds are available.

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

	PR fortran/33550
	* decl.c (get_proc_name): Return rc if rc is non-zero; ie. if
	the name is a reference to an ambiguous symbol.

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

	PR fortran/31154
	PR fortran/31229
	PR fortran/33334
	* decl.c : Declare gfc_function_kind_locs and
	gfc_function_type_locus.
	(gfc_match_kind_spec): Add second argument kind_expr_only.
	Store locus before trying to match the expression. If the
	current state corresponds to a function declaration and there
	is no match to the expression, read to the parenthesis, return
	kind = -1, dump the expression and return.
	(gfc_match_type_spec): Renamed from match_type_spec and all
	references changed.  If an interface or an external function,
	store the locus, set kind = -1 and return.  Otherwise, if kind
	is already = -1, use gfc_find_symbol to try to find a use
	associated or imported type.
	match.h : Prototype for gfc_match_type_spec.
	* parse.c (match_deferred_characteristics): New function.
	(parse_spec): If in a function, statement is USE or IMPORT
	or DERIVED_DECL and the function kind=-1, call
	match_deferred_characteristics.  If kind=-1 at the end of the
	specification expressions, this is an error.
	* parse.h : Declare external gfc_function_kind_locs and
	gfc_function_type_locus.

2007-09-27  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* module.c (mio_expr): Avoid -Wcast-qual warning.

2007-09-27  Tobias Schlüter  <tobi@gcc.gnu.org>

	* arith.c (reduce_binary_aa): Fix capitalization.
	* check.c (gfc_check_dot_product): Likewise.
	(gfc_check_matmul): Likewise.
	* expr.c (gfc_check_conformance): Likewise.
	(gfc_check_assign): Likewise.
	(gfc_default_initializer): Simplify logic.
	* trans.c (gfc_msg_bounds): Make const.
	(gfc_msg_fault): Likewise.
	(gfc_msg_wrong_return): Likewise.
	* trans.h: Add const to corresponding extern declarations.

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

	PR fortran/33568
	* trans-intrinsic.c (gfc_conv_intrinsic_aint): Allow for the 
	possibility of the optional KIND argument by making arg
	an array, counting the number of arguments and using arg[0].

2007-09-26  Francois-Xavier Coudert  <fxcoudert@gcc.gnu.org>

	PR fortran/30780
	* invoke.texi: Add note to -ffpe-trap option. Fix typos.

2007-09-23  Tobias Schlüter  <tobi@gcc.gnu.org>

	PR fortran/33269
	* io.c (check_format_string): Move NULL and constant checks into
	this function.
	(check_io_constraints): Call gfc_simplify_expr() before calling
	check_format_string().  Remove NULL and constant checks.

2007-09-24  Francois-Xavier Coudert  <fxcoudert@gcc.gnu.org>

	PR fortran/33538
	* scanner.c, parse.c, gfortran.h: Revert revision 128671.

2007-09-23  Francois-Xavier Coudert  <fxcoudert@gcc.gnu.org>

	PR fortran/33528
	* scanner.c (preprocessor_line): Call linemap_add when exiting
	a file.
	(gfc_new_file): Adjust debug code for USE_MAPPED_LOCATION.

2007-09-22  Francois-Xavier Coudert  <fxcoudert@gcc.gnu.org>

	PR fortran/33522
	* trans-types.c (gfc_get_desc_dim_type): Mark artificial
	variables with TREE_NO_WARNING.
	(gfc_get_array_descriptor_base): Likewise.

2007-09-22  Paul Thomas  <pault@gcc.gnu.org>

	PR fortran/33337
	PR fortran/33376
	* trans-decl.c (gfc_create_module_variable): Output
	derived type parameters.
	* arith.c (gfc_parentheses): Return the argument if
	it is a constant expression.
	* primary.c (gfc_match_rvalue): Remove the clearing of
	the module name and the use_assoc attribute for derived
	type parameter expressions.

2007-09-22  Francois-Xavier Coudert  <fxcoudert@gcc.gnu.org>

	PR fortran/33502
	* scanner.c (gfc_advance_line): Call debug_hooks->start_source_file
	and debug_hooks->end_source_file when entering and exiting
	included files.
	(gfc_define_undef_line): New function.
	(load_file): Ignore #define and #undef preprocessor lines
	while reading source files.
	* parse.c (next_statement): Handle #define and #undef
	preprocessor lines.
	(gfc_parse_file): Call debug_hooks->start_source_file and
	debug_hooks->end_source_file for the main source file if
	requested by the debug format.
	* gfortran.h (gfc_define_undef_line): Add prototype.

2007-09-22  Tobias Burnus  <burnus@net-b.de>

	PR fortran/33445
	* scanner.c (skip_free_comments): Warn if !$OMP& is used
	if no OpenMP directive is to be continued.

2007-09-21  Paul Thomas  <pault@gcc.gnu.org>

	*trans-expr.c (gfc_trans_pointer_assignment): Convert array
	descriptor for subref pointer assignements, rather than using
	the loop info version.

2007-09-21  Tobias Burnus  <burnus@net-b.de>

	PR fortran/33037
	* simplify.c (gfc_simplify_transfer): Warn if source size
	is smaller than result size.

2007-09-20  Asher Langton  <langton2@llnl.gov>

	PR fortran/20441
	* gfortran.h : Add init_local_* enums and init_flag_* flags to
	gfc_option_t.
	* lang.opt: Add -finit-local-zero, -finit-real, -finit-integer,
	-finit-character, and -finit-logical flags.
	* invoke.texi: Document new options.
	* resolve.c (build_init_assign): New function.
	(apply_init_assign): Move part of function into build_init_assign.
	(build_default_init_expr): Build local initializer (-finit-*).
	(apply_default_init_local): Apply local initializer (-finit-*).
	(resolve_fl_variable): Try to add local initializer (-finit-*).
	* options.c (gfc_init_options, gfc_handle_option,
	gfc_post_options): Handle -finit-local-zero, -finit-real,
	-finit-integer, -finit-character, and -finit-logical flags.

2007-09-20  Francois-Xavier Coudert  <fxcoudert@gcc.gnu.org>

	PR fortran/33221
	* gfortran.h (symbol_attribute): Add zero_comp field.
	* symbol.c (gfc_use_derived): Handle case of emtpy derived types.
	* decl.c (gfc_match_data_decl): Likewise.
	(gfc_match_derived_decl): Likewise.
	* module.c (ab_attribute, attr_bits): Add AB_ZERO_COMP member.
	(mio_symbol_attribute): Write and read AB_ZERO_COMP.
	* resolve.c (resolve_symbol): Handle case of emtpy derived types.
	* parse.c (parse_derived): Likewise.

2007-09-20  Francois-Xavier Coudert  <fxcoudert@gcc.gnu.org>

	PR fortran/33288
	* arith.c (reduce_unary, reduce_binary_ac, reduce_binary_ca,
	reduce_binary_aa): Call ourselves recursively if an element of
	the constructor is itself a constant array.

2007-09-20  Tobias Schlüter  <tobi@gcc.gnu.org>

	* io.c (resolve_tag_format): New function using code split out
	and simplified from ...
	(resolve_tag): ... this function.  Simplify logic.  Unify
	IOSTAT, IOLENGTH and SIZE handling.

2007-09-20  Christopher D. Rickett  <crickett@lanl.gov>

	PR fortran/33497
	* resolve.c (gfc_iso_c_func_interface): Use information from
	subcomponent if applicable.

2007-09-20  Tobias Burnus  <burnus@net-b.de>

	PR fortran/33325
	* intrinsic.text: Add documentation of the intrinsic modules.
	* gfortran.texi: Link to intrinsic-modules section and to
	the GOMP manual.

2007-09-18  Francois-Xavier Coudert  <fxcoudert@gcc.gnu.org>

	PR fortran/31119
	* trans-array.c (gfc_conv_ss_startstride): Only perform bounds
	checking for optional args when they are present.

2007-09-18  Tobias Burnus  <burnus@net-b.de>

	PR fortran/33231
	* resolve.c (resolve_elemental_actual): Check for conformance
	of intent out/inout dummies.

2007-09-17  Tobias Burnus  <burnus@net-b.de>

	PR fortran/33106
	* resolve.c (resolve_symbol): Reject public variable of
	private derived-types for Fortran 95.

2007-09-17  Tobias Burnus  <burnus@net-b.de>

	* resolve.c (resolve_fl_procedure): Allow private dummies
	for Fortran 2003.

2007-09-17  Francois-Xavier Coudert  <fxcoudert@gcc.gnu.org>

	* trans-types.c (gfc_get_desc_dim_type): Do not to try
	emit debug info.
	(gfc_get_array_descriptor_base): Likewise.
	(gfc_get_mixed_entry_union): Likewise
	(gfc_get_derived_type): Set decl location for fields and
	derived type itself.

2007-09-16  Paul Thomas  <pault@gcc.gnu.org>

	PR fortran/29396
	PR fortran/29606
	PR fortran/30625
	PR fortran/30871
	* trans.h : Add extra argument to gfc_build_array_ref. Rename
	gfc_conv_aliased_arg to gfc_conv_subref_array_arg.  Move
	prototype of is_aliased_array to gfortran.h and rename it
	gfc_is_subref_array.  Add field span to lang_decl, add a new
	decl lang specific flag accessed by GFC_DECL_SUBREF_ARRAY_P
	and a new type flag GFC_DECL_SUBREF_ARRAY_P.
	* trans.c (gfc_build_array_ref): Add the new argument, decl.
	If this is a subreference array pointer, use the lang_decl
	field 'span' to calculate the offset in bytes and use pointer
	arithmetic to address the element.
	* trans-array.c (gfc_conv_scalarized_array_ref,
	gfc_conv_array_ref): Add the backend declaration as the third
	field, if it is likely to be a subreference array pointer.
	(gfc_conv_descriptor_dimension, gfc_trans_array_ctor_element,
	gfc_trans_array_constructor_element, structure_alloc_comps,
	gfc_conv_array_index_offset): For all other references to
	gfc_build_array_ref, set the third argument to NULL.
	(gfc_get_dataptr_offset): New function.
	(gfc_conv_expr_descriptor): If the rhs of a pointer assignment
	is a subreference array, then calculate the offset to the
	subreference of the first element and set the descriptor data
	pointer to this, using gfc_get_dataptr_offset.
	trans-expr.c (gfc_get_expr_charlen): Use the expression for the
	character length for a character subreference.
	(gfc_conv_substring, gfc_conv_subref_array_arg): Add NULL for
	third argument in call to gfc_build_array_ref.
	(gfc_conv_aliased_arg): Rename to gfc_conv_subref_array_arg.
	(is_aliased_array): Remove.
	(gfc_conv_function_call): Change reference to is_aliased_array
	to gfc_is_subref_array and reference to gfc_conv_aliased_arg to
	gfc_conv_subref_array_arg.
	(gfc_trans_pointer_assignment): Add the array element length to
	the lang_decl 'span' field.
	* gfortran.h : Add subref_array_pointer to symbol_attribute and
	add the prototype for gfc_is_subref_array.
	* trans-stmt.c : Add NULL for third argument in all references
	to gfc_build_array_ref.
	* expr.c (gfc_is_subref_array): Renamed is_aliased_array.
	If this is a subreference array pointer, return true.
	(gfc_check_pointer_assign): If the rhs is a subreference array,
	set the lhs subreference_array_pointer attribute.
	* trans-decl.c (gfc_get_symbol_decl): Allocate the lang_decl
	field if the symbol is a subreference array pointer and set an
	initial value of zero for the 'span' field.
	* trans-io.c (set_internal_unit): Refer to is_subref_array and
	gfc_conv_subref_array_arg.
	(nml_get_addr_expr): Add NULL third argument to
	gfc_build_array_ref. 
	(gfc_trans_transfer): Use the scalarizer for a subreference
	array.

2007-09-13  Thomas Koenig  <tkoenig@gcc.gnu.org>

	* iresolve.c (resolve_mask_arg): If a mask is an array
	expression, convert it to kind=1.

2007-09-13  Tobias Burnus  <burnus@net-b.de>

	PR fortran/33343
	* expr.c (gfc_check_conformance): Print ranks in the error message.
	* resolve.c (resolve_elemental_actual): Check also conformance of
	the actual arguments for elemental functions.

2007-09-13  Tobias Burnus  <burnus@net-b.de>

	* symbol.c (gfc_add_elemental,gfc_add_pure,gfc_add_recursive):
	Allow prefixes only to be specified once.

2007-09-13  Tobias Burnus  <burnus@net-b.de>

	PR fortran/33412
	* symbol.c (check_conflict): Add conflict of ELEMENTAL with Bind(C).

2007-09-12  Tobias Burnus  <burnus@net-b.de>

	PR fortran/33297
	* check.c (scalar_check): Move up in the file.
	(kind_check): Call scalar_check.
	(dim_check): If optional, do not call nonoptional_check; use
	bool for optional.
	(gfc_check_all_any,gfc_check_count,gfc_check_cshift,gfc_check_eoshift,
	gfc_check_lbound,gfc_check_minloc_maxloc,check_reduction,
	gfc_check_spread,gfc_check_ubound): Use true/false instead of 0/1
	for dim_check; honor changed meaning of optional.
	(gfc_check_int): Replace checks by kind_check.
	(gfc_check_size): Replace checks by dim_check.

2007-09-12  Tobias Burnus  <burnus@net-b.de>

	PR fortran/33284
	PR fortran/33310
	* symbol.c (check_conflict): Add conflict between INTRINSIC and ENTRY
	and between BIND(C) and PARAMETER.

2007-09-12  Tobias Burnus  <burnus@net-b.de>

	* trans-expr.c (gfc_conv_initializer): Fix expr == NULL check.

2007-09-12  Jan Hubicka  <jh@suse.cz>

	* f95-lang.c (LANG_HOOKS_CALLGRAPH_EXPAND_FUNCTION): Kill.

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

	PR fortran/33395
	* trans-expr.c (gfc_conv_initializer): Remove unnecessary test for
	intmod_sym_id and use derived symbol to set new kind of C_NULL_PTR
	and C_NULL_FUNPTR expressions.

2007-09-11  Christopher D. Rickett  <crickett@lanl.gov>

	PR fortran/33040
	* trans-expr.c (gfc_trans_structure_assign): Convert component
	C_NULL_PTR and C_NULL_FUNPTR component initializers to (void *).
	* trans-types.c (gfc_get_derived_type): Create a backend_decl for
	the c_address field of C_PTR and C_FUNPTR and ensure initializer
	is of proper type/kind for (void *).

2007-09-11  Jan Hubicka <jh@suse.cz>

	* f95-lang.c (gfc_expand_function): Kill.
	(LANG_HOOKS_CALLGRAPH_EXPAND_FUNCTION): Kill.

2007-09-08  Tobias Burnus  <burnus@net-b.de>

	PR fortran/31547
	* gfortran.texi: Document when CPP is called.

	* intrinsic.texi (IOR): Fix typos.

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

	PR fortran/33370
	* trans-expr.c (copyable_array_p):  Add tests that expression
	is a variable, that it has no subreferences and that it is a
	full array.
	(gfc_trans_assignment): Change conditions to suit modifications
	to copyable_array_p.

2007-09-06  Tom Tromey  <tromey@redhat.com>

	* scanner.c (get_file): Update.
	(load_file): Update.
	(gfc_next_char_literal): Use gfc_linebuf_linenum.
	* f95-lang.c (gfc_init): Update.
	* gfortran.h (gfc_linebuf_linenum): New macro.

2007-09-05  Sandra Loosemore  <sandra@codesourcery.com>

	* trans-decl.c (build_entry_thunks): Use set_cfun.
	(gfc_generate_function_code): Likewise.

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

	PR fortran/31564
	* primary.c (gfc_match_rvalue): Make expressions that refer
	to derived type parameters that have array references into
	variable expressions.  Remove references to use association
	from the symbol.

	PR fortran/33241
	* decl.c (add_init_expr_to_sym): Provide assumed character
	length parameters with the length of the initialization
	expression, if a constant, or that of the first element of
	an array.

2007-09-04  Janus Weil  <jaydub66@gmail.com>
	    Paul Thomas  <pault@gcc.gnu.org>

	* decl.c (match_procedure_decl,match_procedure_in_interface,
	gfc_match_procedure): Handle PROCEDURE statements.
	* gfortran.h (struct gfc_symbol): New member "gfc_symbol *interface".
	(enum gfc_statement): New element "ST_PROCEDURE".
	(strcut symbol_attribute): New member "unsigned procedure".
	* interface.c (check_interface0): Extended error checking.
	* match.h: Add gfc_match_procedure prototype.
	* parse.c (decode_statement,next_statement,gfc_ascii_statement,
	parse_derived,parse_interface): Implement PROCEDURE statements.
	* resolve.c (resolve_symbol): Ditto.
	* symbol.c (check_conflict): Ditto.
	(gfc_add_proc): New function for setting the procedure attribute.
	(copy_formal_args): New function for copying formal argument lists.

2007-09-03  Daniel Jacobowitz  <dan@codesourcery.com>

	* Make-lang.in (gfortranspec.o): Remove SHLIB_MULTILIB.

2007-09-03  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* gfortranspec.c (lang_specific_driver): Use CONST_CAST2.
	* options.c (gfc_post_options): Supply a TYPE for CONST_CAST.
	* parse.c (parse_omp_structured_block): Likewise,
	* st.c (gfc_free_statement): Likewise,

2007-09-03  Francois-Xavier Coudert  <fxcoudert@gcc.gnu.org>

	PR fortran/31675
	* libgfortran.h: New file.
	* iso-fortran-env.def: Use macros in the new header instead of
	hardcoded integer constants.
	* Make-lang.in (F95_PARSER_OBJS, GFORTRAN_TRANS_DEPS): Add
	fortran/libgfortran.h.
	* gfortran.h (GFC_STD_*, GFC_FPE_*, options_convert,
	ioerror_codes): Remove.
	* trans.c (ERROR_ALLOCATION): Remove.
	(gfc_call_malloc, gfc_allocate_with_status,
	gfc_allocate_array_with_status): Use LIBERROR_ALLOCATION.
	* trans-types.h (GFC_DTYPE_*): Remove.
	* trans-decl.c (gfc_generate_function_code): Use
	GFC_CONVERT_NATIVE instead of CONVERT_NATIVE.
	* trans-io.c (set_parameter_value, set_parameter_ref): Use
	LIBERROR_* macros instead of IOERROR_ macros.
	* trans-intrinsic.c (gfc_conv_intrinsic_function): Use
	LIBERROR_END and LIBERROR_EOR instead of hardcoded constants.
	* options.c (gfc_init_options): Use GFC_CONVERT_NATIVE instead of
	CONVERT_NATIVE.
	(gfc_handle_option): Use GFC_CONVERT_* macros instead of CONVERT_*.

2007-09-02  Steven G. Kargl  <kargl@gcc.gnu.org>

	* invoke.texi: Fix the -frange-checking option entry.

2007-09-02  Roger Sayle  <roger@eyesopen.com>

	* decl.c (match_string_p): New helper function to explicitly match
	a string of characters.
	(match_attr_spec): Remove no longer needed DECL_COLON from decl_types.
	Delete decls array and peek_char.  Rewrite decl attribute parser to
	avoid calling gfc_match_strings.
	* match.c (gfc_match_strings): Delete unused function.
	* match.h (gfc_match_strings): Delete prototype.

2007-09-02  Tobias Schlüter  <tobi@gcc.gnu.org>

	* dump-parse-tree.c (show_char_const): New function.
	(gfc_show_expr): Use it.
	* expr.c (find_substring_ref): Rework to not keep characters
	dangling beyond end of string.

2007-09-02  H.J. Lu  <hongjiu.lu@intel.com>

	PR fortran/33276
	* array.c (expand_iterator): Initialize frame.prev.

2007-08-31  Tobias Burnus  <burnus@net-b.de>

	PR fortran/33232
	* io.c (match_io): Also diagnose extra comma for READ.

2007-08-31  Joseph Myers  <joseph@codesourcery.com>

	* intrinsic.texi (LGAMMA): Remove empty @cindex line.

2007-08-31  Paul Thomas  <pault@gcc.gnu.org>

	PR fortran/31879
	PR fortran/31197
	PR fortran/31258
	PR fortran/32703
	* gfortran.h : Add prototype for gfc_resolve_substring_charlen.
	* resolve.c (gfc_resolve_substring_charlen): New function.
	(resolve_ref): Call gfc_resolve_substring_charlen.
	(gfc_resolve_character_operator): New function.
	(gfc_resolve_expr): Call the new functions in cases where the
	character length is missing.
	* iresolve.c (cshift, eoshift, merge, pack, reshape, spread,
	transpose, unpack): Call gfc_resolve_substring_charlen for
	source expressions that are character and have a reference.
	* trans.h (gfc_trans_init_string_length) Change name to
	gfc_conv_string_length; modify references in trans-expr.c,
	trans-array.c and trans-decl.c.
	* trans-expr.c (gfc_trans_string_length): Handle case of no
	backend_decl.
	(gfc_conv_aliased_arg): Remove code for treating substrings
	and replace with call to gfc_trans_string_length.
	* trans-array.c (gfc_conv_expr_descriptor): Remove code for
	treating strings and call gfc_trans_string_length instead.

2007-08-30  Tobias Burnus  <burnus@net-b.de>

	PR fortran/33228
	* interface.c (check_interface0): Improve error for external procs.
	(check_sym_interfaces): Fix checking of module procedures.

2007-08-29  Francois-Xavier Coudert  <fxcoudert@gcc.gnu.org>

	PR fortran/32989
	* iresolve.c (gfc_resolve_getarg): Handle non-default integer
	kinds.
	* check.c (gfc_check_getarg): New function
	* intrinsic.h: Add prototype for gfc_check_getarg.
	* intrinsic.c (add_subroutines): Add reference to gfc_check_getarg.
	* intrinsic.texi (GETARG): Adjust documentation.

2007-08-29  Francois-Xavier Coudert  <fxcoudert@gcc.gnu.org>
	    Tobias Burnus  <burnus@gcc.gnu.org>

	PR fortran/33105
	* intrinsic.c (add_functions): Add IS_IOSTAT_END and
	IS_IOSTAT_EOR intrinsics.
	* gfortran.h (gfc_isym_id): Add GFC_ISYM_IS_IOSTAT_END and
	GFC_ISYM_IS_IOSTAT_EOR.
	* trans-intrinsic.c (gfc_conv_has_intvalue): New function.
	(gfc_conv_intrinsic_function): Call gfc_conv_has_intvalue for
	GFC_ISYM_IS_IOSTAT_END and GFC_ISYM_IS_IOSTAT_EOR.
	* intrinsic.texi: Add IS_IOSTAT_END and IS_IOSTAT_EOR.

2007-08-28  Christopher D. Rickett  <crickett@lanl.gov>

	PR fortran/33215
	* decl.c (build_sym): Pass number of identifiers on line to
	set_binding_label.
	(set_binding_label): Verify that only one identifier given if
	NAME= specified, even if the given binding label has zero length.
	(gfc_match_bind_c): Remove declaration for has_name_equals because
	it hides the static global one that is needed.

2007-08-29  Francois-Xavier Coudert  <fxcoudert@gcc.gnu.org>

	* trans-array.c (gfc_grow_array): Use gfc_call_realloc.
	(gfc_array_allocate): Use gfc_allocate_with_status and
	gfc_allocate_array_with_status.
	(gfc_array_deallocate): Use gfc_deallocate_with_status.
	(gfc_trans_dealloc_allocated): Use gfc_deallocate_with_status.
	* trans-stmt.c (gfc_trans_allocate): Use gfc_allocate_with_status.
	(gfc_trans_deallocate): Use gfc_deallocate_with_status.
	* trans.c (gfc_allocate_with_status, gfc_allocate_array_with_status,
	gfc_deallocate_with_status, gfc_call_realloc): New functions.
	* trans.h (gfc_allocate_with_status, gfc_allocate_array_with_status,
	gfc_deallocate_with_status, gfc_call_realloc): New prototypes.
	(gfor_fndecl_internal_realloc, gfor_fndecl_allocate,
	gfor_fndecl_allocate_array, gfor_fndecl_deallocate): Remove.
	* f95-lang.c (gfc_init_builtin_functions): Create decl for
	BUILT_IN_REALLOC.
	* trans-decl.c (gfor_fndecl_internal_realloc,
	gfor_fndecl_allocate, gfor_fndecl_allocate_array,
	gfor_fndecl_deallocate): Remove function decls.
	(gfc_build_builtin_function_decls): Likewise.

2007-08-28  Jerry DeLisle  <jvdelisle@gcc.gnu.org>

	PR fortran/33055
	Revert previous patch.

2007-08-28  Jakub Jelinek  <jakub@redhat.com>

	PR fortran/22244
	* Make-lang.in (fortran/trans-types.o): Depend on $(FLAGS_H).
	* trans-types.c: Include flags.h.
	(gfc_get_nodesc_array_type): Add TYPE_DECL TYPE_NAME with
	correct bounds and dimensions for packed arrays.

2007-08-27  Tobias Burnus  <burnus@net-b.de>

	* simplify.c (gfc_simplify_lgamma): Fix mpfr_lgamma call.

2007-08-26  Jerry DeLisle  <jvdelisle@gcc.gnu.org>

	PR fortran/33055
	* trans-io.c (create_dummy_iostat): New function to create a unique
	dummy variable expression to use with IOSTAT.
	(gfc_trans_inquire): Use the new function to pass unit number error info
	to run-time library if a regular IOSTAT variable was not given.

2007-08-26  H.J. Lu  <hongjiu.lu@intel.com>

	* gfortran.h (gfc_isym_id): Add GFC_ISYM_GAMMA and
	GFC_ISYM_LGAMMA.

2007-08-26  Asher Langton  <langton2@llnl.gov>
	    Tobias Burnus  <burnus@net-b.de>

	* gfortran.h (gfc_option_t): Add flag_recursive.
	* lang.opt: Add -frecursive option and update -fopenmp.
	* invoke.texi (-frecursive): Document new option.
	(-fopenmp,-fno-automatic,-fmax-stack-var-size): Update.
	* options.c (gfc_init_options, gfc_post_options,
	gfc_handle_option): Add -frecursive and modify -fopenmp.
	(gfc_post_options): Add warning for conflicting flags.

2007-08-26  Tobias Burnus  <burnus@net-b.de>

	PR fortran/31298
	* module.c (mio_symbol_ref,mio_interface_rest):  Return pointer_info.
	(load_operator_interfaces): Support multible loading of an operator.

2007-08-26  Tobias Burnus  <burnus@net-b.de>

	PR fortran/32985
	* match.c (gfc_match_common): Remove SEQUENCE diagnostics.
	* resolve.c (resolve_common_blocks): Add SEQUENCE diagnostics;
	fix walking through the tree.

2007-08-26  Tobias Burnus  <burnus@net-b.de>

	PR fortran/32980
	* intrinsic.h (gfc_simplify_gamma,gfc_simplify_lgamma,
	gfc_resolve_gamma,gfc_resolve_lgamma): New function declations.
	* mathbuiltins.def: Define GAMMA and LGAMMA.
	* intrinsic.c (add_functions): Add GAMMA, DGAMMA, LGAMMA, ALGAMA
	and DLGAMA.
	* simplify.c (gfc_simplify_gamma,gfc_simplify_lgamma): New functions.
	* iresolve.c (gfc_resolve_gamma,gfc_resolve_lgamma): New functions.
	* intrinsic.texi: Add documentation for GAMMA and LGAMMA.

2007-08-26  Tobias Burnus  <burnus@net-b.de>

	PR fortran/33188
	* parse.c (parse_derived): Support empty derived type
	definitions for Fortran 2003.

2007-08-25  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* trans-openmp.c (gfc_omp_privatize_by_reference): Constify.
	* trans.h (gfc_omp_privatize_by_reference): Likewise.

2007-08-24  Tobias Burnus  <burnus@net-b.de>

	PR fortran/33178
	* intrinsic.c (gfc_intrinsic_func_interface): Fix initialization
	expression check.

2007-08-24  Thomas Koenig  <tkoenig@gcc.gnu.org>

	PR fortran/32972
	* iresolve.c:  Don't convert array masks.

2007-08-24  Tobias Burnus  <burnus@net-b.de>

	PR fortran/33139
	* trans-array.c (gfc_conv_expr_descriptor): Copy bounds for
	whole-array pointer assignments.

2007-08-23  Jakub Jelinek  <jakub@redhat.com>

	* decl.c (variable_decl): Don't share charlen structs if
	length == NULL.
	* trans-decl.c (create_function_arglist): Assert
	f->sym->ts.cl->backend_decl is NULL instead of unsharing
	charlen struct here.

2007-08-23  Francois-Xavier Coudert  <fxcoudert@gcc.gnu.org>

	PR fortran/33095
	* trans-intrinsic.c (gfc_conv_intrinsic_minmax): Remove
	runtime error checking.

2007-08-22  Roger Sayle  <roger@eyesopen.com>
	    Tobias Schlüter <tobias.schlueter@physik.uni-muenchen.de>

	* match.c (intrinsic_operators): Delete.
	(gfc_match_intrinsic_op): Rewrite matcher to avoid calling
	gfc_match_strings.

2007-08-22  Christopher D. Rickett  <crickett@lanl.gov>

	PR fortran/33020
	* resolve.c (gfc_iso_c_sub_interface): Remove setting of type and
	kind for optional SHAPE parameter of C_F_POINTER.

2007-08-22  Janus Weil  <jaydub66@gmail.com>

	* decl.c (match_attr_spec): Pass on errors from gfc_match_bind_c.
	(gfc_match_bind_c): Bugfix in check for NAME= with abstract interfaces.
	(gfc_match_mopdproc): Bugfix to reject module procedures in
	abstract interfaces.

2007-08-22  Kai Tietz  <kai.tietz@onevision.com>

	* f95-lang.c: (gfc_init_decl_processing): Choose sizetype by using
	Pmode.

2007-08-21  Paul Brook  <paul@codesourcery.com>
	    Nathan Sidwell  <nathan@codesourcery.com>
	    Mark Mitchell  <mark@codesourcery.com>
	    Joseph Myers  <joseph@codesourcery.com>

	* gfortranspec.c (lang_specific_driver): Use pkgversion_string.
	* Make-lang.in (gfortran.pod): Define BUGURL.
	* invoke.texi: Use BUGURL for bug-reporting instructions.

2007-08-19  Roger Sayle  <roger@eyesopen.com>

	* match.c (intrinsic_operators): Make static.
	(gfc_op2string): New function for converting a gfc_intrinsic_op to
	to a "const char*", replacing the macro of the same name.
	* gfortran.h (intrinsic_operators): Delete prototype.
	(gfc_op2string): Replace macro with function prototype.

2007-08-18  Tobias Burnus  <burnus@net-b.de>

	* gfortran.h (gfc_is_intrinsic_typename): Add declaration.
	* symbol.c (gfc_is_intrinsic_typename): New function.
	* parse.c (decode_statement): Check for space in ABSTRACT INTERFACE.
	(parse_interface): Use gfc_is_intrinsic_typename.
	* decl.c (gfc_match_derived_decl): Ditto.
	* module.c (gfc_match_use): Use gcc_unreachable() for
	INTERFACE_ABSTRACT in switch().

2007-08-18  Roger Sayle  <roger@eyesopen.com>

	* primary.c (match_logical_constant_string): New function to match
	a ".true." or a ".false.".
	(match_logical_constant): Use it instead of gfc_match_strings.

2007-08-18  Paul Thomas  <pault@gcc.gnu.org>
	    Janus Weil  <jaydub66@gmail.com>

	* interface.c (gfc_match_interface,gfc_match_abstract_interface,
	gfc_match_end_interface,gfc_add_interface): Add abstract interface.
	* dump-parse-tree.c (gfc_show_attr): Ditto.
	* gfortran.h (interface_type,symbol_attribute): Ditto.
	* module.c (gfc_match_use,ab_attribute,attr_bits,
	mio_symbol_attribute): Ditto.
	* resolve.c (resolve_function): Ditto.
	* match.h: Ditto.
	* parse.c (decode_statement): Ditto.
	(parse_interface): Ditto, check for C1203 (name of abstract interface
	cannot be the same as an intrinsic type).
	* decl.c (gfc_match_bind_c): Check for NAME= with abstract interfaces.
	(access_attr_decl): Handle Abstract interfaces.

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

	PR fortran/32881
	* expr.c (gfc_check_pointer_assign): If the rhs is the
	initialization expression for the rhs, there is no error.

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

	PR fortran/32875
	* trans-array.c	(get_array_ctor_strlen): Set the character
	length of a zero length array to zero.

2007-08-16  Tobias Burnus  <burnus@net-b.de>

	PR fortran/33072
	* module.c (gfc_match_use): Mark user operators as such.
	(find_use_name_n): Distinguish between operators and other symbols.
	(find_use_name,number_use_names,mio_namelist,
	 load_operator_interfaces,load_generic_interfaces,read_module,
	 write_generic): Update find_use_name_n calls.

2007-08-15  Francois-Xavier Coudert  <fxcoudert@gcc.gnu.org>

	PR fortran/29459
	* trans.c (gfc_create_var_np): Do not emit warnings for
	anonymous variables.

2007-08-15  Francois-Xavier Coudert  <fxcoudert@gcc.gnu.org>

	PR fortran/33066
	* decl.c (gfc_get_type_attr_spec): Fix whitespace.
	(gfc_match_derived_decl): Fix logic.

2007-08-14  Francois-Xavier Coudert  <fxcoudert@gcc.gnu.org>

	PR fortran/33073
	* trans-intrinsic.c (build_fixbound_expr): Convert to result type
	in all cases.

2007-08-14  Francois-Xavier Coudert  <fxcoudert@gcc.gnu.org>

	PR fortran/32594
	* trans-expr.c (gfc_conv_substring_expr): Only call
	gfc_conv_substring if expr->ref is not NULL.
	* expr.c (gfc_is_constant_expr): If e->ref is NULL, the substring
	expression might be a constant.
	(gfc_simplify_expr): Handle missing start and end, as well as
	missing ref.

2007-08-13  Paul Thomas  <pault@gcc.gnu.org>

	PR fortran/32926
	* match.c (gfc_match_call): Do not create a new symtree in the
	case where the existing symbol is external and not referenced.

2007-08-13  Paul Thomas  <pault@gcc.gnu.org>

	PR fortran/32827
	* decl.c (variable_decl): Check for an imported symbol
	by looking for its symtree and testing for the imported
	attribute.
	(gfc_match_import): Remove change of symbol's namespace
	and set the attribute imported instead.
	* symbol.c (gfc_get_sym_tree): It is not an error if a
	symbol is imported.
	* gfortran.h : Add the 'imported' to symbol_attribute.

2007-08-13  Paul Thomas  <pault@gcc.gnu.org>

	PR fortran/32962
	* trans-array.c (gfc_conv_array_transpose): Set the offset
	of the destination to zero if the loop is zero based.

2007-08-12  Francois-Xavier Coudert  <fxcoudert@gcc.gnu.org>

	PR fortran/29600
	* intrinsic.c (add_functions): Add optional KIND argument to ACHAR.
	* iresolve.c (gfc_resolve_achar): Handle the KIND argument.
	* check.c (gfc_check_achar): Check for the optional KIND argument.
	* simplify.c (gfc_simplify_achar): Use KIND argument.
	* intrinsic.h (gfc_check_achar, gfc_simplify_achar,
	gfc_resolve_achar): Adjust prototypes.

2007-08-12  Francois-Xavier Coudert  <fxcoudert@gcc.gnu.org>

	PR fortran/30964
	PR fortran/33054
	* trans-expr.c (gfc_conv_function_call): When no formal argument
	list is available, we still substitute missing optional arguments.
	* check.c (gfc_check_random_seed): Correct the check on the
	number of arguments to RANDOM_SEED.
	* intrinsic.c (add_subroutines): Add a resolution function to
	RANDOM_SEED.
	* iresolve.c (gfc_resolve_random_seed): New function.
	* intrinsic.h (gfc_resolve_random_seed): New prototype.

2007-08-12  Francois-Xavier Coudert  <fxcoudert@gcc.gnu.org>

	PR fortran/32860
	* error.c (error_uinteger): New function.
	(error_integer): Call error_uinteger.
	(error_print): Handle %u, %lu, %li and %ld format specifiers.
	* interface.c (compare_actual_formal): Use the new %lu specifier.

2007-08-12  Francois-Xavier Coudert  <fxcoudert@gcc.gnu.org>

	PR fortran/31629
	* lang.opt (-fmodule-private): New option.
	* gfortran.h (gfc_option_t): Add flag_module_private member.
	* invoke.texi (-fmodule-private): Document the new option.
	* module.c (gfc_check_access): Allow the -fmodule-private option
	to modify the default behaviour.
	* options.c (gfc_init_options): Initialize flag_module_private.
	(gfc_handle_option): Handle -fmodule-private.

2007-08-12  Francois-Xavier Coudert  <fxcoudert@gcc.gnu.org>

	PR fortran/29600
	* intrinsic.c (add_functions): Add KIND arguments to COUNT,
	IACHAR, ICHAR, INDEX, LBOUND, LEN, LEN_TRIM, SCAN, SIZE, UBOUND
	and VERIFY.
	* iresolve.c (gfc_resolve_count): Add kind argument.
	(gfc_resolve_iachar): New function.
	(gfc_resolve_ichar): Add kind argument.
	(gfc_resolve_index_func): Likewise.
	(gfc_resolve_lbound): Likewise.
	(gfc_resolve_len): Likewise.
	(gfc_resolve_len_trim): Likewise.
	(gfc_resolve_scan): Likewise.
	(gfc_resolve_size): New function.
	(gfc_resolve_ubound): Add kind argument.
	(gfc_resolve_verify): Likewise.
	* trans-decl.c (gfc_get_extern_function_decl): Allow specific
	intrinsics to have 4 arguments.
	* check.c (gfc_check_count): Add kind argument.
	(gfc_check_ichar_iachar): Likewise.
	(gfc_check_index): Likewise.
	(gfc_check_lbound): Likewise.
	(gfc_check_len_lentrim): New function.
	(gfc_check_scan): Add kind argument.
	(gfc_check_size): Likewise.
	(gfc_check_ubound): Likewise.
	(gfc_check_verify): Likewise.
	* intrinsic.texi: Update documentation for COUNT, IACHAR, ICHAR,
	INDEX, LBOUND, LEN, LEN_TRIM, SCAN, SIZE, UBOUND and VERIFY.
	* simplify.c (get_kind): Whitespace fix.
	(int_expr_with_kind): New function.
	(gfc_simplify_iachar): Add kind argument.
	(gfc_simplify_iachar): Likewise.
	(gfc_simplify_ichar): Likewise.
	(gfc_simplify_index): Likewise.
	(simplify_bound_dim): Likewise.
	(simplify_bound): Likewise.
	(gfc_simplify_lbound): Likewise.
	(gfc_simplify_len): Likewise.
	(gfc_simplify_len_trim): Likewise.
	(gfc_simplify_scan): Likewise.
	(gfc_simplify_shape): Pass NULL as kind argument to gfc_simplify_size.
	(gfc_simplify_size): Add kind argument.
	(gfc_simplify_ubound): Likewise.
	(gfc_simplify_verify): Likewise.
	* intrinsic.h: Update prototypes and add new ones.
	* trans-intrinsic.c (gfc_conv_intrinsic_index): Rename into
	gfc_conv_intrinsic_index_scan_verify.
	(gfc_conv_intrinsic_scan, gfc_conv_intrinsic_verify): Remove.
	(gfc_conv_intrinsic_function): Call
	gfc_conv_intrinsic_index_scan_verify to translate the INDEX,
	SCAN and VERIFY intrinsics.

2007-08-11  Francois-Xavier Coudert  <fxcoudert@gcc.gnu.org>

	PR fortran/31189
	* invoke.texi (-fbacktrace): Document the new behaviour.

2007-08-11  Francois-Xavier Coudert  <fxcoudert@gcc.gnu.org>

	PR fortran/32937
	* trans-array.c (gfc_conv_expr_descriptor): Use
	gfc_conv_const_charlen to generate backend_decl of right type.
	* trans-expr.c (gfc_conv_expr_op): Use correct return type.
	(gfc_build_compare_string): Use int type instead of default
	integer kind for single character comparison.
	(gfc_conv_aliased_arg): Give backend_decl the right type.
	* trans-decl.c (gfc_build_intrinsic_function_decls): Make
	compare_string return an int.

2007-08-11  Ian Lance Taylor  <iant@google.com>

	* f95-lang.c (gfc_get_alias_set): Change return type to
	alias_set_type.

2007-08-10  Francois-Xavier Coudert  <fxcoudert@gcc.gnu.org>

	PR fortran/31270
	* trans.c (gfc_trans_runtime_check): Reorder arguments and
	add extra variable arguments. Hand them to the library function.
	* trans.h (gfc_trans_runtime_check): Update prototype.
	* trans-array.c (gfc_trans_array_bound_check): Issue more
	detailled error messages.
	(gfc_conv_array_ref): Likewise.
	(gfc_conv_ss_startstride): Likewise.
	(gfc_trans_dummy_array_bias): Reorder arguments to
	gfc_trans_runtime_check.
	* trans-expr.c (gfc_conv_substring): Issue more detailled
	error messages.
	(gfc_conv_function_call): Reorder arguments to gfc_trans_runtime_check.
	* trans-stmt.c (gfc_trans_goto): Likewise.
	* trans-io.c (set_string): Reorder arguments to
	gfc_trans_runtime_check and issue a more detailled error message.
	* trans-decl.c (gfc_build_builtin_function_decls): Make
	runtime_error and runtime_error_at handle a variable number of
	arguments.
	* trans-intrinsic.c (gfc_conv_intrinsic_bound): Reorder arguments
	to gfc_trans_runtime_check.
	(gfc_conv_intrinsic_minmax): Likewise.
	(gfc_conv_intrinsic_repeat): Issue more detailled error messages.

2007-08-10  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* gfortranspec.c (lang_specific_driver): Use CONST_CAST.
	* options.c (gfc_post_options): Likewise.
	* parse.c (parse_omp_structured_block): Likewise.
	* st.c (gfc_free_statement): Likewise.

2007-08-10  Francois-Xavier Coudert  <fxcoudert@gcc.gnu.org>

	PR fortran/32933
	* trans-decl.c (gfc_build_builtin_function_decls): Change
	prototype for associated.
	* trans-intrinsic.c (gfc_conv_intrinsic_minmax): Convert the
	result of __builtin_isnan into a boolean.
	(gfc_conv_intrinsic_strcmp): Cleanup.
	(gfc_conv_associated): Convert the result of the associated
	function into a boolean.

2007-08-09  Tobias Burnus  <burnus@net-b.de>

	PR fortran/32987
	* io.c (format_token): Add FMT_ERROR.
	(next_char_not_space): Print error/warning when
	'\t' are used in format specifications.
	(format_lex): Propagate error.
	(check_format): Ditto.

2007-08-09  Tobias Burnus  <burnus@net-b.de>

	PR fortran/33001
	* arith.c (arith_error): Point in the error message
	to -fno-range-check.

2007-08-09  Francois-Xavier Coudert  <fxcoudert@gcc.gnu.org>

	PR fortran/32902
	* intrinsic.texi (SIZEOF): Add mention to C_SIZE_T.

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

	PR fortran/32732
	* trans-expr.c (gfc_conv_scalar_char_value): Convert the tree and
	actual arg expressions for scalar characters passed by-value to
	bind(c) routines.
	(gfc_conv_function_call): Call gfc_conv_scalar_char_value.
	* trans.h: Add prototype for gfc_conv_scalar_char_value.
	* trans-decl.c (generate_local_decl): Convert by-value character
	dummy args of bind(c) procedures using
	gfc_conv_scalar_char_value.

2007-08-06  Francois-Xavier Coudert  <fxcoudert@gcc.gnu.org>

	PR fortran/30947
	* iresolve.c (gfc_resolve_alarm_sub): Suffix the subroutine name
	with the kind of the STATUS argument.

2007-08-06  Francois-Xavier Coudert  <fxcoudert@gcc.gnu.org>

	PR fortran/30948
	* intrinsic.c (add_functions): Fix name of argument to CHDIR.

2007-08-06  Francois-Xavier Coudert  <fxcoudert@gcc.gnu.org>

	PR fortran/30933
	* iresolve.c (gfc_resolve_exit): Convert argument to default
	integer kind.

2007-08-06  Daniel Franke  <franke.daniel@gmail.com>

	* resolve.c (derived_pointer): Removed, replaced callers by access 
	to appropiate attribute bit.
	(derived_inaccessable): Shortcut recursion depth.
	(resolve_fl_namelist): Fixed checks for private components in namelists.

2007-08-06  Francois-Xavier Coudert  <fxcoudert@gcc.gnu.org>

	PR fortran/29828
	* trans.h (gfor_fndecl_string_minmax): New prototype.
	* trans-decl.c (gfor_fndecl_string_minmax): New variable.
	(gfc_build_intrinsic_function_decls): Create gfor_fndecl_string_minmax.
	* check.c (gfc_check_min_max): Allow for character arguments.
	* trans-intrinsic.c (gfc_conv_intrinsic_minmax_char): New function.
	(gfc_conv_intrinsic_function): Add special case for MIN and MAX
	intrinsics with character arguments.
	* simplify.c (simplify_min_max): Add simplification for character
	arguments.

2007-08-06  Francois-Xavier Coudert  <fxcoudert@gcc.gnu.org>

	PR fortran/31612
	* invoke.texi: Adjust documentation for option -fsyntax-only.

2007-08-05  Francois-Xavier Coudert  <fxcoudert@gcc.gnu.org>
	    Tobias Burnus  <burnus@gcc.gnu.org>

	PR fortran/32979
	* intrinsic.h (gfc_check_isnan): Add prototype.
	* gfortran.h (gfc_isym_id): Add GFC_ISYM_ISNAN.
	* intrinsic.c (add_functions): Add ISNAN intrinsic.
	* check.c (gfc_check_isnan): New function.
	* trans-intrinsic.c (gfc_conv_intrinsic_isnan): New function.
	(gfc_conv_intrinsic_function): Call gfc_conv_intrinsic_isnan
	to translate ISNAN.
	* intrinsic.texi: Document ISNAN.

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

	PR fortran/31214
	* symbol.c (get_unique_symtree): Moved from module.c.
	* module.c (get_unique_symtree): Moved to symbol.c.
	* decl.c (get_proc_name): Transfer the typespec from the local
	symbol to the module symbol, in the case that an entry is also
	a module procedure.  Ensure the local symbol is cleaned up by
	pointing to it with a unique symtree.

	* dump_parse_tree (gfc_show_code_node): Add EXEC_ASSIGN_CALL.

2007-08-04  Steven G. Kargl  <kargl@gcc.gnu.org>

	PR fortran/32969
	* iresolve.c (gfc_resolve_rrspacing): Convert argument(s) to
	expected KIND.
	(gfc_resolve_scale): Ditto.
	(gfc_resolve_set_exponent): Ditto.
	(gfc_resolve_spacing): Ditto.
 
	PR fortran/32968
	* trans-intrinsic.c (gfc_conv_intrinsic_si_kind,
	gfc_conv_intrinsic_sr_kind): Convert the argument(s) to the
	expected KIND, and fold the result to the expected KIND.

2007-08-03  Francois-Xavier Coudert  <fxcoudert@gcc.gnu.org>

	PR fortran/31202
	* f95-lang.c (gfc_init_builtin_functions): Defin builtins for 
	lround{f,,l} and llround{f,,l}.
	* trans-intrinsic.c (build_fix_expr): Generate calls to the
	{l,}round{f,,l} functions.

2007-08-01  Thomas Koenig  <tkoenig@gcc.gnu.org>

	PR libfortran/32954
	* intrinsic.c (resolve_mask_arg):  New function.
	(gfc_resolve_maxloc):  Use resolve_mask_arg for mask resolution.
	(gfc_resolve_maxval):  Likewise.
	(gfc_resolve_minloc):  Likewise.
	(gfc_resolve_minval):  Likewise.
	(gfc_resolve_pack):  Likewise.
	(gfc_resolve_product):  Likewise.
	(gfc_resolve_sum):  Likewise.
	(gfc_resolve_unpack):  Likewise.

2007-08-01  Tobias Burnus  <burnus@net-b.de>

	PR fortran/32936
	* match.c (gfc_match_allocate): Better check that STAT is
	a variable.

	* check.c (gfc_check_allocated): Reorder checks to improve
	error message.

2007-08-01  Nick Clifton  <nickc@redhat.com>

	* arith.c: Change copyright header to refer to version 3 of the
	GNU General Public License and to point readers at the COPYING3
	file and the FSF's license web page.
	* openmp.c, interface.c, intrinsic.c, trans-array.c, trans-expr.c,
	symbol.c, iso-fortran-env.def, intrinsic.h, decl.c, trans-array.h,
	matchexp.c, dump-parse-tree.c, trans-common.c, array.c,
	Make-lang.in, trans-openmp.c, gfortran.h, error.c,
	iso-c-binding.def, lang.opt, data.c, trans-const.c, trans-stmt.c,
	expr.c, trans-const.h, trans-stmt.h, module.c, trans.c, scanner.c,
	trans-types.c, trans.h, gfortranspec.c, trans-types.h,
	lang-specs.h, io.c, bbt.c, resolve.c, f95-lang.c, st.c,
	iresolve.c, match.c, trans-decl.c, trans-io.c, target-memory.c,
	match.h, target-memory.h, parse.c, arith.h, check.c, dependency.c,
	parse.h, types.def, convert.c, dependency.h, primary.c,
	trans-intrinsic.c, options.c, misc.c, simplify.c: Likewise.

2007-08-01  Daniel Franke  <franke.daniel@gmail.com>

	* trans-decl.c (generate_local_decl): Emit warning on unused parameter
	on "-Wall -Wextra" or "-Wunused-parameter" but not on "-Wall", changed
	messages that start with lower case to upper case.
	* invoke.texi (-Wparameter-unused): Document differences between gcc
	and gfortran regarding this option.

2007-08-01  Daniel Franke  <franke.daniel@gmail.com>

	PR fortran/32945
	* expr.c (check_specification_function): Skip check if no symtree 
	is available.

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

	PR fortran/31609
	* resolve.c (resolve_entries): Entries declared to be module
	procedures must point to the function namespace.

2007-07-31  Francois-Xavier Coudert  <fxcoudert@gcc.gnu.org>

	PR fortran/32938
	* trans-stmt.c (gfc_trans_return): Convert to correct type.

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

	PR fortran/32942
	* trans-intrinsic.c (gfc_conv_intrinsic_exponent): Convert to correct
	type.

2007-07-29  Jerry DeLisle  <jvdelisle@gcc.gnu.org>

	* invoke.texi: Document -fsign-zero flag.

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

	PR fortran/31211
	* trans-expr.c (gfc_conv_expr_reference): Add block for case of
	scalar pointer functions so that NULL result is correctly
	handled.

	PR fortran/32682
	* trans-array.c (gfc_trans_array_constructor): On detecting a
	multi-dimensional parameter array, set the loop limits.

2007-07-29  Daniel Franke  <franke.daniel@gmail.com>

	PR fortran/32906
	* resolve.c (resolve_fl_parameter): Check for constant shape arrays,
	adjusted error message.

2007-07-29  Daniel Franke  <franke.daniel@gmail.com>

	* invoke.texi: Removed -w from option summary.

2007-07-29  Daniel Franke  <franke.daniel@gmail.com>

	PR fortran/32879
	* intrinsic.texi (IRAND, RAND, RANDOM_NUMBER): Document algorithm
	used for random number generator.

2007-07-28  Kazu Hirata  <kazu@codesourcery.com>

	* gfortran.h, interface.c, resolve.c, symbol.c: Fix comment
	typos.
	* intrinsic.texi, invoke.texi: Fix typos.

2007-07-28  Jerry DeLisle  <jvdelisle@gcc.gnu.org>

	PR fortran/31609
	* resolve.c (generic_sym): Check for a same symbol and if so, return to
	avoid infinite recursion.

2007-07-28  Daniel Franke  <franke.daniel@gmail.com>

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

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

	PR fortran/32880
	* trans-expr.c (gfc_trans_scalar_assign): Revert to fixed order
	for lse and rse pre expressions, for derived types with
	allocatable components.  Instead, assign the lhs to a temporary
	and deallocate after the assignment.

2007-07-28  Janne Blomqvist  <jb@gcc.gnu.org>

	PR fortran/32909
	* trans-stmt.c (gfc_trans_character_select): Replace occurrences
	of gfc_c_int_type_node with integer_type_node.
	* trans-decl.c (gfc_build_intrinsic_function_decls): Likewise.
	(gfc_build_builtin_function_decls): Likewise.
	(gfc_generate_function_code): Likewise.
	* trans-io.c (gfc_build_io_library_fndecls): Likewise.

2007-07-27  Janne Blomqvist  <jb@gcc.gnu.org>

	* trans-decl.c (gfc_build_builtin_function_decls): Use existing
	gfc_array_index_type rather than creating another typenode for
	gfc_index_integer_kind.

2007-07-27  Janne Blomqvist  <jb@gcc.gnu.org>

	* trans-io.c (gfc_build_io_library_fndecls): Change to use
	gfc_array_index_type for array descriptor triplets instead of
	gfc_int4_type_node.

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

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

2007-07-27  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
	    Daniel Franke  <franke.daniel@gmail.com>

	PR fortran/32760
	* primary.c (match_variable): Do not call gfc_add_flavor if symbol has
	attribute of ACCESS_PUBLIC or ACCESS_PRIVATE already marked.

2007-07-27  Francois-Xavier Coudert  <fxcoudert@gcc.gnu.org>

	PR fortran/32035
	* trans-stmt.c (gfc_trans_character_select): Replace the
	mechanism with labels by a SWITCH_EXPR.
	* trans-decl.c (gfc_build_builtin_function_decls): Change
	return type for select_string.

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

	PR fortran/32903
	* trans-decl.c (gfc_trans_deferred_vars): Set intent(out)
	derived types as referenced, if they have the the default
	initializer set.

2007-07-25  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>

	* gfortran.h (generate_isocbinding_symbol): Constify.
	* symbol.c (gen_special_c_interop_ptr, gen_cptr_param,
	generate_isocbinding_symbol): Likewise.

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

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

2007-07-24  Daniel Franke  <franke.daniel@gmail.com>

	PR fortran/32867
	* expr.c (check_init_expr): Simplify matched functions.

2007-07-24  Daniel Franke  <franke.daniel@gmail.com>

	PR fortran/32778
	* intrinsic.c (add_sym): Do not exclude any symbols, even if not part
	of the selected standard.
	(make generic): Likewise.
	(make alias): Likewise, set standard the alias belongs to.
	(add_subroutines): Call make_noreturn unconditionally.
	(check_intrinsic_standard): Change return value to try.
	(gfc_intrinsic_func_interface): Check return value of above function.
	(gfc_intrinsic_sub_interface): Likewise.

2007-07-24  Thomas Koenig  <tkoenig@gcc.gnu.org>

	PR fortran/30814
	* trans-decl.c (generate_function_code):  Add argument
	for flag_bounds_check to the array for set_options.
	* invoke.texi (-fbounds-check): Document new libarary run-time
	behaviour.

2007-07-23  Daniel Franke  <franke.daniel@gmail.com>

	PR fortran/25104
	PR fortran/31639
	* expr.c (check_transformational): Reject valid transformational
	intrinsics to avoid ICE.
	(check_inquiry): Report error for assumed character lengths for
	all supported standards.
	(check_init_expr): Whitespace fix.

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

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

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

	PR fortran/32732
	* trans-decl.c (generate_local_decl): Convert the TREE_TYPE for by
	value character dummy args of BIND(C) procedures.
	* trans-expr.c (gfc_conv_variable): Do not build address
	expression for BT_CHARACTER dummy args.

2007-07-23  Christopher D. Rickett  <crickett@lanl.gov>
	    Tobias Burnus  <burnus@net-b.de>

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

2007-07-22  Daniel Franke  <franke.daniel@gmail.com>

	PR fortran/32710
	* parse.c (gfc_fixup_sibling_symbols): No replacement of symbols if
	the current is a namelist.

2007-07-22  Daniel Franke  <franke.daniel@gmail.com>

	PR fortran/29962
	PR fortran/31253
	PR fortran/31265
	PR fortran/31639
	* gfortran.h (gfc_intrinsic_sym): Changed members elemental, pure,
	generic, specific, actual_ok, noreturn into bits of a bitfield, 
	added bits for inquiry, transformational, conversion.
	* check.c (non_init_transformational): Removed, removed all callers.
	* intrinsic.c (enum class): New.
	(add_sym*): Replaced argument elemetal by enum class. Changed all
	callers.
	(add_functions): Assign appropriate classes to intrinsic functions.
	(add_subroutines): Assign appropriate classes to intrinsic subroutines.
	(add_conv): Set conversion attribute.
	(gfc_init_expr_extensions): Removed, removed all callers.
	(gfc_intrinsic_func_interface): Reimplemented check for non-standard
	initializatione expressions.
	* expr.c (check_specification_function): New.
	(gfc_is_constant_expr): Added check for specification functions.
	(check_init_expr_arguments): New.
	(check_inquiry): Changed return value to MATCH, added checks for
	inquiry functions defined by F2003.
	(check_transformational): New.
	(check_null): New.
	(check_elemental): New.
	(check_conversion): New.
	(check_init_expr): Call new check functions, add more specific error
	messages.

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

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

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

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

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

2007-07-21  Lee Millward  <lee.millward@gmail.com>

	PR fortran/32823
	* trans-intrinsic.c (gfc_conv_intrinsic_int): Evaluate all
	arguments passed, not just the first one. Adjust code to 
	refer to "args[0]" instead of "arg" as a result.
	
2007-07-19  Christopher D. Rickett  <crickett@lanl.gov>

	PR fortran/32600
	* trans-expr.c (gfc_conv_function_call): Inline C_LOC.

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

	PR fortran/32801
	* symbol.c (generate_isocbinding_symbol): Fix bug where
	ISOCBINDING_FUNPTR was generated for C_LOC instead of the needed
	ISOCBINDING_PTR.

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

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

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

	PR fortran/31320
	PR fortran/32665
	* trans-expr.c (gfc_trans_subcomponent_assign): Ensure that
	renormalization unity base is done independently of existing
	lbound value.
	(gfc_trans_scalar_assign): If rhs is not a variable, put
	lse->pre after rse->pre to ensure that de-allocation of lhs
	occurs after evaluation of rhs.

2007-07-16  Lee Millward  <lee.millward@gmail.com>

	PR fortran/32222
	PR fortran/32238
	PR fortran/32242	
	* trans-intrinsic.c (gfc_conv_intrinsic_function_args): Adjust
	to operate on a stack allocated array for the intrinsic arguments
	instead of creating a TREE_LIST. Add two new parameters for the
	array and the number of elements. Update all callers to allocate
	an array of the correct length to pass in. Update comment.
	(gfc_intrinsic_argument_list_length): New function.
	(gfc_conv_intrinsic_conversion): Call it.
	(gfc_conv_intrinsic_mnimax): Likewise.
	(gfc_conv_intrinsic_merge): Likewise.
	(gfc_conv_intrinsic_lib_function): Call it. Use new CALL_EXPR
	constructors.
	(gfc_conv_intrinsic_cmplx): Likewise.
	(gfc_conv_intrinsic_ctime): Likewise.
	(gfc_covn_intrinsic_fdate): Likewise.
	(gfc_conv_intrinsic_ttynam): Likewise.
	(gfc_conv_intrinsic_ishftc): Likewise.
	(gfc_conv_intrinsic_index): Likewise.
	(gfc_conv_intrinsic_scan): Likewise.
	(gfc_conv_intrinsic_verify): Likewise.
	(gfc_conv_intrinsic_trim): Likewise.
	(gfc_conv_intrinsic_aint): Use new CALL_EXPR constructors.
	(gfc_conv_intrinsic_exponent): Likewise.
	(gfc_conv_intrinsic_bound): Likewise.
	(gfc_conv_intrinsic_abs): Likewise.
	(gfc_conv_intrinsic_mod): Likewise.
	(gfc_conv_intrinsic_sign): Likewise.
	(gfc_conv_intrinsic_len): Likewise.
	(gfc_conv_intrinsic_adjust): Likewise.
	(gfc_conv_intrinsic_si_kind): Likewise. 
	
2007-07-16  Janne Blomqvist  <jb@gcc.gnu.org>

	PR fortran/32748
	* trans-decl.c (gfc_build_builtin_function_decls): Remove
	DECL_IS_MALLOC attribute from internal_realloc, thus reverting
	part of my 2007-07-03 patch.

2007-07-15  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
	    Francois-Xavier Coudert  <fxcoudert@gcc.gnu.org>

	PR fortran/32611
	* gfortran.h (gfc_option_t): Add flag_sign_zero field.
	* lang.opt (-fsign-zero): New option.
	* trans.h: Rename gfor_fndecl_set_std into gfor_fndecl_set_options.
	* trans-decl.c (gfc_build_builtin_function_decls): Build the function
	declaration to pass an array containing the options to be used by the
	runtime library. (gfc_generate_function_code): Build an array that
	contains option values to be passed to the runtime library and the call
	to the function. 
	* options.c (gfc_init_options): Initialize the flag_sign_zero field.
	(gfc_handle_option): Handle the -fsign-zero option.

2007-07-15  Francois-Xavier Coudert  <fxcoudert@gcc.gnu.org>

	PR fortran/32036
	* trans-array.c (gfc_conv_array_ref): Only evaluate index once.

2007-07-15  Francois-Xavier Coudert  <fxcoudert@gcc.gnu.org>

	PR fortran/32357
	* iresolve.c (gfc_resolve_mvbits): Convert FROMPOS, LEN and TOPOS
	to C int.

2007-07-14  Thomas Koenig  <tkoenig@gcc.gnu.org>

	PR libfortran/32731
	* iresolve.c(gfc_resolve_pack):  A scalar mask has
	to be kind=4, an array mask with kind<4 is converted
	to gfc_default_logical_kind automatically.
	(gfc_resolve_unpack):  Convert mask to gfc_default_lotical_kind
	if it has a kind<4.

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

	PR fortran/32724
	* parse.c (parse_spec): Emit error on unexpected statement
	function.

2007-07-13  Daniel Franke  <franke.daniel@gmail.com>

	* invoke.texi: Unified upper- and lower-case in menus.
	(-w, -W): Removed, documented by gcc.
	* intrinsic.texi: Unified Class-section entries, added
	subroutine/function warning where appropiate.

2007-07-12  Daniel Franke  <franke.daniel@gmail.com>

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

2007-07-12  Daniel Franke  <franke.daniel@gmail.com>

	PR fortran/32704
	* invoke.texi (-static-libgfortran): Document new option.

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

	PR fortran/32634
	PR fortran/32727
	* module.c (write_generic): Restore patch of 2007-07-10 and use
	symbol name if there are no use names. 

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

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

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

	* symbol.c (gen_cptr_param): Fix whitespace.

2007-07-12  Jakub Jelinek  <jakub@redhat.com>

	PR fortran/32550
	* trans.h (GFC_POINTER_TYPE_P): Define.
	* trans-types.c (gfc_sym_type): Set it for types on attr->sym.pointer.
	* trans-openmp.c (gfc_omp_privatize_by_reference): Return false
	if GFC_POINTER_TYPE_P is set on the type.

2007-07-12  Richard Guenther  <rguenther@suse.de>

	* trans-intrinsic.c (gfc_conv_intrinsic_repeat): Convert
	arguments to gfc_charlen_type_node.
	* trans-io.c (gfc_convert_array_to_string): Convert type
	size to gfc_array_index_type.

2007-07-12  Daniel Franke  <franke.daniel@gmail.com>

	PR fortran/32634
	PR fortran/32727
	* module.c: Reverted Paul's patch from 2007-07-10.

2007-07-11  Richard Guenther  <rguenther@suse.de>

	* trans-array.c (gfc_conv_array_parameter): Use correct
	types for comparison.
	* trans-intrinsic.c (gfc_conv_intrinsic_repeat): Use
	correct types for POINTER_PLUS_EXPR.
	* trans-stmt.c (gfc_trans_forall_loop): Use correct type
	for integer one constant.

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

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

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

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

2007-07-09  Francois-Xavier Coudert  <fxcoudert@gcc.gnu.org>

	PR fortran/29459
	* trans-array.c (gfc_trans_array_constructor): Mark offset field
	with TREE_NO_WARNING.
	* trans-decl.c (gfc_build_qualified_array): Mark lbound, ubound,
	stride and size variables with TREE_NO_WARNING.

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

	* trans-decl.c (set_tree_decl_type_code): Remove function.
	(generate_local_decl): Remove reference to set_tree_decl_type_code.

2007-07-09  Daniel Franke  <franke.daniel@gmail.com>

	PR fortran/31129
	* trans-decl.c (generate_local_decl) Emit a warning if an unused
	parameter is found.

2007-07-08  Daniel Franke  <franke.daniel@gmail.com>

	PR fortran/29876
	* module.c (gfc_match_use): Do not set an non-existant 
	intrinsic operator if a user-defined operator is found.

2007-07-08  Daniel Franke  <franke.daniel@gmail.com>

	PR fortran/24784
	PR fortran/28004
	* trans-decl.c (generate_local_decl): Adjusted warning on unused 
	dummy arguments, tell middle-end not to emit additional warnings.

2007-07-08  Daniel Franke  <franke.daniel@gmail.com>
	    Tobias Schlüter <tobias.schlueter@physik.uni-muenchen.de>

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

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

	PR fortran/32669
	* interface.c (get_expr_storage_size): Properly obtain lower bound.
	(compare_actual_formal): Add space before parenthesis.

2007-07-08  Daniel Franke  <franke.daniel@gmail.com>

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

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

	PR fortran/32644
	* decl.c (match_attr_spec): Don't return MATCH_ERROR if comma found and
	gfc_match_bind_c does not return MATCH_YES.

2007-07-07  Kazu Hirata  <kazu@codesourcery.com>

	* decl.c, gfortran.h, interface.c, module.c, resolve.c,
	trans-array.c, trans-decl.c: Fix comment typos.  Follow
	spelling conventions.
	* intrinsic.texi: Fix typos.  Follow spelling conventions.

2007-05-06  Daniel Franke  <franke.daniel@gmail.com>

	PR fortran/32633
	* symbol.c (save_status): New.
	* gfortran.h (save_status): Added external declaration.
	(check_conflict): Check for conflicting explicite SAVE statements
	only.
	(gen_special_c_interop_ptr): Use SAVE_EXPLICIT constant.
	* module.c (ab_attribute, attr_bits): Removed enumerator value 
	AB_SAVE for save attribute.
	(mio_symbol_attribute): Import/export the full SAVE status, 
	removed usage of AB_SAVE.
	* dump-parse-tree.c (gfc_show_attr): Dump full SAVE status.
	* decl.c (add_init_expr_to_sym): Set SAVE_IMPLICIT only if not
	already explicit.

2007-07-05  Daniel Franke  <franke.daniel@gmail.com>
	    Tobias Burnus  <burnus@net-b.de>

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

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

	PR fortran/32526
	* match.c (gfc_match_call): Check, in all cases, that a symbol
	is neither generic nor a subroutine before trying to add it as
	a subroutine.

	PR fortran/32613
	* match.c (gfc_match_do): Reset the implied_index attribute.

2007-07-04  Francois-Xavier Coudert  <fxcoudert@gcc.gnu.org>

	PR fortran/31198
	* trans-intrinsic.c (trans-intrinsic.c): Handle optional
	arguments correctly for MIN and MAX intrinsics.

2007-07-03  Jerry DeLisle  <jvdelisle@gcc.gnu.org>

	PR fortran/32545
	* io.c (check_format): Always call gfc_error for errors.
	(check_format_string): Change type of this function to try and
	return the result of check_format.
	(check_io_constraints): Return MATCH_ERROR if check_format_string
	returns FAILURE.

2007-07-03  Jerry DeLisle  <jvdelisle@gcc.gnu.org>

	PR fortran/32612
	* decl.c (get_proc_name): Include attr->mod_proc in check for error.

2007-07-03  Jerry DeLisle  <jvdelisle@gcc.gnu.org>

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

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

	PR fortran/32579
	* symbol.c (gen_cptr_param): Generate C_PTR and C_FUNPTR if necessary.
	(build_formal_args): Pass intrinsic module symbol id to
	gen_cptr_param.

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

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

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

	PR fortran/30940
	* interface.c (get_sym_storage_size): New function.
	(get_sym_storage_size): New function.
	(compare_actual_formal): Enhance sequence association
	support and improve checking.

2007-07-03  Janne Blomqvist  <jb@gcc.gnu.org>

	* trans-decl.c (gfc_build_builtin_function_decls): Mark
	internal_realloc as a malloc function.

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

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

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

	* gfortran.texi (Fortran 2003): Add ISO Bind C.
	* intrinsic.texi (C_ASSOCIATED,C_F_POINTER,C_F_PROCPOINTER,
	C_FUNLOC,C_LOC): Document new ISO Bind C intrinsics.

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

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

2007-07-01  Janne Blomqvist  <jb@gcc.gnu.org>

	PR fortran/32239
	* trans-expr.c (gfc_conv_power_op): Use builtin_powi for
	real**int4 powers.
	* f95-lang.c (gfc_init_builtin_functions): Add builtin_powi to the
	builtins table.

2007-07-01  Janne Blomqvist  <jb@gcc.gnu.org>

	* trans.h: Remove decls for 64-bit allocation functions.
	* trans-array.c (gfc_grow_array): Always pick the standard realloc
	function decl.
	(gfc_array_allocate): Likewise.
	* trans-decl.c: Remove trees for 64-bit allocation functions.
	(gfc_build_builtin_function_decls): Don't build fndecls for 64-bit
	allocations functions, use index_int_type for normal allocation
	functions.

2007-06-30  Daniel Franke  <franke.daniel@gmail.com>

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

2007-06-30  Tobias Burnus  <burnus@net-b.de>

	PR fortran/32555
	* io.c (check_format): Allow zero to precede the
	P edit descriptor.

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

	PR fortran/32472
	* simplify.c (gfc_simplify_repeat): Add handling of character
	literal for first argument.

2007-06-29  Daniel Franke  <franke.daniel@gmail.com>

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

2007-06-29  Daniel Franke <franke.daniel@gmail.com>

	* openmp.c (resolve_omp_clauses): Adjust error message to
	better reflect the actual requirement.

2007-06-29  Tobias Burnus  <burnus@net-b.de>

	PR fortran/32483
	* io.c (format_lex): Fix FMT_ZERO.
	(check_format,check_format_string,gfc_match_format,
	check_io_constraints) Additional checking for READ.

2007-06-28 Francois-Xavier Coudert <fxcoudert@gcc.gnu.org>

	PR other/31400
	* lang.opt (static-libgfortran): New option.
	* gfortranspec.c (ADD_ARG_LIBGFORTRAN): New macro.
	(Option): Add OPTION_static and OPTION_static_libgfortran.
	(lookup_option): Handle the new -static-libgfortran option.
	(lang_specific_driver): Check whether -static is passed.
	Handle the new -static-libgfortran option.
	* options.c (gfc_handle_option): If -static-libgfortran is
	passed and isn't supported on this configuration, error out.

2007-06-27  Daniel Franke  <franke.daniel@gmail.com>

	PR fortran/32467
	* openmp.c (resolve_omp_clauses): Emit error on allocatable
	components in COPYIN, COPYPRIVATE, FIRSTPRIVATE and LASTPRIVATE
	clauses.

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

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

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

2007-06-24  Tobias Burnus  <burnus@net-de>

	PR fortran/32460
	* interface.c (gfc_compare_derived_types): Add access check.
	* symbol.c (gfc_find_component): Ditto.
	(gfc_set_component_attr,gfc_get_component_attr) Copy access state.
	* dump-parse-tree.c (gfc_show_components): Dump access state.
	* gfortran.h (struct gfc_component): Add gfc_access.
	* module.c (mio_component): Add access state.
	* (gfc_match_structure_constructor): Check for private access state.

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

	PR fortran/32298
	PR fortran/31726
	* trans-intrinsic.c (gfc_conv_intrinsic_minmaxloc): Calculate
	the offset between the loop counter and the position as
	defined. Add the offset within the loop so that the mask acts
	correctly.  Do not advance the location on the basis that it
	is zero.

2007-06-22  Daniel Franke  <franke.daniel@gmail.com>

	PR fortran/31473
	* symbol.c (gfc_copy_attr): Emit errors for duplicate 
	EXTERNAL/INTRINSIC statements.

2007-06-22  Jerry DeLisle  <jvdelisle@gcc.gnu.org>

	PR fortran/32360
	* expr.c (gfc_check_assign): If the rvalue expression type is NULL_EXPR,
	check to see if the lvalue has attribute pointer and data.  

2007-06-21  Jerry DeLisle  <jvdelisle@gcc.gnu.org>

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

2007-06-20  Jerry DeLisle  <jvdelisle@gcc.gnu.org>

	PR fortran/32361
	* match.c (gfc_match_common): If the symbol value expression type is
	NULL_EXPR, don't error if previously initialized.

2007-06-20  Jerry DeLisle  <jvdelisle@gcc.gnu.org>

	PR fortran/25061
	* decl.c (get_proc_name) Check symbol for generic interface
	and issue an error.

2007-06-20  Andrew Pinski  <andrew_pinski@playstation.sony.com>
	Richard Guenther  <rguenther@suse.de>

	PR fortran/32140
	* trans.c (gfc_build_addr_expr): Use the correct types.

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

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

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

2007-06-17  Janne Blomqvist  <jb@gcc.gnu.org>

	* gfortran.texi: Add documentation for GFORTRAN_UNBUFFERED_n
	environment variables. Fix documentation for
	GFORTRAN_UNBUFFERED_ALL environment variable.

2007-06-15  Andrew Pinski  <andrew_pinski@playstation.sony.com>

	* trans-intrinsic.c (gfc_conv_intrinsic_repeat): Use
	POINTER_PLUS_EXPR instead of PLUS_EXPR for pointer addition.
	* trans-expr.c (gfc_trans_string_copy): Create
	POINTER_PLUS_EXPR instead of a PLUS_EXPR
	for pointer types.

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

	PR fortran/32302
	* trans-common.c (build_common_decl): If resizing of common
	decl is needed, update the TREE_TYPE.

2007-06-13  Tobias Burnus  <burnus@net-b.de>

	PR fortran/32323
	* interface.c (has_vector_section): New.
	(compare_actual_formal): Check for array sections with vector subscript.

2007-06-12  Dirk Mueller  <dmueller@suse.de>

	* trans-stmt.c (gfc_trans_call): fix gcc_assert to
	a comparison, not an assignment.

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

	* trans-common.c (create_common): Initialize 'field_init'.

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

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

2007-06-11  Rafael Ávila de Espíndola  <espindola@google.com>

	* trans-types.c (gfc_signed_type): Remove.
	* trans-types.h (gfc_signed_type): Remove.
	* f95-lang.c (LANG_HOOKS_SIGNED_TYPE): Remove.

2007-06-08 Francois-Xavier Coudert <fxcoudert@gcc.gnu.org>

	* trans-intrinsic.c: Revert Lee's 2007-06-04 patch.

2007-06-07  Steven G. Kargl  <kargl@gcc.gnu.org>
	    Jerry DeLisle  <jvdelisle@gcc.gnu.org>

	PR fortran/32223
	* match.c (gfc_match_special_char): New function.  Match special char.
	Add handling '\0'.
	* match.h: Add prototype.
	* io.c (next_char): Use it.
	* primary.c (next_string_char): Ditto.

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

	* decl.c: Miscellaneous whitespace fixes.
	* expr.c: Likewise.
	* gfortran.h: Likewise.
	* interface.c : Likewise.
	* io.c: Likewise.
	* match.c: Likewise.
	* match.h: Likewise.
	* module.c: Likewise.
	* parse.c: Likewise.
	* resolve.c: Likewise.
	* symbol.c: Likewise.
	* trans-array.c: Likewise.
	* trans-common.c: Likewise.
	* trans-decl.c: Likewise.
	* trans-intrinsic.c: Likewise.
	* trans-io.c: Likewise.
	* trans-stmt.c: Likewise.
	* trans-types.c: Likewise.

2007-06-05  Jerry DeLisle  <jvdelisle@gcc.gnu.org>

	PR fortran/18923
	* parse.c (decode_statement): Don't call gfc_undo_symbols on MATCH_ERROR
	for ST_FUNCTION since it is called in reject_statement.
	(parse_contained): If error, loop back after reject_statement and try
	again.  Free the namespace if an error occured.

2007-06-04 Lee Millward <lee.millward@codesourcery.com>

	* trans-intrinsic.c (gfc_conv_intrinsic_function_args): Adjust
	to operate on a stack allocated array for the intrinsic arguments
	instead of creating a TREE_LIST. Add two new parameters for the
	array and the number of elements. Update all callers to allocate
	an array of the correct length to pass in. Update comment.
	(gfc_intrinsic_argument_list_length): New function.
	(gfc_conv_intrinsic_mnimax): Call it.
	(gfc_conv_intrinsic_merge): Likewise.
	(gfc_conv_intrinsic_lib_function): Call it. Use new CALL_EXPR
	constructors.
	(gfc_conv_intrinsic_cmplx): Likewise.
	(gfc_conv_intrinsic_ctime): Likewise.
	(gfc_covn_intrinsic_fdate): Likewise.
	(gfc_conv_intrinsic_ttynam): Likewise.
	(gfc_conv_intrinsic_ishftc): Likewise.
	(gfc_conv_intrinsic_index): Likewise.
	(gfc_conv_intrinsic_scan): Likewise.
	(gfc_conv_intrinsic_verify): Likewise.
	(gfc_conv_intrinsic_trim): Likewise.
	(gfc_conv_intrinsic_aint): Use new CALL_EXPR constructors.
	(gfc_conv_intrinsic_exponent): Likewise.
	(gfc_conv_intrinsic_bound): Likewise.
	(gfc_conv_intrinsic_abs): Likewise.
	(gfc_conv_intrinsic_mod): Likewise.
	(gfc_conv_intrinsic_sign): Likewise.
	(gfc_conv_intrinsic_len): Likewise.
	(gfc_conv_intrinsic_adjust): Likewise.
	(gfc_conv_intrinsic_si_kind): Likewise.

2007-06-04  Steve Ellcey  <sje@cup.hp.com>

	* trans-array.c (gfc_conv_array_parameter): Initialize tmp.

2007-05-31  Richard Guenther  <rguenther@suse.de>

	* trans-expr.c (gfc_conv_expr_op): Use zero constant
	that matches the lse type.
	(gfc_trans_string_copy): Use sizetype zero constant.
	* intrinsic.c (add_functions): The sizeof intrinsic has
	index type result.
	* trans-types.c (gfc_get_dtype): Convert size to index
	type before shifting.
	* trans-array.c (gfc_trans_array_constructor_value): Use
	index type for offset computation.
	* trans-intrinsic.c (gfc_conv_associated): Use correct type
	for zero constant.

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

	PR fortran/32156
	* trans-array.c (gfc_trans_array_constructor): Treat the case
	where the ss expression charlen is missing.

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

	PR fortran/32103
	* module.c (mio_symtree_ref): If an equivalence group member
	is not used, give it a hidden symbol and set the pointer_info.
	(load_equiv): Only free the equivalence if none of the members
	are used.

2007-05-29  Daniel Franke  <franke.daniel@gmail.com>

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

2007-05-28  Tobias Schlüter  <tobi@gcc.gnu.org>

	* gfortran.h (gfc_generic_isym_id): Add GFC_ISYM_SIZEOF.
	* intrinsic.c (add_functions): Add stuff for SIZEOF intrinsic.
	* intrinsic.h (gfc_check_sizeof): Add prototype of ...
	* check.c (gfc_check_sizeof): .. new function.
	* trans-intrinsic.c (gfc_conv_intrinsic_sizeof): New function.
	(gfc_conv_intrinsic_strcmp): Whitespace fix.
	(gfc_conv_intrinsic_array_transfer): Remove double initialization,
	use fold_build. where appropriate.
	(gfc_conv_intrinsic_function): Add case for SIZEOF.
	* intrinsic.texi: Add documentation for SIZEOF.

2007-05-28  Brooks Moses  <brooks.moses@codesourcery.com>

	* trans-array.c (gfc_conv_expr_descriptor): Edit comment.

2007-05-28  Brooks Moses  <brooks.moses@codesourcery.com>

	PR fortran/31972
	* target-memory.c (gfc_target_expr_size): Add handling
	for size of BT_HOLLERITH variables.
	* check.c (gfc_check_transfer): Reject BT_HOLLERITH
	variables in MOLD argument of TRANSFER.

2007-05-28  Brooks Moses  <brooks.moses@codesourcery.com>

	* gfortran.h (gfc_expr): Remove from_H, add "representation"
	struct.
	* primary.c (match_hollerith_constant): Store the representation
 	of the Hollerith in representation, not in value.character.
	* arith.c: Add dependency on target-memory.h.
	(eval_intrinsic): Remove check for from_H.
	(hollerith2representation): New function.
	(gfc_hollerith2int): Determine value of the new constant.
	(gfc_hollerith2real): Likewise.
	(gfc_hollerith2complex): Likewise.
	(gfc_hollerith2logical): Likewise.
	(gfc_hollerith2character): Point both representation.string and
	value.character.string at the value string.
	* data.c (create_character_initializer): For BT_HOLLERITH
	rvalues, get the value from the representation rather than
	value.character.
	* expr.c (free_expr0): Update handling of BT_HOLLERITH values
	and values with representation.string.
	(gfc_copy_expr): Likewise.
	* intrinsic.c (do_simplify): Remove special treatement of
	variables resulting from Hollerith constants.
	* dump-parse-trees.c (gfc_show_expr): Update handling of
	Holleriths.
	* trans-const.c (gfc_conv_constant_to_tree): Replace from_H
	check with check for representation.string; get Hollerith
	representation from representation.string, not value.character.
	* trans-expr.c (is_zero_initializer_p): Replace from_H check
	with check for representation.string.
	* trans-stmt.c (gfc_trans_integer_select): Use
	gfc_conv_mpz_to_tree for case values, so as to avoid picking up
	the memory representation if the case is given by a transfer
	expression.
	* target-memory.c (gfc_target_encode_expr): Use the known memory
	representation rather than the value, if it exists.
	(gfc_target_interpret_expr): Store the memory representation of
	the interpreted expression as well as its value.
	(interpret_integer): Move to gfc_interpret_integer, make
	non-static.
	(interpret_float): Move to gfc_interpret_float, make non-static.
	(interpret_complex): Move to gfc_interpret_complex, make
	non-static.
	(interpret_logical): Move to gfc_interpret_logical, make
	non-static.
	(interpret_character): Move to gfc_interpret_character, make
	non-static.
	(interpret_derived): Move to gfc_interpret_derived, make
	non-static.
	* target-memory.h: Add prototypes for newly-exported
	gfc_interpret_* functions.

2007-05-27  Jerry DeLisle  <jvdelisle@gcc.gnu.org>

	PR fortran/31812
	* parse.c (next_statement): Warn for truncated lines if source is free
	form.

2007-05-27 Paul Thomas  <pault@gcc.gnu.org>
	   Tobias Burnus  <burnus@net-b.de>

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

2007-05-26  Jerry DeLisle  <jvdelisle@gcc.gnu.org>

	PR fortran/31813
	* io.c (check_format): Add warning for H specifier in format.
	
2007-05-26  Tobias Burnus  <burnus@net-b.de>

	* gfortran.texi: Document the GFORTRAN_ERROR_DUMPCORE and
	GFORTRAN_ERROR_BACKTRACE environment variables.

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

	PR fortran/31219
	* trans.h : Add no_function_call bitfield to gfc_se structure.
	Add stmtblock_t argument to prototype of get_array_ctor_strlen.
	* trans-array.c (get_array_ctor_all_strlen): New function.
	(get_array_ctor_strlen): Add new stmtblock_t argument and call
	new function for character elements that are not constants,
	arrays or variables.
	(gfc_conv_array_parameter): Call get_array_ctor_strlen to get
	good string length.
	* trans-intrinsic (gfc_conv_intrinsic_len): Add new argument
	to call of get_array_ctor_strlen.

2007-05-25  Kazu Hirata  <kazu@codesourcery.com>

	* intrinsic.texi: Fix typos.

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

	PR fortran/32047
	* trans-expr.c (gfc_apply_interface_mapping_to_expr): Change
	order in logic under EXPR_FUNCTION to handle functions with
	no arguments.

2007-05-23  Jerry DeLisle  <jvdelisle@gcc.gnu.org>

	PR fortran/31716
	* array.c (spec_dimen_size): Test for correct BT_INTEGER type. 

2007-05-23  Francois-Xavier Coudert  <fxcoudert@gcc.gnu.org>

	PR fortran/32046
	* trans-expr.c (gfc_trans_zero_assign): Convert the result of
	TYPE_SIZE_UNIT into a signed type.
	(gfc_trans_array_copy):  Likewise.
	(gfc_trans_array_constructor_copy): Likewise.
	* trans-array.c (gfc_trans_create_temp_array): Likewise.
	(gfc_grow_array): Likewise.
	(gfc_array_init_size): Likewise.
	(gfc_duplicate_allocatable): Likewise.
	* trans-stmt.c (allocate_temp_for_forall_nest_1): Likewise.

2007-05-22  Jerry DeLisle  <jvdelisle@gcc.gnu.org>

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

2007-05-22 Francois-Xavier Coudert <fxcoudert@gcc.gnu.org>

	PR fortran/31627
	* trans-array.c (gfc_trans_array_bound_check): Take extra argument to
	indicate whether we should check the upper bound in that dimension.
	(gfc_conv_array_index_offset): Check only the lower bound of the
	last dimension for assumed-size arrays.
	(gfc_conv_array_ref): Likewise.
	(gfc_conv_ss_startstride): Likewise.

2007-05-21  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
	    Daniel Franke  <franke.daniel@gmail.com>

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

2007-05-21  Francois-Xavier Coudert  <fxcoudert@gcc.gnu.org>

	PR fortran/32027
	* trans-stmt.c (gfc_trans_do): Fix the value of loop variable
	when the loop ends.

2007-05-21  H.J. Lu  <hongjiu.lu@intel.com>

	* trans-stmt.c (gfc_trans_do): Fix a typo in comment.

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

	PR fortran/31867
	PR fortran/31994
	* trans-array.c (gfc_conv_expr_descriptor): Obtain the stored
	offset for non-descriptor, source arrays and correct for stride
	not equal to one before writing to field of output descriptor.

2007-05-20  Daniel Franke  <franke.daniel@gmail.com>

	PR fortran/32001
	* check.c (check_rest): Improved argument conformance check and 
	fixed error message generation.

2007-05-19  Francois-Xavier Coudert  <fxcoudert@gcc.gnu.org>

	PR fortran/30820
	* Make-lang.in: Remove use of -Wno-error for expr.o, resolve.o,
	simplify.o and trans-common.o.

2007-05-19  Francois-Xavier Coudert  <fxcoudert@gcc.gnu.org>

	PR fortran/31974
	* trans-array.c (gfc_trans_auto_array_allocation): Avoid
	multiplication of mismatched types.

2007-05-18  Daniel Franke  <franke.daniel@gmail.com>

	PR fortran/24633
	* symbol.c (gfc_add_flavor): Add the NAME to error message if
	available.

2007-05-15  Daniel Franke  <franke.daniel@gmail.com>

	PR fortran/31919
	PR fortran/31929
	PR fortran/31930
	* intrinsic.c (check_specific): Check elemental intrinsics for
	rank and shape.
	(add_functions): Fixed dummy argument names of BESJN and BESYN.
	Fixed elemental status of MCLOCK and MCLOCK8.
	* check.c (check_rest): Added check for array conformance.
	(gfc_check_merge): Removed check for array conformance.
	(gfc_check_besn): Removed check for scalarity.
	* intrinsic.texi (CSHIFT, EOSHIFT): Fixed typos.
	(BESJN, BESYN): Clarified documentation.

2007-05-17  Tobias Burnus  <burnus@net-b.de>

	* gfortran.texi (GFORTRAN_CONVERT_UNIT): Improve documentation.

2007-05-16  Brooks Moses  <brooks.moses@codesourcery.com>

	PR fortran/18769
	PR fortran/30881
	PR fortran/31194
	PR fortran/31216
	PR fortran/31427
	* target-memory.c: New file.
	* target-memory.h: New file.
	* simplify.c: Add #include "target-memory.h".
	(gfc_simplify_transfer): Implement constant-
	folding for TRANSFER intrinsic.
	* Make-lang.in: Add dependencies on new target-memory.* files.

2007-05-15  Paul Brook  <paul@codesourcery.com>

	* trans-types.c (gfc_type_for_size): Handle signed TImode.

2007-05-14  Francois-Xavier Coudert  <fxcoudert@gcc.gnu.org>

	PR fortran/30723
	* trans.h (gfor_fndecl_internal_malloc, gfor_fndecl_internal_malloc64,
	gfor_fndecl_internal_free): Remove prototypes.
	(gfor_fndecl_os_error, gfc_call_free, gfc_call_malloc): Add prototypes.
	* trans.c (gfc_call_malloc, gfc_call_free): New functions.
	* f95-lang.c (gfc_init_builtin_functions): Add __builtin_free
	and __builtin_malloc builtins.
	* trans-decl.c (gfor_fndecl_internal_malloc,
	gfor_fndecl_internal_malloc64, gfor_fndecl_internal_free): Remove.
	(gfor_fndecl_os_error): Add.
	(gfc_build_builtin_function_decls): Don't create internal_malloc,
	internal_malloc64 and internal_free library function declaration.
	Create os_error library call function declaration.
	* trans-array.c (gfc_trans_allocate_array_storage,
	gfc_trans_auto_array_allocation, gfc_trans_dummy_array_bias,
	gfc_conv_array_parameter, gfc_duplicate_allocatable): Use
	gfc_call_malloc and gfc_call_free instead of building calls to
	internal_malloc and internal_free.
	* trans-expr.c (gfc_conv_string_tmp): Likewise.
	* trans-stmt.c (gfc_do_allocate, gfc_trans_assign_need_temp,
	gfc_trans_pointer_assign_need_temp, gfc_trans_forall_1,
	gfc_trans_where_2: Likewise.
	* trans-intrinsic.c (gfc_conv_intrinsic_ctime,
	gfc_conv_intrinsic_fdate, gfc_conv_intrinsic_ttynam,
	gfc_conv_intrinsic_array_transfer, gfc_conv_intrinsic_trim): Likewise.

2007-05-14  Francois-Xavier Coudert  <fxcoudert@gcc.gnu.org>

	PR fortran/31725
	* trans-expr.c (gfc_conv_substring): Evaluate substring bounds
	only once.

2007-05-14  Rafael Ávila de Espíndola  <espindola@google.com>

	* f95-lang.c (LANG_HOOKS_UNSIGNED_TYPE): Remove.
	* trans-intrinsic.c (gfc_conv_intrinsic_ishft): Use unsigned_type_for
	instead of gfc_unsigned_type.
	* trans-stmt.c (gfc_trans_do): Use unsigned_type_for instead of
	gfc_unsigned_type.
	* trans-types.c (gfc_unsigned_type): Remove.
	* trans-types.h (gfc_unsigned_type): Remove.

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

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

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

	PR fortran/30876
	* trans-expr.c (gfc_conv_function_call): Reduce indirection for
	direct assignments of recursive array valued functions.
	* primary.c (gfc_match_rvalue): Correct error for recursive
	function calls such that directly recursive calls of scalar
	function without an explicit result are disallowed.

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

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

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

	PR fortran/31474
	* decl.c (get_proc_name): If an entry has already been declared
	as a module procedure, pick up the symbol and the symtree and
	use them for the entry.

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

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

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

	PR fortran/31692
	* trans-array.c (gfc_conv_array_parameter): Convert full array
	references to the result of the procedure enclusing the call.

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

	PR fortran/29397
	PR fortran/29400
	* decl.c (add_init_expr_to_sym): Expand a scalar initializer
	for a parameter array into an array expression with the right
	shape.
	* array.c (spec_dimen_size): Remove static attribute.
	* gfortran.h : Prototype for spec_dimen_size.

2007-05-07  Francois-Xavier Coudert  <fxcoudert@gcc.gnu.org>

	PR fortran/31399
	* trans-stmt.c (gfc_trans_do): Handle large loop counts.

2007-05-07  Francois-Xavier Coudert  <fxcoudert@gcc.gnu.org>

	PR fortran/31764
	* simplify.c (gfc_simplify_new_line): NEW_LINE can be simplified
	even for non constant arguments.

2007-05-06  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
	    Francois-Xavier Coudert  <fxcoudert@gcc.gnu.org>

	PR fortran/31201
	* gfortran.h: Add runtime error codes from libgfortran.h. Define
	MAX_UNIT_NUMBER.
	* trans.c (gfc_trans_runtime_check): Update the format of runtime error
	messages to match library runtime errors.  Use call to new library
	function runtime_error_at().
	* trans.h: Add prototype for new function gfc_trans_io_runtime_check.
	Add declaration for library functions runtime_error_at and
	generate_error.
	* trans_io.c (gfc_trans_io_runtime_check): New function.
	(set_parameter_value): Add error checking for UNIT numbers.
	(set_parameter_ref): Initialize the users variable to zero. 
	(gfc_trans_open): Move setting of unit number to after setting of common
	flags so that runtime error trapping can be detected.
	(gfc_trans_close): Likewise. (build_filepos): Likewise.
	(gfc_trans_inquire): Likewise. (build_dt): Likewise.
	* trans-decl.c: Add declarations for runtime_error_at and
	generate_error. (gfc_build_builtin_function_decls): Build function
	declarations for runtime_error_at and generate_error.

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

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

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

	PR fortran/31251
	* decl.c (match_char_spec): Add check for invalid character lengths.

2007-05-04  Brooks Moses  <brooks.moses@codesourcery.com>

	* intrinsic.texi (CMPLX): Document result kind.
	(COMPLEX): Add documentation.

2007-05-04  Daniel Franke  <franke.daniel@gmail.com>

	PR fortran/31760
	* intrinsic.c (add_functions): Replaced calls to gfc_check_g77_math1
	by gfc_check_fn_r to avoid checks for scalarity.
	* check.c (gfc_check_besn): Removed check for scalarity.
	(gfc_check_g77_math1): Removed.
	* intrinsic.h (gfc_check_g77_math1): Removed.

2007-05-04  Daniel Franke  <franke.daniel@gmail.com>

	* check.c (gfc_check_fseek_sub): Fixed typo.

2007-05-04  Daniel Franke  <franke.daniel@gmail.com>

	PR fortran/22359
	* intrinsic.c (add_subroutines): Added FSEEK.
	* intrinsic.h (gfc_resolve_fseek_sub, gfc_check_fseek_sub): New.
	* iresolve.c (gfc_resolve_fseek_sub): New.
	* check.c (gfc_check_fseek_sub): New.
	* intrinsic.texi (FSEEK): Updated.

2007-05-04  Tobias Burnus  <burnus@net-b.de>

	PR fortran/31803
	* expr.c (gfc_check_pointer_assign): Check for NULL pointer.

2007-05-04  Jerry DeLisle  <jvdelisle@gcc.gnu.org>

	PR fortran/31251
	* simplify.c (gfc_simplify_len): Only simplify integer lengths.

2007-05-04  Francois-Xavier Coudert <fxcoudert@gcc.gnu.org>

	PR fortran/31781
	* simplify.c (gfc_simplify_repeat): Don't put function call with
	side effect in a gcc_assert().

2007-05-04  Tobias Burnus  <burnus@net-b.de>

	PR fortran/25071
	* interface.c (compare_actual_formal): Check character length.

2007-05-01  Thomas Koenig  <tkoenig@gcc.gnu.org>

	PR fortran/31732
	* dependency.c (gfc_full_array_ref_p):  If the reference is
	to a single element, check that the array has a single
	element and that the correct element is referenced.

2007-05-01  Daniel Franke  <franke.daniel@gmail.com>

	* intrinsic.c (add_functions): Fixed ELEMENTAL specifications.
	(add_subroutines): Replaced magic numbers in function calls by
	ELEMENTAL and NOT_ELEMENTAL respectively.
	* intrinsic.texi (MVBITS): Changed class to elemental subroutine.
	(RANDOM_NUMBER): Changed class to subroutine.
	(HUGE, TINY): Changed class to inquiry function.

2007-04-30  Brooks Moses  <brooks.moses@codesourcery.com>

	* trans-const.c (gfc_conv_mpz_to_tree): Use mpz_get_double_int.
	(gfc_conv_tree_to_mpz): New function.
	(gfc_conv_mpfr_to_tree): Use real_from_mpfr.
	(gfc_conv_tree_to_mpfr): New function.
	* trans-const.h: (gfc_conv_tree_to_mpz): New prototype.
	(gfc_conv_tree_to_mpfr): New prototype.

2007-04-30  Daniel Franke  <franke.daniel@gmail.com>

	* intrinsic.texi (IERRNO): Changed class to non-elemental function.
	(LOG10): Removed COMPLEX as accepted argument type.
	(NEW_LINE): Changed class from elemental to inquiry function.
	(SIGN): Removed requirement of scalar arguments.
	(SNGL): Changed class to elemental function.

2007-04-29  Francois-Xavier Coudert <fxcoudert@gcc.gnu.org>

	PR fortran/31591
	* simplify.c (simplify_bound_dim): New function.
	(simplify_bound): Use the above. Perform simplification of LBOUND
	and UBOUND when DIM argument is not present.

2007-04-29  Daniel Franke  <franke.daniel@gmail.com>

	* gfortran.texi: Cleaned up keyword index.
	* invoke.texi: Likewise.
	* intrinsic.texi: Likewise.
			
2007-04-29  Francois-Xavier Coudert  <fxcoudert@gcc.gnu.org>

	PR fortran/31645
	* scanner.c (load_file): Discard the byte order mark if one is
	found on the first non-preprocessor line of a file.

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

	PR fortran/31711
	* trans-array.c (gfc_conv_resolve_dependencies): Create a temp
	whenever a dependency is found.

2007-04-28  Tobias Schlüter  <tobi@gcc.gnu.org>

	* options.c (gfc_handle_option): Ensure requested free form line
	length is not too small.

2007-04-27  Brooks Moses  <brooks.moses@codesourcery.com>

	* intrinsic.texi (Transfer): Improve documentation.

2007-04-27  Brooks Moses  <brooks.moses@codesourcery.com>

	* gfortran.texi (Option Index): Add @samp as needed.

2007-04-27  Daniel Franke  <franke.daniel@gmail.com>

	* gfortran.texi: Added node and menu entry for an option index.
	* invoke.texi: Moved command line option related entries of the concept 
	index to the option index.

2007-04-27  Daniel Franke  <franke.daniel@gmail.com>

	* intrinsic.texi (AND, FPUT, FPUTC, MODULO, OR, SET_EXPONENT,
	XOR): Fixed examples.

2007-04-27  Daniel Franke  <franke.daniel@gmail.com>

	* intrinsic.texi (PRODUCT, RESHAPE, SPACING, SPREAD, SUM, 
	SYSTEM_CLOCK, TRANSFER, UNPACK): New.
	(DATE_AND_TIME, CPU_TIME, RRSPACING): Added cross references.

2007-04-26  Daniel Franke  <franke.daniel@gmail.com>

	* intrinsic.texi (NULL, PACK, PRESENT, REPEAT, SCAN, SHAPE, 
	SIZE, TRANSPOSE, TRIM, VERIFY): New.
	(ADJUSTL, ADJUSTR, INDEX): Added cross references.
	(INT, INT2, INT8, LONG): Enabled section header.

2007-04-25  Janne Blomqvist  <jb@gcc.gnu.org>

	* module.c (module_char): Replace fgetc() with
	getc(). 
	(write_char): Replace fputc() with putc().
	* scanner.c (load_line): Replace fgetc() with getc().
	(gfc_read_orig_filename): Likewise.

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

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

2007-04-25  Francois-Xavier Coudert  <fxcoudert@gcc.gnu.org>

	PR libfortran/31299
	* intrinsic.texi (GETLOG): Update documentation to reflect
	library changes.

2007-04-24  Francois-Xavier Coudert  <fxcoudert@gcc.gnu.org>

	PR fortran/31587
	* module.c (write_char): Add character to the MD5 buffer.
	(read_md5_from_module_file): New function.
	(gfc_dump_module): Compute MD5 for new module file. Call
	read_md5_from_module_file. Only overwrite old module file
	if the new MD5 is different.

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

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

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

2007-04-23  Tobias Burnus  <burnus@net-b.de>

	* primary.c (match_integer_constant): Mention -fno-range-check
	in the error message.

2007-04-21  Jerry DeLisle  <jvdelisle@gcc.gnu.org>

	PR fortran/31495
	* scanner.c (load_line):  Remove check for comment after ampersand and
	adjust tracking of ampersand.

2007-04-21  Andrew Pinski  <andrew_pinski@playstation.sony.com>

	* f95-lang.c (lang_tree_node): Use GENERIC_NEXT
	instead of checking GIMPLE_STMT_P in chain_next.

2007-04-17  Tobias Schlüter  <tobi@gcc.gnu.org>

	* trans-types.h (gfc_packed): New enum.
	(gfc_get_nodesc_array_type): Change prototype to use new enum.
	* trans-types.c (gfc_get_nodesc_array): Use gfc_packed for
	argument packed.  Adapt all references to values accordingly.
	(gfc_sym_type): Use enum values in call to gfc_get_nodesc_array.
	(gfc_get_derived_type): Likewise.
	* trans-array.c (gfc_build_constant_array_constructor): Likewise.
	* trans-expr.c (gfc_get_interface_mapping_charlen): Changed packed
	argument to type gfc_packed.
	(gfc_add_interface_mapping): Use enum values in call to
	gfc_get_interface_mapping.
	* trans-decl.c (gfc_build_dummy_array_decl): Adapt to use enum
	values when determining packing.

	* trans-decl.c (gfc_finish_decl): Remove unused second argument
	'init'.  Simplify code accordingly.  Remove calls to
	gfc_fatal_error in favor of gcc_assert.
	(create_function_arglist): Remove second argument from calls to
	gfc_finish-decl.
	(gfc_trans_dummy_character): Likewise.

	* arith.h: Update copyright years.
	* dependency.h: Likewise.
	* gfortran.h: Likewise.
	* lang-specs.h: Likewise.
	* parse.h: Likewise.
	* symbol.c: Likewise.
	* trans.h: Likewise.
	* trans.c: Likewise.
	* trans-array.c: Likewise.
	* trans-common.c: Likewise.
	* trans-const.h: Likewise.
	* trans-const.c: Likewise.
	* trans-decl.c: Likewise.
	* trans-expr.c: Likewise.
	* trans-io.c: Likewise.
	* trans-openmp.c: Likewise.
	* trans-types.h: Likewise.
	* types.def: Likewise.

2007-04-17  Tobias Schlüter  <tobi@gcc.gnu.org>

	PR fortran/31144
	* decl.c (gfc_sym_mangled_identifier): Use capital letters in name
	mangling.
	(gfc_sym_mangled_function_id): Likewise.

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

	PR fortran/31204
	* primary.c (check_for_implicit_index): New function to check
	that a host associated variable is not an undeclared implied
	do loop index.
	(gfc_match_rvalue, match_variable): Use it and reset the
	implied_index attribute.
	* gfortran.h : Add the implied_index field to symbol_attribute.
	* match.c (gfc_match_iterator): Mark the iterator variable
	with the new attribute.
	* decl.c (build_sym): Reset the new attribute.

2007-04-15  Kazu Hirata  <kazu@codesourcery.com>

	* gfc-internals.texi: Fix typos.
	* simplify.c: Fix a comment typo.

2007-04-14  Bernhard Fischer  <aldot@gcc.gnu.org>

	* primary.c: Commentary typo fix; Add question about redundant (?)
	set.

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

	PR fortran/29507
	PR fortran/31404
	* expr.c (scalarize_intrinsic_call): New function to
	scalarize elemental intrinsic functions in initialization
	expressions.
	(check_init_expr): Detect elemental intrinsic functions
	in initalization expressions and call previous.

2007-04-13  Tobias Burnus  <burnus@net-b.de>

	PR fortran/31559
	* primary.c (match_variable): External functions
	are no variables.

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

	PR fortran/31550
	* trans-types.c (copy_dt_decls_ifequal): Do not get pointer
	derived type components.

2007-04-13  Tobias Schlüter  <tobi@gcc.gnu.org>

	PR fortran/18937
	* resolve.c: Include obstack.h and bitmap.h.  New variable
	labels_obstack.
	(code_stack): Add tail and reachable_labels fields.
	(reachable_labels): New function.
	(resolve_branch): Rework to use new fields in code_stack.
	(resolve_code): Call reachable_labels.
	(resolve_codes): Allocate and free labels_obstack.

2007-04-12  Tobias Schlüter  <tobi@gcc.gnu.org>

	PR fortran/31250
	* decl.c (match_char_spec): Move check for negative CHARACTER
	length ...
	* resolve.c (resolve_charlen): ... here.
	(resolve_types): Resolve CHARACTER lengths earlier.

2007-04-12  Daniel Franke  <franke.daniel@gmail.com>

	PR fortran/31234
	* intrinsic.texi (RANDOM_SEED, RANDOM_NUMBER): New.

2007-04-12  Tobias Schlüter  <tobi@gcc.gnu.org>

	PR fortran/31266
	* primary.c (gfc_variable_attr): Don't copy string length if it
	doesn't make sense.
	* resolve.c (resolve_code): Clarify error message.

	PR fortran/31471
	* decl.c (gfc_match_end): Also check for construct name in END
	FORALL and END WERE statements.
	* match.c (match_case_eos): Use uppercase for statement name in
	error message.
	(match_elsewhere): Construct name may appear iff construct has a
	name.

	* trans-types.c: Update copyright years.  Reformat long comment
	explaining array descriptor format.  Remove obsolete mention of
	TYPE_SET.

	* arith.c (gfc_arith_uplus): Rename to ...
	(gfc_arith_identity): ... this.
	(gfc_parentheses): New function.
	(gfc_uplus): Adapt to renamed function.
	* arith.h (gfc_parentheses): Add prototype.
	* expr.c (gfc_copy_expr): Deal with INTRINSIC_PARENTHESES.
	(simplifiy_intrinsic_op): Treat INTRINSIC_UPLUS separately from
	INTRINSIC_PARENTHESES.

2007-04-12  Tobias Burnus  <burnus@net-b.de>

	PR fortran/31472
	* decl.c (match_attr_spec): Allow PRIVATE/PUBLIC
	attribute in type definitions.
	(gfc_match_private): Allow PRIVATE statement only
	in specification part of modules.
	(gfc_match_public): Ditto for PUBLIC.
	(gfc_match_derived_decl): Allow PRIVATE/PUBLIC attribute only in
	specificification part of modules.

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

	PR fortran/31257
	* intrinsic.c (add_functions): Add ref. to gfc_resolve_achar.
	* intrinsic.h : Add prototype for gfc_resolve_achar.
	* iresolve.c (gfc_resolve_achar): New function.

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

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

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

	PR fortran/30872
	* expr.c (find_array_element): Correct arithmetic for rank > 1.

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

	PR fortran/31222
	* check.c (numeric_check): If an expresson has not got a type,
	see if it is a symbol for which a default type applies.

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

	PR fortran/31214
	* trans-decl.c (gfc_get_symbol_decl): Allow unreferenced use
	associated symbols.

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

	PR fortran/31293
	* symbol.c (gfc_check_function_type): New function.
	* gfortran.h : Add prototype for previous.
	* parse.c (parse_progunit): Call it after parsing specification
	statements.

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

	PR fortran/31483
	* trans-expr.c (gfc_conv_function_call): Give a dummy
	procedure the correct type if it has alternate returns.

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

	PR fortran/31292
	* decl.c (gfc_match_modproc): Go up to the top of the namespace
	tree to find the module namespace for gfc_get_symbol.

2007-04-03  Francois-Xavier Coudert  <fxcoudert@gcc.gnu.org>

	PR fortran/31304
	* fortran/gfortran.h (gfc_charlen_int_kind): New prototype.
	* fortran/trans-types.c (gfc_charlen_int_kind): New variable.
	(gfc_init_types): Define gfc_charlen_int_kind. 
	* fortran/trans.h (gfor_fndecl_string_repeat): Remove prototype.
	* fortran/trans-decl.c (gfor_fndecl_string_repeat): Delete.
	(gfc_build_intrinsic_function_decls): Don't set
	gfor_fndecl_string_repeat.
	* fortran/trans-intrinsic.c (gfc_conv_intrinsic_repeat): Rewrite
	so that we don't have to call a library function.
	* fortran/simplify.c (gfc_simplify_repeat): Perform the necessary
	checks on the NCOPIES argument, and work with arbitrary size
	arguments.

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

	* intrinsic.c (add_functions): Fix name of dummy argument
	  for new_line and exit intrinsic.

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

	PR fortran/31160
	* gfortran.texi: Add a section for the %VAL, %REF and %LOC
	extensions.

2007-03-30  Rafael Ávila de Espíndola  <espindola@google.com>

	* trans-types.c (gfc_signed_or_unsigned_type): Remove.
	(gfc_unsigned_type): Use get_signed_or_unsigned_type instead of
	gfc_signed_or_unsigned_type.
	(gfc_signed_type): Ditto.
	* trans-types.h (gfc_signed_or_unsigned_type): Remove.
	* f95-lang.c (LANG_HOOKS_SIGNED_OR_UNSIGNED_TYPE): Remove.

2007-03-30  Tobias Schlüter  <tobi@gcc.gnu.org>

	* symbol.c (gfc_find_gsymbol): Simplify, don't unconditionally
	descend into all branches.

2007-03-29  Tobias Schlüter  <tobi@gcc.gnu.org>

	* intrinsic.c (conv_name): Let gfc_get_string handle the format.
	(find_conv): Compare pointers instead of calling strcmp.
	(find_sym): Likewise, but ensure that the compared pointer is in
	the global string table.

2007-03-28  Tobias Schlüter  <tobi@gcc.gnu.org>

	* gfc-internals.texi: Fix output filename.  Merge type index into
	concept index.  Start documentation of gfc_code structure.

2007-03-26  Brooks Moses  <brooks.moses@codesourcery.com>

	* gfc-internals.texi: New file,
	* Make-lang.in: Add rules to convert it to dvi, pdf, and info.

2007-03-26  Brooks Moses  <brooks.moses@codesourcery.com>
 
	* error.c (show_locus): Remove always-false test.

2007-03-26  Brooks Moses  <brooks.moses@codesourcery.com>

	* lang.opt: Minor edits to descriptions.

2007-03-25  Francois-Xavier Coudert  <fxcoudert@gcc.gnu.org>

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

2007-03-24  Francois-Xavier Coudert  <fxcoudert@gcc.gnu.org>

	PR fortran/30655
	* expr.c (check_dimension): Fix logic of comparisons.

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

	PR fortran/31215
	* trans-expr.c (gfc_apply_interface_mapping_to_expr): Return
	int result that is non-zero if the expression is the function
	result.  Only the characteristics of the result expression
	can be used in a procedure interface, so simplify LEN in situ
	using its character length.

	PR fortran/31209
	PR fortran/31200
	* trans-expr.c (gfc_conv_function_call): Do not use
	gfc_conv_expr_reference for actual pointer function with formal
	target because a temporary is created that does not transfer
	the reference correctly.  Do not indirect formal pointer
	functions since it is the function reference that is needed.

2007-03-24  Brooks Moses  <brooks.moses@codesourcery.com>

	* gfortran.h: Edit comments on GFC_STD_*.

2007-03-23  Brooks Moses  <brooks.moses@codesourcery.com>

	* invoke.texi: Misc. small typo fixes.
	(-Wcharacter-truncation): Add.
	(-Wnonstd-intrinsics): Correct spelling.
	(-std=): Edit.
	(-fintrinsic-modules-path): Add.

2007-03-23  Francois-Xavier Coudert  <fxcoudert@gcc.gnu.org>

	PR fortran/30834
	* arith.c (complex_pow): Rewrite to handle large power.
	(gfc_arith_power): Handle large power in the real and integer
	cases.

2007-03-22  Francois-Xavier Coudert  <coudert@clipper.ens.fr>

	PR fortran/31262
	* trans-const.c (gfc_conv_mpz_to_tree): Allow integer constants
	larger than twice the width of a HOST_WIDE_INT.

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

	PR fortran/31193
	* trans-intrinsic.c (gfc_size_in_bytes): Remove function.
	(gfc_conv_intrinsic_array_transfer): Remove calls to previous.
	Explicitly extract TREE_TYPEs for source and mold.  Use these
	to calculate length of source and mold, except for characters,
	where the se string_length is used.  For mold, the TREE_TYPE is
	recalculated using gfc_get_character_type_len so that the
	result is correctly cast for character literals and substrings.
	Do not use gfc_typenode_for_spec for the final cast.

2007-03-22  Tobias Schlüter  <tobi@gcc.gnu.org>

	PR fortran/20897
	* decl.c (gfc_match_derived_decl): Reliably reject
	'doubleprecision' and 'doublecomplex' as type names.

2007-03-19  Francois-Xavier Coudert  <coudert@clipper.ens.fr>

	PR fortran/31203
	* trans-expr.c (gfc_trans_init_string_length): Length should
	never be negative.
	(gfc_conv_function_call): Likewise.

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

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

	2007-03-17  Francois-Xavier Coudert  <coudert@clipper.ens.fr>

	PR fortran/31120
	* trans-expr.c (gfc_conv_powi): Make n argument unsigned hwi.
	(gfc_conv_cst_int_power): Handle integer exponent with care,
	since it might be too large for us.

2007-03-17  Francois-Xavier Coudert  <coudert@clipper.ens.fr>

	PR fortran/31184
	* invoke.texi: Fix typo.

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

	* trans-decl.c (gfc_generate_function_code): Use all arguments of
	  set_std.

2007-03-15  Francois-Xavier Coudert  <coudert@clipper.ens.fr>

	* gfortran.h (gfc_option_t): Add flag_backtrace field.
	* lang.opt: Add -fbacktrace option.
	* invoke.texi: Document the new option.
	* trans-decl.c (gfc_build_builtin_function_decls): Add new
	option to the call to set_std.
	* options.c (gfc_init_options, gfc_handle_option): Handle the
	new option.

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

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

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

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


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

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

2007-03-14  Francois-Xavier Coudert  <coudert@clipper.ens.fr>

	* trans-array.c (gfc_trans_auto_array_allocation): Replace
	fold(convert()) by fold_convert().
	(gfc_duplicate_allocatable): Likewise.
	* trans-intrinsic.c (gfc_conv_intrinsic_dot_product): Use
	build_int_cst instead of converting an integer_zero_node
	to the final type.

2007-03-14  Jakub Jelinek  <jakub@redhat.com>

	* module.c (mio_typespec): Don't look at ts->cl if not BT_CHARACTER.

2007-03-13  Brooks Moses  <brooks.moses@codesourcery.com>

	PR fortran/30933
	PR fortran/30948
	PR fortran/30953
	* intrinsics.texi (CHDIR): Fix argument names, note
	that STATUS must be a default integer.
	(CTIME): Fix argument names, note that RESULT must
	be a default integer.
	(EXIT): Note that STATUS must be a default integer.

2007-03-13  Brooks Moses  <brooks.moses@codesourcery.com>

	PR fortran/28068
	* intrinsic.texi: General whitespace cleanup, remove
	comment about missing intrinsics.
	(menu): Add lines for new entries listed below.
	(ACOSH): Mention specific function DACOSH, correct
	description phrasing.
	(ASINH): Mention specific function DASINH, correct
	description phrasing.
	(ATANH): Mention specific function DATANH, correct
	description phrasing.
	(COS): Add index entry for CCOS.
	(CPU_TIME): Correct "REAL" to "REAL(*)".
	(EXP): Add index entry for CEXP.
	(INT): Correct argument name to "A".
	(INT2): New entry.
	(INT8): New entry.
	(LONG): New entry.
	(MAX): Add index entries for specific variants.
	(MCLOCK): New entry.
	(MCLOCK8): New entry.
	(SECNDS): Adjust to a more standard form.
	(SECOND): New entry.
	(TIME): Add cross-reference to MCLOCK.
	(TIME8): Add cross-reference to MCLOCK8.

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

	PR fortran/30883
	* parse.c (parse_interface): Use the default types from the
	formal namespace if a function or its result do not have a type
	after parsing the specification statements.

2007-03-08  Brooks Moses  <brooks.moses@codesourcery.com>

	* intrinsic.texi: (ICHAR) Improve internal I/O note.
	(ACHAR): Reference it.
	(CHAR): Reference it.
	(IACHAR): Reference it.

2007-03-08  Brooks Moses  <brooks.moses@codesourcery.com>

	* intrinsic.texi: (LINK) Document function form.
	(RENAME): Likewise.
	(SYMLNK): Likewise.
	(SYSTEM): Likewise.
	(UNLINK): Likewise.

2007-03-08  Brooks Moses  <brooks.moses@codesourcery.com>

	* intrinsic.texi: minor typo fixes, removed prologue.
	(FSEEK): moved to correct place in alphabetical order.

2007-03-08  Daniel Franke  <franke.daniel@gmail.com>

	PR fortran/30947
	* check.c (gfc_check_alarm_sub): Added check for default integer 
	kind of status argument.
	* iresolve.c (gfc_resolve_alarm_sub): Removed conversion of 
	status argument.
	* intrinsic.texi (ALARM): Extended documentation.

2007-03-08  Daniel Franke  <franke.daniel@gmail.com>

	* intrinsic.texi (GERROR, ISATTY, TTYNAM): New.
	(ABORT, FLUSH, FNUM, IRAND, MALLOC, SIGNAL, SRAND): Fixed typo.
	* intrinsic.c (add_subroutines): Adjusted dummy argument names 
	of GERROR and TTYNAM.

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

	* module.c (gfc_match_use): Support renaming of operators
	in USE statements.
	* gfortran.texi (Fortran 2003 Status): Document support of
	renaming of operators.

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

	PR fortran/30973
	* module.c (read_module): Always import module name as symbol.
	(gfc_match_use): Disallow module name in the only clause of
	a use statement.

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

	PR fortran/31011
	* expr.c (find_array_section): Correct arithmetic for section
	size.

2007-03-07  Brooks Moses  <brooks.moses@codesourcery.com>

	* iresolve.c (gfc_resolve_ishftc): Correct s_kind value.

2007-03-06  Daniel Franke  <franke.daniel@gmail.com>

	PR documentation/30950
	* intrinsic.texi (AND, CPU_TIME): Fix dummy argument names.
	(FREE): Fix call syntax.

2007-03-06  Brooks Moses  <brooks.moses@codesourcery.com>

	* intrinsic.texi: Limit column widths to a total of .85.

2007-03-05  Brooks Moses  <brooks.moses@codesourcery.com>

	* gfortran.texi (GFortran and G77): Rewrite completely.

2007-03-05  Brooks Moses  <brooks.moses@codesourcery.com>

	* match.c (gfc_match_name): Expanded comment.

2007-03-05  Brooks Moses  <brooks.moses@codesourcery.com>

	* gfortran.texi (Old-style kind specifications): Document
	special handling of old-style kind specifiers for COMPLEX.
	* decl.c (gfc_match_old_kind_spec): Document kind/bytesize
	assumptions for COMPLEX in comment.

2007-03-05  Brooks Moses  <brooks.moses@codesourcery.com>

	PR 31050
	* gfortranspec.c (lang_specific_driver): Update program
	name and copyright date.

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

	PR fortran/30882
	* check.c (dim_rank_check): The shape of subsections of
	assumed-size arrays is known.

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

	PR fortran/30873
	* decl.c (gfc_match_entry): Remove erroneous entry result check.

2007-03-01  Brooks Moses  <brooks.moses@codesourcery.com>

	* Make-lang.in: Add install-pdf target as copied from
	automake v1.10 rules.

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

	PR fortran/30865
	* trans-intrinsic.c (gfc_conv_intrinsic_size): Compare pointers.

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

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

2007-02-28  Tobias Burnus  <burnus@net-b.de>

	PR fortran/30968
	* primary.c (next_string_char): Correct reading a character
	after the delimiter.
	(match_string_constant): Print warning message only once.

2007-02-27  Richard Guenther  <rguenther@suse.de>

	* trans-array.c (structure_alloc_comps): Use correct type
	for null pointer constant.

2007-02-26  Brooks Moses  <brooks.moses@codesourcery.com>

	* gfortran.texi: Standardize title page, remove version number
	from copyright page.

2007-02-26  Thomas Koenig  <Thomas.Koenig@online.de>
	    Paul Thomas  <pault@gcc.gnu.org>

	PR fortran/30865
	* trans-intrinsic.c (gfc_conv_intrinsic_size):
	If dim is an optional argument, check for its
	presence and call size0 or size1, respectively.

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

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


2007-02-22  Jerry DeLisle  <jvdelisle@gcc.gnu.org>

	* options.c (set_default_std_flags): New function to consolidate
	setting the flags.
	(gfc_init_options): Use new function.
	(gfc_handle_option): Use new function.

2007-02-22  Brooks Moses  <brooks.moses@codesourcery.com>

	* gfortran.texi (Old-style kind specifications): Document
	special handling of old-style kind specifiers for COMPLEX.
	* decl.c (gfc_match_old_kind_spec): Documented kind/bytesize
	assumptions in comment.

2007-02-21  Bernhard Fischer  <aldot@gcc.gnu.org>

	* parse.c (next_free): Gooble spaces after OpenMP sentinel.

2007-02-20  Thomas Koenig  <Thomas.Koenig@online.de>

	PR fortran/30869
	* match.c (gfc_match_iterator): Remove conflict between
	loop variable and pointer.

2007-02-20  Tobias Burnus  <burnus@net-b.de>

	PR fortran/30522
	* symbol.c (gfc_add_volatile): Allow to set VOLATILE
	  attribute for host-associated variables.
	* gfortran.h (symbol_attribute): Save namespace
	  where VOLATILE has been set.
	* trans-decl.c (gfc_finish_var_decl): Move variable
	  declaration to the top.

2007-02-20  Tobias Burnus  <burnus@net-b.de>

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

2007-02-19  Thomas Koenig  <Thomas.Koenig@online.de>

	PR libfortran/30533
	* fortran/iresolve.c (gfc_resolve_maxloc): Remove coercion of
	argument to default integer.
	(gfc_resolve_minloc): Likewise.

2007-02-18  Jerry DeLisle  <jvdelisle@gcc.gnu.org>

	PR fortran/30681
	* options.c (gfc_init_options): Relax warning level for obsolescent.
	* match.c (match_arithmetic_if): Change to obsolescent from deleted.
	(gfc_match_if): Same.

2007-02-18  Roger Sayle  <roger@eyesopen.com>

	* trans-array.c (gfc_build_constant_array_constructor): When the
	shape of the constructor is known, use that to construct the
	gfc_array_spec.
	(gfc_trans_constant_array_constructor): Initialize the "info"
	information for all of the dimensions of the array constructor.
	(constant_array_constructor_loop_size): New function.
	(gfc_trans_array_constructor): Use it to determine whether a
	loop is suitable for "constant array constructor" optimization.

	* trans-intrinsic.c (gfc_conv_intrinsic_anyall): Use fold_build2
	instead of build2, to avoid conditions like "(a != b) != 0".

2007-02-18  Roger Sayle  <roger@eyesopen.com>
	    Paul Thomas <pault@gcc.gnu.org>

	PR fortran/30400
	* match.c (match_forall_iterator): Use gfc_match_expr instead
	of gfc_match_variable to match the iterator variable.  Return
	MATCH_NO if not a variable.  Remove the reset of the symbol's
	flavor in cleanup.

2007-02-16  Tobias Burnus  <burnus@net-b.de>

	PR fortran/30793
	* trans-decl.c (gfc_generate_function_code): Do not initialize
	pointers to derived components.

2007-02-15  Sandra Loosemore  <sandra@codesourcery.com>
	    Brooks Moses  <brooks.moses@codesourcery.com>
	    Lee Millward  <lee.millward@codesourcery.com>

	* trans-expr.c (gfc_conv_power_op): Use build_call_expr.
	(gfc_conv_string_tmp): Likewise.
	(gfc_conv_concat_op): Likewise.
	(gfc_build_compare_string): Likewise.
	(gfc_conv_function_call): Use build_call_list instead of build3.

	* trans-array.c (gfc_trans_allocate_array_storage): Use
	build_call_expr.
	(gfc_grow_array): Likewise.
	(gfc_trans_array_ctor_element): Likewise.
	(gfc_trans_array_constructor_value): Likewise.
	(gfc_array_allocate): Likewise.
	(gfc_array_deallocate): Likewise.
	(gfc_trans_auto_array_allocation): Likewise.
	(gfc_trans_dummy_array_bias): Likewise.
	(gfc_conv_array_parameter): Likewise.
	(gfc_trans_dealloc_allocated): Likewise.
	(gfc_duplicate_allocatable): Likewise.

	* trans-openmp.c (gfc_trans_omp_barrier): Use build_call_expr.
	(gfc_trans_omp_flush): Likewise.

	* trans-stmt.c (gfc_conv_elementel_dependencies): Use build_call_expr.
	(gfc_trans_pause): Likewise.
	(gfc_trans_stop): Likewise.
	(gfc_trans_character_select): Likewise.
	(gfc_do_allocate): Likewise.
	(gfc_trans_assign_need_temp): Likewise.
	(gfc_trans_pointer_assign_need_temp): Likewise.
	(gfc_trans_forall_1): Likewise.
	(gfc_trans_where_2): Likewise.
	(gfc_trans_allocate): Likewise.
	(gfc_trans_deallocate): Likewise.

	* trans.c (gfc_trans_runtime_check): Use build_call_expr.

	* trans-io.c (gfc_trans_open): Use build_call_expr.
	(gfc_trans_close): Likewise.
	(build_filepos): Likewise.
	(gfc_trans_inquire): Likewise.
	(NML_FIRST_ARG): Delete.
	(NML_ADD_ARG): Delete.
	(transfer_namelist_element): Use build_call_expr.
	(build_dt): Likewise.
	(gfc_trans_dt_end): Likewise.
	(transfer_expr): Likewise.
	(transfer_array-desc): Likewise.

	* trans-decl.c (gfc_generate_function_code): Use build_call_expr.
	(gfc_generate_constructors): Likewise.

	* trans-intrinsic.c (gfc_conv_intrinsic_ctime): Use build_call_expr.
	(gfc_conv_intrinsic_fdate): Likewise.
	(gfc_conv_intrinsic_ttynam): Likewise.
	(gfc_conv_intrinsic_array_transfer): Likewise.
	(gfc_conv_associated): Likewise.
	(gfc_conv_intrinsic_si_kind): Likewise.
	(gfc_conv_intrinsic_trim): Likewise.
	(gfc_conv_intrinsic_repeat: Likewise.
	(gfc_conv_intrinsic_iargc): Likewise.

2007-02-14  Jerry DeLisle  <jvdelisle@gcc.gnu.org>

	PR fortran/30779
	* scanner.c (gfc_next_char_literal): Add check for end of file after
	call to advance_line.

2007-02-14  Steven G. Kargl  <kargl@gcc.gnu.org>

	PR fortran/30799
	* primary.c (match_logical_constant): Return MATCH_ERROR on invalid
	kind.

2007-02-14  Steven G. Kargl  <kargl@gcc.gnu.org>

	* misc.c (gfc_typename): Fix potential buffer overflow.

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

	PR fortran/30554
	* module.c (read_module): Set pointer_info to referenced if the
	symbol has no namespace.

2007-02-12  Nick Clifton  <nickc@redhat.com>

	* lang.opt: Add Warning attribute to warning options.

2007-02-11  Daniel Franke  <franke.daniel@gmail.com>

	* intrinsic.texi (HOSTNM): Fix typographical error in syntax.
	(SLEEP): Added section and documentation.

2007-02-11  Tobias Schlüter  <tobi@gcc.gnu.org>

	PR fortran/30478
	* decl.c (add_init_expr_to_sym): Remove ENUM specific code.
	(variable_decl): Likewise.  Rewrap comment.
	(match_attr_spec): Remove ENUM specific code.
	(gfc_match_enum): Fix typo in error message.
	(enumerator_decl): New function.
	(gfc_match_enumerator_def): Use enumerator_decl instead of
	variable_decl.  Adapt code accordingly.

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

	PR fortran/30554
	* module.c (find_symtree_for_symbol): New function to return
	a symtree that is not a "unique symtree" given a symbol.
	(read_module): Do not automatically set pointer_info to
	referenced because this inhibits the generation of a unique
	symtree.  Recycle the existing symtree if possible by calling
	find_symtree_for_symbol.

	PR fortran/30319
	* decl.c (add_init_expr_to_sym): Make new charlen for an array
	constructor initializer.

2007-02-10  Richard Henderson  <rth@redhat.com>, Jakub Jelinek  <jakub@redhat.com>

	* f95-lang.c (gfc_init_builtin_functions): Add __emutls_get_address
	and __emutls_register_common.
	* openmp.c (gfc_match_omp_threadprivate): Don't error if !have_tls.
	* trans-common.c (build_common_decl): Don't check have_tls.
	* trans-decl.c (gfc_finish_var_decl): Likewise.
	* types.def (BT_WORD, BT_FN_PTR_PTR): New.
	(BT_FN_VOID_PTR_WORD_WORD_PTR): New.

2007-02-09  Tobias Burnus  <burnus@net-b.de>

	PR fortran/30512
	* trans-intrinsic.c (gfc_conv_intrinsic_minmaxloc,
	  gfc_conv_intrinsic_minmaxval): Use HUGE-1 for most negative integer.

2007-02-09  Francois-Xavier Coudert  <coudert@clipper.ens.fr>

	PR fortran/30720
	* trans-array.c (gfc_trans_create_temp_array): Remove use of the
	function argument. Always generate code for negative extent.
	Simplify said code.
	* trans-array.h (gfc_trans_create_temp_array): Change prototype.
	* trans-expr.c (gfc_conv_function_call): Remove use of last argument
	of gfc_trans_create_temp_array.
	* trans-intrinsic.c (gfc_conv_intrinsic_array_transfer): Likewise.
	* trans-stmt.c (gfc_conv_elemental_dependencies): Likewise.

2007-02-08  Roger Sayle  <roger@eyesopen.com>

	* trans-stmt.c (gfc_trans_forall_1): Optimize the cases where the
	mask expression is a compile-time constant (".true." or ".false.").

2007-02-04  Francois-Xavier Coudert  <coudert@clipper.ens.fr>

	PR fortran/30611
	* trans-intrinsic.c (gfc_conv_intrinsic_repeat): Evaluate
	arguments only once. Generate check that NCOPIES argument is not
	negative.

2007-02-04  Steven G. Kargl <kargl@gcc.gnu.org>

	PR fortran/30605
	* fortran/invoke.texi: Update documentation.
	* fortran/options.c (gfc_post_options): Deal with tabs with -std=f2003
	and -pedantic.

2007-02-03  Kazu Hirata  <kazu@codesourcery.com>

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

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

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

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

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

	PR fortran/30683
	* resolve.c (resolve_generic_f): Check for non-NULL sym.

2007-02-02  Roger Sayle  <roger@eyesopen.com>

	* trans.c (gfc_build_array_ref): Use STRIP_TYPE_NOPS to eliminate
	NON_LVALUE_EXPR nodes and useless type conversions.

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

	PR fortran/30284
	PR fortran/30626
	* trans-expr.c (gfc_conv_aliased_arg): Remove static attribute
	from function and make sure that substring lengths are
	translated.
	(is_aliased_array): Remove static attribute.
	* trans.c : Add prototypes for gfc_conv_aliased_arg and
	is_aliased_array.
	* trans-io.c (set_internal_unit): Add the post block to the
	arguments of the function.  Use is_aliased_array to check if
	temporary is needed; if so call gfc_conv_aliased_arg.
	(build_dt): Pass the post block to set_internal_unit and
	add to the block after all io activiy is done.

2007-02-01  Roger Sayle  <roger@eyesopen.com>

	* trans-array.c (gfc_conv_expr_descriptor): We don't need to use
	a temporary array to pass a constant non-character array constructor.
	Generalize the descriptor generation code to handle scalarizer
	"info" without an array reference.

2007-02-01  Roger Sayle  <roger@eyesopen.com>

	* dependency.c (gfc_check_dependency) <EXPR_ARRAY>: Implement
	dependency checking for array constructors.

2007-02-01  Roger Sayle  <roger@eyesopen.com>

	* trans-stmt.c (compute_overall_iter_number): Document function
	arguments.  Generalize "unconditional forall nest with constant
	bounds" optimization to eliminate unconditional inner loops with
	constant bounds.

2007-01-31  Tobias Burnus  <burnus@net-b.de>

	PR fortran/30520
	* interface.c (compare_actual_formal): Check conformance between
	  actual and VOLATILE dummy arguments.
	* symbol.c (gfc_add_volatile): Allow setting of VOLATILE
	  multiple times in different scopes.
	* decl.c (gfc_match_volatile): Search symbol in host association.

2007-01-31  Kazu Hirata  <kazu@codesourcery.com>

	* simplify.c, trans-array.c: Fix comment typos.

2007-01-30  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>

	* invoke.texi (Code Gen Options): Fix abbreviation typo.
	* intrinsic.texi (ACCESS, LSHIFT, RSHIFT): Fix typos.

2007-01-30  Steve Ellcey  <sje@cup.hp.com>

	PR fortran/30432
	* trans-types.c (gfc_get_function_type): Do not add void_type_node
	to empty arg list.
	* trans-decl.c (create_function_arglist): Change assert.

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

	PR fortran/30554
	* module.c (read_module): If a symbol is excluded by an ONLY
	clause, check to see if there is a symtree already loaded. If
	so, attach the symtree to the pointer_info.

2007-01-28  Thomas Koenig  <Thomas.Koenig@online.de>

	PR libfortran/30389
	* gfortran.h: Remove gfc_simplify_init_1.
	* arith.h: Remove third argument from gfc_compare_string.
	* arith.c (gfc_compare_expression): Remove third argument
	from call to gfc_compare_string.
	(gfc_compare_string): Remove third argument xcoll_table.
	Remove use of xcoll_table.
	* misc.c (gfc_init_1): Remove call to gfc_simplify_init_1.
	* simplify.c (ascii_table): Remove.
	(xascii_table): Likewise.
	(gfc_simplify_achar): ICE if extract_int fails.  Remove use of
	ascii_table.  Warn if -Wsurprising and value < 0 or > 127.
	(gfc_simplify_char): ICE if extract_int fails. Error if
	value < 0 or value > 255.
	(gfc_simplify_iachar): Remove use of xascii_table.
	Char values outside of 0..255 are an ICE.
	(gfc_simplify_lge): Remove use of xascii_table.
	(gfc_simplify_lgt): Likewise.
	(gfc_simplify_lle): Likewise.
	(gfc_simplify_llt): Likewise.
	(invert_table): Remove.
	(gfc_simplify_init_1): Remove.

2007-01-27  Roger Sayle  <roger@eyesopen.com>

	* trans-stmt.c (forall_info): Replace the next_nest and outer
	fields that previously implemented a doubly-linked list with a
	single prev_nest field (singly-linked list).
	(gfc_trans_nested_forall_loop): The nested_forall_info argument
	now denotes the innermost FORALL in the loop nest.
	(compute_overall_iter_number): Use prev_nest instead of next_nest.
	(gfc_trans_forall_1): Link/cons the new "info" to the head of the
	nested_forall_info linked list.  Free the current "info" when done.

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

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

2007-01-26  Steven Bosscher  <stevenb.gcc@gmail.com>
	    Steven G. Kargl <kargl@gcc.gnu.org>

	PR fortran/30278
	* fortran/io.c (next_char): Deal with backslash escaped characters.
	Issue warnings in non -std=gnu cases.
	* fortran/primary.c (next_string_char): Issue warnings in non

2007-01-26  Tobias Burnus  <burnus@net-b.de>

	* lang-specs.h: Add support for .f03 and .F03 extensions.
	* gfortran.texi: Document .f03 extension.
	* options.c (form_from_filename): Recognize .f03.

2007-01-25  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>

	PR fortran/30437
	* lang.opt (Wall): Remove RejectNegative.
	* options.c (gfc_handle_option): Wall can be disabled.
	(set_Wall): Add a parameter for disabling Wall.
	
2007-01-23  Jerry DeLisle  <jvdelisle@gcc.gnu.org>

	PR fortran/30532
	* scanner.c (load_line): Remove check fot ctrl-z and don't gobble.
	
2007-01-23  Paul Thomas  <pault@gcc.gnu.org>

	PR fortran/30481
	* match.c (gfc_match_namelist): Add check for assumed size character
	in namelist and provide error if found.

2007-01-21  Brooks Moses  <brooks.moses@codesourcery.com>

	* intrinsic.texi (ACHAR): Added cross-references.
	(CHAR): Put cross-references in alphabetical order.
	(IACHAR): Added cross-references.
	(ICHAR): Added cross-references.

2007-01-20  Brooks Moses  <brooks.moses@codesourcery.com>

	* intrinsic.texi: Edited all "Syntax" examples to a consistent form.
	(MAXVAL): Corrected description of result characteristics.
	(MINVAL): Same.
	(UMASK): Added documentation.

2007-01-20  Steven G. Kargl  <kargl@gcc.gnu.org>

	* openmp.c, matchexp.c, module.c, scanner.c, resolve.c, st.c,
	parse.c, primary.c, options.c, misc.c, simplify.c: Next installment
	in the massive whitespace patch.

2007-01-20  Roger Sayle  <roger@eyesopen.com>

	* module.c (mio_array_ref): The dimen_type fields of an array ref
	are an enumerated type and can't be read/written directly with a
	call to mio_integer.  Instead loop over and cast each element.

2007-01-20  Roger Sayle  <roger@eyesopen.com>

	* dependency.c (gfc_full_array_ref_p): Check that ref->next is NULL,
	i.e. that the ARRAY_REF doesn't mention components.
	* trans-array.c (gfc_constant_array_constructor_p): Export external
	function renamed from constant_array_constructor_p.
	(gfc_build_constant_array_constructor): Export.
	(gfc_trans_array_constructor): Update call to the renamed function
	constant_array_constructor_p.
	* trans-array.h (gfc_constant_array_constructor_p): Prototype here.
	(gfc_build_constant_array_constructor): Likewise.
	* trans-expr.c (gfc_build_memcpy_call): New helper function split
	out from gfc_trans_array_copy.
	(gfc_trans_array_copy): Use gfc_build_memcpy_call.
	(gfc_trans_array_constructor_copy): New function to optimize
	assigning an entire array from a constant array constructor.
	(gfc_trans_assignment): Call gfc_trans_array_constructor_copy
	when appropriate.

2007-01-20  Roger Sayle  <roger@eyesopen.com>

	* trans-intrinsic.c (gfc_conv_intrinsic_sign): New branchless
	implementation for the SIGN intrinsic with integral operands.
	(gfc_conv_intrinsic_minmax): Fix whitespace.

2007-01-20  Francois-Xavier Coudert  <coudert@clipper.ens.fr>

	* gfortran.h (gfc_options_t): Add flag_allow_leading_underscore.
	* lang.opt: Add -fallow-leading-underscore.
	* match.c (gfc_match_name): Allow leading underscore in symbol
	name if -fallow-leading-underscore is used.
	* symbol.c (gfc_get_default_type): Add special case for symbol
	names beginning with an underscore.
	* trans-decl.c (gfc_get_extern_function_decl,
	gfc_build_intrinsic_function_decls): Add _gfortran prefix to
	library symbols selected_int_kind, selected_real_kind and 
	all specifics.
	* options.c (gfc_init_options, gfc_handle_option): Handle the
	new -fallow-leading-underscore option.

2007-01-20  Francois-Xavier Coudert  <coudert@clipper.ens.fr>

	PR fortran/30446
	* options.c (gfc_handle_module_path_options): Path used in -J
	option is now added to the module search path.

2007-01-20  Richard Guenther  <rguenther@suse.de>

	PR fortran/30223
	* f95-lang.c (gfc_init_builtin_functions): Provide cbrt and
	cexpi builtins if we have TARGET_C99_FUNCTIONS.  Provide
	sincos builtins if the target has sincos.

2007-01-19  Brooks Moses  <brooks.moses@codesourcery.com>

	* intrinsic.texi (MATMUL): Corrected a typo.
	(MAX): Separated @var arguments.
	(MIN): Separated @var arguments.

2007-01-19  Brooks Moses  <brooks.moses@codesourcery.com>

	* intrinsic.texi: general whitespace cleanup.
	(menu): Added TIME8, removed UNMASK.
	(AINT): Clarified argument requirement.
	(ANINT): Clarified argument requirement.
	(CEILING): Clarified argument requirement.
	(CHAR): Clarified argument requirement.
	(CMPLX): Clarified argument requirement.
	(DCMPLX): Clarified argument requirement.
	(FGET): Line rewrapping.
	(FLOOR): Clarified argument requirement.
	(GMTIME): Added documentation.
	(IAND): Added cross-reference.
	(IBCLR): Added cross-reference.
	(IBSET): Added cross-reference.
	(IEOR): Added cross-reference.
	(INT): Collapsed examples, clarified argument requirement.
	(IOR): Added cross-references.
	(LEN_TRIM): Corrected result kind.
	(LINK): Added cross-reference.
	(LLT): Removed "documentation pending".
	(LOGICAL): Added documentation.
	(LSHIFT): Added documentation.
	(LTIME): Added documentation.
	(MATMUL): Added documentation.
	(MAX): Added documentation.
	(MAXLOC): Added documentation.
	(MAXVAL): Added documentation.
	(MERGE): Added documentation.
	(MIN): Added documentation.
	(MINLOC): Added documentation.
	(MINVAL): Added documentation.
	(MVBITS): Moved to correct place, added documentation.
	(NOT): Added documentation.
	(PERROR): Added documentation.
	(RAN): Moved to correct place, added documentation.
	(REAL): Clarified argument requirement.
	(RENAME): Added documentation.
	(RSHIFT): Clarified argument requirement.
	(SIGN): Corrected table specification.
	(SYMLNK): Added documentation.
	(SYSTEM): Added documentation.
	(TIME): Added documentation.
	(TIME8): Added section and documentation.
	(UNMASK): Removed erroneous section.

2007-01-18  H.J. Lu  <hongjiu.lu@intel.com>

	* trans-stmt.c (compute_overall_iter_number): Fix a typo.

2007-01-18  Roger Sayle  <roger@eyesopen.com>

	* trans-expr.c (copyable_array_p): Consider user derived types without
	allocatable components to be copyable.

2007-01-18  Roger Sayle  <roger@eyesopen.com>

	* trans-stmt.c (compute_overall_iter_number): Enhance to precompute
	the number of interations in unconditional FORALL nests with constant
	bounds.

2007-01-18  Francois-Xavier Coudert  <coudert@clipper.ens.fr>
	    Tobias Burnus  <burnus@net-b.de>

	PR libfortran/29649
	* gfortran.h (gfc_option_t): Add flag_dump_core.
	* lang.opt: Add -fdump-core option.
	* invoke.texi: Document the new options.
	* trans-decl.c (gfc_build_builtin_function_decls): Add new
	  options to the call to set_std.
	* options.c (gfc_init_options, gfc_handle_option): Set the
	  new options.

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

	PR fortran/30476
	* module.c (load_generic_interfaces): Make the marking of the
	symbol as ambiguous conditional on the module names being
	different.
	(write_generic): Ensure that the generic interface has a
	non-NULL module field.

2007-01-16  Roger Sayle  <roger@eyesopen.com>

	PR fortran/30404
	* trans-stmt.c (forall_info): Remove pmask field.
	(gfc_trans_forall_loop): Remove NVAR argument, instead assume that
	NVAR covers all the interation variables in the current forall_info.
	Add an extra OUTER parameter, which specified the loop header in
	which to place mask index initializations.
	(gfc_trans_nested_forall_loop): Remove NEST_FLAG argument.
	Change the semantics of MASK_FLAG to only control the mask in the
	innermost loop.
	(compute_overall_iter_number): Optimize the trivial case of a
	top-level loop having a constant number of iterations.  Update
	call to gfc_trans_nested_forall_loop.  Calculate the number of
	times the inner loop will be executed, not to size of the 
	iteration space.
	(allocate_temp_for_forall_nest_1): Reuse SIZE as BYTESIZE when
	sizeof(type) == 1.  Tidy up.
	(gfc_trans_assign_need_temp): Remove NEST_FLAG argument from calls
	to gfc_trans_nested_forall_loop.
	(gfc_trans_pointer_assign_need_temp): Likewise.
	(gfc_trans_forall_1): Remove unused BYTESIZE, TMPVAR, SIZEVAR and
	LENVAR local variables.  Split mask allocation into a separate
	hunk/pass from mask population.  Use allocate_temp_for_forall_nest
	to allocate the FORALL mask with the correct size.  Update calls
	to gfc_trans_nested_forall_loop.
	(gfc_evaluate_where_mask): Update call to
	gfc_trans_nested_forall_loop.
	(gfc_trans_where_2): Likewise.

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

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

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

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

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

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

	PR fortran/30410
	* trans-decl.c (gfc_sym_mangled_function_id): Module, external
	symbols must not have the module name prepended.

2007-01-11  Thomas Koenig  <Thomas.Koenig@online.de>

	PR libfortran/30415
	* iresolve.c (gfc_resolve_maxloc): If the rank
	of the return array is nonzero and we process an
	integer array smaller than default kind, coerce
	the array to default integer.
	* iresolve.c (gfc_resolve_minloc): Likewise.

2007-01-11  Brooks Moses  <brooks.moses@codesourcery.com>

	* simplify.c: Update copyright to 2007.
	* scanner.c: Same.

2007-01-11  Francois-Xavier Coudert  <coudert@clipper.ens.fr>

	PR fortran/30430
	* scanner.c (gfc_release_include_path): Free gfc_option.module_dir
	only once!

2007-01-09  Brooks Moses  <brooks.moses@codesourcery.com>

	* simplify.c (gfc_simplify_ibclr): Fix POS comparison.
	(gfc_simplify_ibset): Same.

2007-01-09  Brooks Moses  <brooks.moses@codesourcery.com>

	PR 30381
	PR 30420
	* simplify.c (convert_mpz_to_unsigned): New function.
	(convert_mpz_to_signed): New function, largely based on
	twos_complement().
	(twos_complement): Removed.
	(gfc_simplify_ibclr): Add conversions to and from an
	unsigned representation before bit-twiddling.
	(gfc_simplify_ibset): Same.
	(gfc_simplify_ishftc): Add checks for overly large
	constant arguments, only check the third argument if
	it's present, carry over high bits into	the result as
	appropriate, and perform the final conversion back to
	a signed representation using the correct sign bit.
	(gfc_simplify_not): Removed unnecessary masking.

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

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

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

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

2007-01-08  Steven G. Kargl  <kargl@gcc.gnu.org>

	* interface.c, intrinsic.c, gfortranspec.c, io.c, f95-lang.c,
	iresolve.c, match.c: Update Copyright years.  Whitespace.

2007-01-08  Richard Guenther  <rguenther@suse.de>

	* trans-io.c (transfer_array_desc): Use build_int_cst instead
	of build_int_cstu.

2007-01-08  Roger Sayle  <roger@eyesopen.com>

	* trans-array.c (constant_array_constructor_p): New function to
	determine whether an array constructor consists only of constant
	elements, and if so return it's size.
	(gfc_build_constant_array_constructor): Construct a statically
	initialized gfortran array for a given EXPR_ARRAY.
	(gfc_trans_constant_array_constructor): Efficiently scalarize
	a constant array constructor.
	(gfc_trans_array_constructor): Tidy up use of CONST_STRING.
	Special case scalarization of constant array constructors, all of
	whose elements are specified, using constant_array_constructor_p 
	and gfc_trans_constant_array_constructor.
	(gfc_conv_scalarized_array_ref): Check whetger info->offset is zero
	before adding it to index, to avoid creating a NON_LVALUE_EXPR.

2007-01-08  Kazu Hirata  <kazu@codesourcery.com>

	gfortran.texi: Fix typos.

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

	* decl.c, dump-parse-tree.c, error.c, data.c, expr.c, dependency.c,
	convert.c: Update Copyright dates.  Fix whitespace.

2007-01-07  Bernhard Fischer  <aldot@gcc.gnu.org>

	* data.c (gfc_assign_data_value): Fix whitespace.

2007-01-07  Bernhard Fischer  <aldot@gcc.gnu.org>

	* trans-array.c (gfc_trans_create_temp_array, gfc_array_init_size):
	Commentary typo fix.

2007-01-07  Bernhard Fischer  <aldot@gcc.gnu.org>

	PR fortran/27698
	* match.c (gfc_match_name): Print diagnostics for invalid
	character in names.

2007-01-06  Steven G. Kargl  <kargl@gcc.gnu.org>

	* array.c: Fix whitespace in comment table.

2007-01-06  Steven G. Kargl  <kargl@gcc.gnu.org>

	* array.c, bbt.c, check.c: Update copyright years.  Whitespace.

2007-01-06  Steven G. Kargl  <kargl@gcc.gnu.org>

	* arith.c: Update copyright years.  Whitespace.

2007-01-05  Roger Sayle  <roger@eyesopen.com>

	* trans-expr.c (gfc_trans_assignment_1): New subroutine to scalarize
	array assignments split out from gfc_trans_assignment.
	(gfc_trans_array_copy): New function to implement array to array
	copies via calls to __builtin_memcpy.
	(copyable_array_p): New helper function to identify an array of
	simple/POD types, that may be copied/assigned using memcpy.
	(gfc_trans_assignment): Use gfc_trans_array_copy to handle simple
	whole array assignments considered suitable by copyable_array_p.
	Invoke gfc_trans_assignment_1 to perform the fallback scalarization.

2007-01-05  Roger Sayle  <roger@eyesopen.com>

	* trans-array.c (gfc_trans_array_constructor_value): Make the
	static const "data" array as TREE_READONLY.
	* trans-stmt.c (gfc_trans_character_select): Likewise.

2007-01-05  Roger Sayle  <roger@eyesopen.com>

	* trans-array.c (gfc_conv_loop_setup): Test whether the loop
	stride is one, to avoid fold_build2 introducing a useless
	NON_LVALUE_EXPR node.

2007-01-05  Tobias Burnus  <burnus@net-b.de>

	* symbol.c (check_conflict): Fix error message.

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

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

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

2007-01-05  Tobias Burnus  <burnus@net-b.de>

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

2007-01-03  Brooks Moses  <brooks.moses@codesourcery.com>

	PR 30371
	* check.c (gfc_check_kill_sub): Add checks for non-scalar
	arguments.

2007-01-04  Brooks Moses  <brooks.moses@codesourcery.com>

	* intrinsic.texi: Minor cleanup, reflowing overlong
	paragraphs, and correcting whitespace.

2007-01-04  Brooks Moses  <brooks.moses@codesourcery.com>

	* intrinsic.texi (LBOUND): Add documentation.
	(LGE): Add documentation.
	(LGT): Add documentation.
	(LINK): Add documentation.
	(LLE): Add documentation.
	(LLT): Add documentation.
	(LNBLNK): Add documentation.
	(UBOUND): Add documentation.
	(UNLINK): Add documentation.

2007-01-04  Brooks Moses  <brooks.moses@codesourcery.com>

	* intrinsic.texi (IAND): Clarify argument specifications.
	(IBCLR): Add documentation.
	(IBITS): Add documentation.
	(IBSET): Add documentation.
	(IEOR): Add documentation.
	(IERRNO): Add documentation.
	(INDEX): Add documentation.
	(IOR): Add documentation.
	(ISHFT): Add documentation.
	(ISHFTC): Add documentation.
	(KILL): Add documentation.
	(LEN_TRIM): Add documentation.

2007-01-04  Brooks Moses  <brooks.moses@codesourcery.com>

	PR 30235
	* interface.c (compare_actual_formal): check for
	alternate returns when iterating over non-present
	arguments.

2007-01-04  Brooks Moses  <brooks.moses@codesourcery.com>

	* invoke.texi: Update manpage copyright to include 2007.

2007-01-04  Brooks Moses  <brooks.moses@codesourcery.com>

	* gfortran.texi: Update copyright to include 2007.
	* intrinsic.texi: Update copyright to include 2007.
	* invoke.texi: Update copyright to include 2007.

2007-01-02  Tobias Burnus  <burnus@net-b.de>
	    Jakub Jelinek  <jakub@redhat.com>

	PR fortran/30276
	* scanner.c (open_included_file): Revert patch.
	  (gfc_open_included_file): Support absolute pathnames.
	  (gfc_open_intrinsic_module): Support absolute pathnames.

2007-01-03  Brooks Moses  <brooks.moses@codesourcery.com>

	* gfortran.texi (GNU Fortran and GCC): Rewrite

2007-01-03  Brooks Moses  <brooks.moses@codesourcery.com>

	* gfortran.texi (Introduction): Lower "Part I:
	Introduction" to a chapter, renumber Parts II and III to
	Parts I and II.
	* intrinsic.texi (Introduction): Rename to "Introduction
	to Intrinsics" to avoid conflict with the new chapter.

2007-01-03  Brooks Moses  <brooks.moses@codesourcery.com>

	* intrinsic.texi (Introduction): Rewrite first paragraph.

2007-01-03  Brooks Moses  <brooks.moses@codesourcery.com>

	* invoke.texi (OpenMP): Added index entry.
	* gfortran.texi (title page): Removed erroneous '*'.

2007-01-03  Brooks Moses  <brooks.moses@codesourcery.com>

	* gfortran.texi (GFORTRAN_DEFAULT_RECL): Added units
	to description.
	(Extensions): Miscellaneous minor rewriting and copyediting.
	(BOZ-literal constants): Renamed from Hexadecimal constants.
	(Hollerith constants support): Added explanation and 
	suggestions for standard-conforming modern equivalents.

2007-01-03  Brooks Moses  <brooks.moses@codesourcery.com>

	* intrinsic.texi: Improvements to index entries; change
	@findex entries to @cindex entries.
	* invoke.texi: Standardize and improve index entries.
	* gfortran.texi: Fix @code in one index entry.

2007-01-03  Brooks Moses  <brooks.moses@codesourcery.com>

	* invoke.texi: Change @code-type macros to appropriate
	variants (@command, @option, etc.)
	* gfortran.texi: Same.

2007-01-03  Brooks Moses  <brooks.moses@codesourcery.com>

	* intrinsic.texi: Various minor cleanups.

2007-01-02  Steven G. Kargl  <kargls@comcast.net>

	* trans-intrinsic.c (gfc_conv_intrinsic_ibits): Fix call to
	build_int_cst.

2007-01-02  Tobias Burnus  <burnus@net-b.de>

	PR fortran/30276
	* scanner.c (open_included_file): Support full-path filenames.

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

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

2007-01-01  Steven G. Kargl  <kargls@comcast.net>

	* ChangeLog: Copy to ...
	* ChangeLog-2006: here.


Copyright (C) 2007 Free Software Foundation, Inc.

Copying and distribution of this file, with or without modification,
are permitted in any medium without royalty provided the copyright
notice and this notice are preserved.
