2020-12-29  Paul Thomas  <pault@gcc.gnu.org>

	PR fortran/97612
	* primary.c (build_actual_constructor): Missing allocatable
	components are set unallocated using EXPR_NULL. Then missing
	components are tested for a default initializer.

2020-12-29  Paul Thomas  <pault@gcc.gnu.org>

	PR fortran/93833
	* trans-array.c (get_array_ctor_var_strlen): If the character
	length backend_decl cannot be found, convert the expression and
	use the string length. Clear up some minor white space issues
	in the rest of the file.

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

	PR fortran/97694
	PR fortran/97723
	* check.c (allocatable_check): Select rank temporaries are
	permitted even though they are treated as associate variables.
	* resolve.c (gfc_resolve_code): Break on select rank as well as
	select type so that the block os resolved.
	* trans-stmt.c (trans_associate_var): Class associate variables
	that are optional dummies must use the backend_decl.

2020-12-26  Paul Thomas  <pault@gcc.gnu.org>

	PR fortran/98022
	* data.c (gfc_assign_data_value): Throw an error for inquiry
	references. Follow with corrected code that would provide the
	expected result and provides clean error recovery.

2020-12-26  Paul Thomas  <pault@gcc.gnu.org>

	PR fortran/83118
	* trans-array.c (gfc_alloc_allocatable_for_assignment): Make
	sure that class expressions are captured for dummy arguments by
	use of gfc_get_class_from_gfc_expr otherwise the wrong vptr is
	used.
	* trans-expr.c (gfc_get_class_from_gfc_expr): New function.
	(gfc_get_class_from_expr): If a constant expression is
	encountered, return NULL_TREE;
	(gfc_trans_assignment_1): Deallocate rhs allocatable components
	after passing derived type function results to class lhs.
	* trans.h : Add prototype for gfc_get_class_from_gfc_expr.

2020-12-25  Harald Anlauf  <anlauf@gmx.de>

	* data.c (gfc_assign_data_value): Restrict use of
	create_character_initializer to constant initializers.
	* trans-expr.c (gfc_conv_initializer): Ensure that character
	initializer is constant, otherwise fall through to get the same
	error handling as for non-character cases.

2020-12-20  Thomas Koenig  <tkoenig@gcc.gnu.org>

	* trans.c (create_var_debug_raw): Set DECL_ARTIFICIAL
	on variables.

2020-12-18  Paul Thomas  <pault@gcc.gnu.org>

	PR fortran/83118
	PR fortran/96012
	* resolve.c (resolve_ordinary_assign): Generate a vtable if
	necessary for scalar non-polymorphic rhs's to unlimited lhs's.
	* trans-array.c (get_class_info_from_ss): New function.
	(gfc_trans_allocate_array_storage): Defer obtaining class
	element type until all sources of class exprs are tried. Use
	class API rather than TREE_OPERAND. Look for class expressions
	in ss->info by calling get_class_info_from_ss. After, obtain
	the element size for class descriptors. Where the element type
	is unknown, cast the data as character(len=size) to overcome
	unlimited polymorphic problems.
	(gfc_conv_ss_descriptor): Do not fix class variable refs.
	(build_class_array_ref, structure_alloc_comps): Replace code
	replicating the new function gfc_resize_class_size_with_len.
	(gfc_alloc_allocatable_for_assignment): Obtain element size
	for lhs in cases of deferred characters and class enitities.
	Move code for the element size of rhs to start of block. Clean
	up extraction of class parameters throughout this function.
	After the shape check test whether or not the lhs and rhs
	element sizes are the same. Use earlier evaluation of
	'cond_null'. Reallocation of lhs only to happen if size changes
	or element size changes.
	* trans-expr.c (gfc_resize_class_size_with_len): New function.
	(gfc_get_class_from_expr): If a constant expression is
	encountered, return NULL_TREE;
	(trans_scalar_class_assign): New function.
	(gfc_conv_procedure_call): Ensure the vtable is present for
	passing a non-class actual to an unlimited formal.
	(trans_class_vptr_len_assignment): For expressions of type
	BT_CLASS, extract the class expression if necessary. Use a
	statement block outside the loop body. Ensure that 'rhs' is
	of the correct type. Obtain rhs vptr in all circumstances.
	(gfc_trans_scalar_assign): Call trans_scalar_class_assign to
	make maximum use of the vptr copy in place of assignment.
	(trans_class_assignment): Actually do reallocation if needed.
	(gfc_trans_assignment_1): Simplify some of the logic with
	'realloc_flag'. Set 'vptr_copy' for all array assignments to
	unlimited polymorphic lhs.
	* trans.c (gfc_build_array_ref): Call gfc_resize_class_size_
	with_len to correct span for unlimited polymorphic decls.
	* trans.h : Add prototype for gfc_resize_class_size_with_len.

2020-12-17  Tobias Burnus  <tobias@codesourcery.com>

	PR fortran/92587
	* match.c (gfc_match_assignment): Move gfc_find_vtab call from here ...
	* resolve.c (gfc_resolve_code): ... to here.

2020-12-17  Harald Anlauf  <anlauf@gmx.de>

	PR fortran/98307
	* trans-stmt.c (check_forall_dependencies): Extend dependency
	check to allocatable components of derived types.

2020-12-16  Harald Anlauf  <anlauf@gmx.de>

	PR fortran/98284
	* resolve.c (check_data_variable): Reject DATA elements with the
	ALLOCATABLE attribute.

2020-12-15  Thomas Koenig  <tkoenig@gcc.gnu.org>

	PR fortran/90207
	* invoke.texi: Document -fdebug-aux-vars.
	* lang.opt: Add -fdebug-aux-vars.
	* trans.c (MAX_PREFIX_LEN): New macro.
	(create_var_debug_raw): New function.
	(gfc_create_var_np): Call create_var_debug_raw if
	flag_debug_aux_vars is set.

2020-12-13  Thomas Koenig  <tkoenig@gcc.gnu.org>

	* dump-parse-tree.c (show_array_ref): Also show coarrays.
	(debug): Implement for array reference.

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

	PR fortran/98022
	* data.c (gfc_assign_data_value): Handle inquiry references in
	the data statement object list.

2020-12-08  Tobias Burnus  <tobias@codesourcery.com>

	* dump-parse-tree.c (show_omp_clauses, show_omp_node,
	show_code_node): Handle OMP SCAN.
	* gfortran.h (enum gfc_statement): Add ST_OMP_SCAN.
	(enum): Add OMP_LIST_SCAN_IN and OMP_LIST_SCAN_EX.
	(enum gfc_exec_op): Add EXEC_OMP_SCAN.
	* match.h (gfc_match_omp_scan): New prototype.
	* openmp.c (gfc_match_omp_scan): New.
	(gfc_match_omp_taskgroup): Cleanup.
	(resolve_omp_clauses, gfc_resolve_omp_do_blocks,
	omp_code_to_statement, gfc_resolve_omp_directive): Handle 'omp scan'.
	* parse.c (decode_omp_directive, next_statement,
	gfc_ascii_statement): Likewise.
	* resolve.c (gfc_resolve_code): Handle EXEC_OMP_SCAN.
	* st.c (gfc_free_statement): Likewise.
	* trans-openmp.c (gfc_trans_omp_clauses, gfc_trans_omp_do,
	gfc_split_omp_clauses): Handle 'omp scan'.

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

	PR fortran/98016
	* resolve.c (resolve_symbol): Set formal_arg_flag before
	resolving an array spec and restore value afterwards.

2020-12-03  Harald Anlauf  <anlauf@gmx.de>

	PR fortran/95342
	* decl.c (gfc_match_function_decl): Avoid NULL pointer dereference.
	(gfc_match_subroutine): Likewise.

2020-11-30  Tobias Burnus  <tobias@codesourcery.com>

	PR fortran/98011
	* scanner.c (skip_free_comments, skip_fixed_comments): If only
	-fopenacc but not -fopenmp is used, ignore OpenMP's conditional
	compilation sentinels. Fix indentation, use 'else if' for readability.

2020-11-30  Tobias Burnus  <tobias@codesourcery.com>

	PR fortran/98010
	PR fortran/98013
	* options.c (gfc_post_options): Also imply recursive with
	-fopenacc.
	* trans-decl.c (gfc_generate_function_code): Simplify condition.

2020-11-30  Tobias Burnus  <tobias@codesourcery.com>

	* dump-parse-tree.c (show_expr): Use '==' not '=' for '.eq.'.

2020-11-29  Harald Anlauf  <anlauf@gmx.de>

	* expr.c (simplify_parameter_variable): Fix up character length
	after copying an array-valued expression.

2020-11-28  Thomas Koenig  <tkoenig@gcc.gnu.org>

	PR fortran/97454
	* trans-decl.c (gfc_get_extern_function_decl): Add argument
	fnspec.
	* trans-intrinsic.c (MAX_SPEC_ARG): Define.
	(intrinsic_fnspec): New function.
	(ADD_CHAR): Define.
	(specific_intrinsic_symbol): Adjust comment. Pass
	fn spec to gfc_get_extern_function_decl.
	(gfc_conv_intrinsic_funcall): Add ANY, ALL, NORM2, PRODUCT
	and SUM intrnisic. Add FIXME for cshift et al.
	* trans-types.c	(gfc_get_function_type): Add fnspec argument,
	handle it.
	* trans-types.h (gfc_get_function_type): Add optinal fnspec
	argument.
	* trans.h (gfc_get_extern_function_decl): Likewise.

2020-11-25  Harald Anlauf  <anlauf@gmx.de>

	PR fortran/85796
	* resolve.c (traverse_data_list): Fix copy&paste errors; catch
	step=0 in implied do loop.

2020-11-20  Jakub Jelinek  <jakub@redhat.com>

	PR other/97911
	* Make-lang.in (fortran.serial): Change from goal to a variable.
	(.PHONY): Drop fortran.serial and fortran.prev.
	(f951$(exeext)): Depend on $(fortran.serial) rather than
	fortran.serial.

2020-11-18  Jakub Jelinek  <jakub@redhat.com>

	* Make-lang.in (fortran.serial): New goal.
	(.PHONY): Add fortran.serial fortran.prev.
	(f951$(exeext)): Depend on fortran.prev.  Call LINK_PROGRESS.

2020-11-17  Harald Anlauf  <anlauf@gmx.de>

	* gfortran.texi: Fix description of GFC_RTCHECK_* to match actual
	code.

2020-11-16  Harald Anlauf  <anlauf@gmx.de>

	* trans-intrinsic.c (gfc_conv_intrinsic_size): Generate runtime
	checking code for status of argument.

2020-11-13  Gergö Barany  <gergo@codesourcery.com>
	    Thomas Schwinge  <thomas@codesourcery.com>

	* lang.opt (fopenacc-kernels): Add.

2020-11-12  Jakub Jelinek  <jakub@redhat.com>

	* f95-lang.c (ATTR_ALLOC_WARN_UNUSED_RESULT_SIZE_2_NOTHROW_LIST):
	Define.
	(gfc_init_builtin_functions): Add alloc_size and warn_unused_result
	attributes to __builtin_GOMP_alloc.
	* types.def (BT_PTRMODE): New primitive type.
	(BT_FN_VOID_PTR_PTRMODE, BT_FN_PTR_SIZE_SIZE_PTRMODE): New function
	types.

2020-11-12  Tobias Burnus  <tobias@codesourcery.com>

	PR fortran/97782
	* trans-openmp.c (gfc_trans_oacc_construct, gfc_trans_omp_parallel_do,
	gfc_trans_omp_parallel_do_simd, gfc_trans_omp_parallel_sections,
	gfc_trans_omp_parallel_workshare, gfc_trans_omp_sections
	gfc_trans_omp_single, gfc_trans_omp_task, gfc_trans_omp_teams
	gfc_trans_omp_target, gfc_trans_omp_target_data,
	gfc_trans_omp_workshare): Use code->loc instead of input_location
	when building the OMP_/OACC_ construct.

2020-11-11  Jakub Jelinek  <jakub@redhat.com>

	PR fortran/97768
	* misc.c (gfc_typename): Use ex->value.character.length only if
	ex->expr_type == EXPR_CONSTANT.  If ex->ts.deferred, print : instead
	of length.  If ex->ts.u.cl && ex->ts.u.cl->length == NULL, print *
	instead of length.  Otherwise if character length is non-constant,
	print just CHARACTER or CHARACTER(KIND=N).

2020-11-10  Tobias Burnus  <tobias@codesourcery.com>

	* dump-parse-tree.c (show_omp_clauses): Handle new reduction enums.
	* gfortran.h (OMP_LIST_REDUCTION_INSCAN, OMP_LIST_REDUCTION_TASK,
	OMP_LIST_IN_REDUCTION, OMP_LIST_TASK_REDUCTION): Add enums.
	* openmp.c (enum omp_mask1): Add OMP_CLAUSE_IN_REDUCTION
	and OMP_CLAUSE_TASK_REDUCTION.
	(gfc_match_omp_clause_reduction): Extend reduction handling;
	moved from ...
	(gfc_match_omp_clauses): ... here. Add calls to it.
	(OMP_TASK_CLAUSES, OMP_TARGET_CLAUSES, OMP_TASKLOOP_CLAUSES):
	Add OMP_CLAUSE_IN_REDUCTION.
	(gfc_match_omp_taskgroup): Add task_reduction matching.
	(resolve_omp_clauses): Update for new reduction clause changes;
	remove removed nonmonotonic-schedule restrictions.
	(gfc_resolve_omp_parallel_blocks): Add new enums to switch.
	* trans-openmp.c (gfc_omp_clause_default_ctor,
	gfc_trans_omp_reduction_list, gfc_trans_omp_clauses,
	gfc_split_omp_clauses): Handle updated reduction clause.

2020-11-10  Tobias Burnus  <tobias@codesourcery.com>

	PR fortran/95847
	* trans-decl.c (gfc_get_symbol_decl): Do not (re)set the location
	of an external procedure.
	(build_entry_thunks, generate_coarray_init, create_main_function,
	gfc_generate_function_code): Use fndecl's location in BIND_EXPR.

2020-11-09  Tobias Burnus  <tobias@codesourcery.com>

	PR fortran/90111
	* parse.c (case_decl): Move ST_OACC_ROUTINE and ST_OACC_DECLARE to ...
	(case_omp_decl): ... here.
	(verify_st_order): Update comment.

2020-11-06  Thomas Schwinge  <thomas@codesourcery.com>

	* openmp.c (oacc_is_parallel, resolve_oacc_params_in_parallel):
	Remove.
	(resolve_oacc_loop_blocks): Don't call the former.

2020-11-06  Tobias Burnus  <tobias@codesourcery.com>

	* openmp.c (gfc_match_oacc_atomic): No longer accept 'update capture'.

2020-11-06  Tobias Burnus  <tobias@codesourcery.com>

	PR fortran/97652
	* module.c (mio_symbol): Fix symbol name for pdt_type.

2020-11-03  Nathan Sidwell  <nathan@acm.org>

	* cpp.c (gfc_cpp_add_dep): Only add dependency if we're recording
	them.
	(gfc_cpp_init): Likewise for target.

2020-11-03  Tobias Burnus  <tobias@codesourcery.com>

	* decl.c (ext_attr_list): Add EXT_ATTR_DEPRECATED.
	* gfortran.h (ext_attr_id_t): Ditto.
	* gfortran.texi (GCC$ ATTRIBUTES): Document it.
	* resolve.c (resolve_variable, resolve_function,
	resolve_call, resolve_values): Show -Wdeprecated-declarations warning.
	* trans-decl.c (add_attributes_to_decl): Skip those
	with no middle_end_name.

2020-11-03  Thomas Schwinge  <thomas@codesourcery.com>

	PR fortran/92793
	* trans-openmp.c (gfc_trans_omp_clauses): More precise location
	information for OpenACC 'gang', 'worker', 'vector' clauses with
	argument.

2020-11-02  Thomas Schwinge  <thomas@codesourcery.com>

	PR fortran/92793
	* trans.c (gfc_set_backend_locus): Use 'gfc_get_location'.
	(gfc_restore_backend_locus): Adjust.

2020-11-02  Tobias Burnus  <tobias@codesourcery.com>

	PR fortran/97655
	* openmp.c (gfc_match_omp_atomic): Fix mem-order handling;
	reject specifying update + capture together.

2020-10-30  Tobias Burnus  <tobias@codesourcery.com>

	* dump-parse-tree.c (show_omp_clauses): Handle atomic clauses.
	(show_omp_node): Call it for atomic.
	* gfortran.h (enum gfc_omp_atomic_op): Add GFC_OMP_ATOMIC_UNSET,
	remove GFC_OMP_ATOMIC_SEQ_CST and GFC_OMP_ATOMIC_ACQ_REL.
	(enum gfc_omp_memorder): Replace OMP_MEMORDER_LAST by
	OMP_MEMORDER_UNSET, add OMP_MEMORDER_SEQ_CST/OMP_MEMORDER_RELAXED.
	(gfc_omp_clauses): Add capture and atomic_op.
	(gfc_code): remove omp_atomic.
	* openmp.c (enum omp_mask1): Add atomic, capture, memorder clauses.
	(gfc_match_omp_clauses): Match them.
	(OMP_ATOMIC_CLAUSES): Add.
	(gfc_match_omp_flush): Update for 'last' to 'unset' change.
	(gfc_match_omp_oacc_atomic): Removed and placed content ..
	(gfc_match_omp_atomic): ... here. Update for OpenMP 5 clauses.
	(gfc_match_oacc_atomic): Match directly here.
	(resolve_omp_atomic, gfc_resolve_omp_directive): Update.
	* parse.c (parse_omp_oacc_atomic): Update for struct gfc_code changes.
	* resolve.c (gfc_resolve_blocks): Update assert.
	* st.c (gfc_free_statement): Also call for EXEC_O{ACC,MP}_ATOMIC.
	* trans-openmp.c (gfc_trans_omp_atomic): Update.
	(gfc_trans_omp_flush): Update for 'last' to 'unset' change.

2020-10-30  Jan Hubicka  <jh@suse.cz>

	* trans-types.c: Include alias.h
	(gfc_get_array_type_bounds): Set typeless storage.

2020-10-27  Harald Anlauf  <anlauf@gmx.de>

	* resolve.c (gfc_impure_variable): A dummy argument with the VALUE
	attribute may be redefined without making a procedure impure.

2020-10-27  Richard Biener  <rguenther@suse.de>

	* trans-array.c (gfc_get_descriptor_field): New helper.
	(gfc_conv_descriptor_data_get): Use it - drop strange
	REFERENCE_TYPE handling and make sure we don't trigger it.
	(gfc_conv_descriptor_data_addr): Use gfc_get_descriptor_field.
	(gfc_conv_descriptor_data_set): Likewise.
	(gfc_conv_descriptor_offset): Likewise.
	(gfc_conv_descriptor_dtype): Likewise.
	(gfc_conv_descriptor_span): Likewise.
	(gfc_get_descriptor_dimension): Likewise.
	(gfc_conv_descriptor_token): Likewise.
	(gfc_conv_descriptor_subfield): New helper.
	(gfc_conv_descriptor_stride): Use it.
	(gfc_conv_descriptor_lbound): Likewise.
	(gfc_conv_descriptor_ubound): Likewise.

2020-10-25  Thomas Koenig  <tkoenig@gcc.gnu.org>

	PR fortran/97454
	* gfortran.h (gfc_symbol): Add pass_as_value flag.
	(gfc_copy_formal_args_intr): Add optional argument
	copy_type.
	(gfc_get_intrinsic_function_symbol): Add prototype.
	(gfc_find_intrinsic_symbol): Add prototype.
	* intrinsic.c (gfc_get_intrinsic_function_symbol): New function.
	(gfc_find_intrinsic_symbol): New function.
	* symbol.c (gfc_copy_formal_args_intr): Add argument. Handle case
	where the type needs to be copied from the actual argument.
	* trans-intrinsic.c (remove_empty_actual_arguments): New function.
	(specific_intrinsic_symbol): New function.
	(gfc_conv_intrinsic_funcall): Use it.
	(strip_kind_from_actual): Adjust so that the expression pointer
	is set to NULL.
	(gfc_conv_intrinsic_minmaxloc): Likewise.
	(gfc_conv_intrinsic_minmaxval): Adjust removal of dim.
	* trans-types.c (gfc_sym_type): If sym->pass_as_value is set, do
	not pass by reference.

2020-10-22  Tobias Burnus  <tobias@codesourcery.com>

	* gfortran.h (enum gfc_omp_memorder): Add.
	(gfc_omp_clauses): Use it.
	* openmp.c (gfc_match_omp_flush): Match memorder clauses.
	* trans-openmp.c (gfc_trans_omp_flush): Handle them.
	(gfc_trans_omp_directive): Update call.

2020-10-21  Tobias Burnus  <tobias@codesourcery.com>

	PR fortran/45516
	* class.c: Add _deallocate to the vtable documentation
	comment.

2020-10-16  Harald Anlauf  <anlauf@gmx.de>

	PR fortran/95979
	* expr.c (gfc_check_init_expr): Fix check of return code from
	gfc_intrinsic_func_interface.
	* intrinsic.c (gfc_intrinsic_func_interface): Add further attempt
	of simplification of elemental intrinsics with array arguments.
	* iresolve.c (gfc_resolve_index_func): Keep optional KIND argument
	for simplification of elemental use of INDEX.

2020-10-15  Andre Vehreschild  <vehre@gcc.gnu.org>

	* trans-decl.c (gfc_build_builtin_function_decls): Fix the coarray fndecls.

2020-10-14  Tobias Burnus  <tobias@codesourcery.com>

	PR fortran/97390
	* scanner.c (load_line): Fix line-truncation warning for !$acc
	and !gcc$ in free-form source code.

2020-10-14  Steven G. Kargl  <kargl@gcc.gnu.org>
	    Mark Eggleston  <markeggleston@gcc.gnu.org>

	PR fortran/95614
	* decl.c (gfc_get_common): Use gfc_match_common_name instead
	of match_common_name.
	* decl.c (gfc_bind_idents): Use gfc_match_common_name instead
	of match_common_name.
	* match.c : Rename match_common_name to gfc_match_common_name.
	* match.c (gfc_match_common): Use gfc_match_common_name instead
	of match_common_name.
	* match.h : Rename match_common_name to gfc_match_common_name.
	* resolve.c (resolve_common_vars): Check each symbol in a
	common block has a global symbol.  If there is a global symbol
	issue an error if the symbol type is a module or a program.

2020-10-12  Mark Eggleston  <markeggleston@gcc.gnu.org>

	PR fortran/96099
	* decl.c (gfc_match_implicit): Check for numeric and logical
	types.

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

	PR fortran/47469
	* trans-expr.c (arrayfunc_assign_needs_temporary): Tidy detection
	of pointer and allocatable functions.

2020-10-04  Harald Anlauf  <anlauf@gmx.de>

	PR fortran/97272
	* trans-intrinsic.c (strip_kind_from_actual): Helper function for
	removal of KIND argument.
	(gfc_conv_intrinsic_minmaxloc): Ignore KIND argument here, as it
	is treated elsewhere.

2020-10-02  Jan Hubicka  <hubicka@ucw.cz>

	* trans-decl.c (gfc_build_library_function_decl_with_spec): Verify
	fnspec.
	(gfc_build_intrinsic_function_decls): Update fnspecs.
	(gfc_build_builtin_function_decls): Update fnspecs.
	* trans-io.c (gfc_build_io_library_fndecls): Update fnspecs.
	* trans-types.c (create_fn_spec): Update fnspecs.

2020-09-30  Jan Hubicka  <jh@suse.cz>

	* trans-decl.c (gfc_build_intrinsic_function_decls): Add traling dots
	to spec strings so they match the number of parameters; do not use
	R and W for non-pointer parameters. Drop pointless specifier on
	caf_stop_numeric and caf_get_team.

2020-09-30  Jan Hubicka  <hubicka@ucw.cz>

	* trans-io.c (gfc_build_io_library_fndecls): Add trailing dots so
	length of spec string matches number of arguments.

2020-09-30  Tobias Burnus  <tobias@codesourcery.com>

	PR fortran/97242
	* expr.c (gfc_is_not_contiguous): Fix check.
	(gfc_check_pointer_assign): Use it.

2020-09-30  Paul Thomas  <pault@gcc.gnu.org>

	PR fortran/97045
	* trans-array.c (gfc_conv_array_ref): Make sure that the class
	decl is passed to build_array_ref in the case of unlimited
	polymorphic entities.
	* trans-expr.c (gfc_conv_derived_to_class): Ensure that array
	refs do not preceed the _len component. Free the _len expr.
	* trans-stmt.c (trans_associate_var): Reset 'need_len_assign'
	for polymorphic scalars.
	* trans.c (gfc_build_array_ref): When the vptr size is used for
	span, multiply by the _len field of unlimited polymorphic
	entities, when non-zero.

2020-09-30  Tom de Vries  <tdevries@suse.de>

	* f95-lang.c (gfc_init_builtin_functions):  Update
	targetm.libc_has_function call.

2020-09-28  Mark Eggleston  <markeggleston@gcc.gnu.org>

	Revert:
	2020-09-27  Steven G. Kargl  <kargl@gcc.gnu.org>
		    Mark Eggleston  <markeggleston@gcc.gnu.org>

	PR fortran/95614
	* decl.c (gfc_get_common): Use gfc_match_common_name instead
	of match_common_name.
	* decl.c (gfc_bind_idents): Use gfc_match_common_name instead
	of match_common_name.
	* match.c : Rename match_common_name to gfc_match_common_name.
	* match.c (gfc_match_common): Use gfc_match_common_name instead
	of match_common_name.
	* match.h : Rename match_common_name to gfc_match_common_name.
	* resolve.c (resolve_common_vars): Check each symbol in a
	common block has a global symbol.  If there is a global symbol
	issue an error if the symbol type is known as is not a common
	block name.

2020-09-27  Steven G. Kargl  <kargl@gcc.gnu.org>
	    Mark Eggleston  <markeggleston@gcc.gnu.org>

	PR fortran/95614
	* decl.c (gfc_get_common): Use gfc_match_common_name instead
	of match_common_name.
	* decl.c (gfc_bind_idents): Use gfc_match_common_name instead
	of match_common_name.
	* match.c : Rename match_common_name to gfc_match_common_name.
	* match.c (gfc_match_common): Use gfc_match_common_name instead
	of match_common_name.
	* match.h : Rename match_common_name to gfc_match_common_name.
	* resolve.c (resolve_common_vars): Check each symbol in a
	common block has a global symbol.  If there is a global symbol
	issue an error if the symbol type is known as is not a common
	block name.

2020-09-24  Paul Thomas  <pault@gcc.gnu.org>

	PR fortran/96495
	* trans-expr.c (gfc_conv_procedure_call): Take the deallocation
	of allocatable result components of a scalar result outside the
	scalarization loop. Find and use the stored result.

2020-09-21  Harald Anlauf  <anlauf@gmx.de>
	    Paul Thomas   <pault@gcc.gnu.org>

	* iresolve.c (gfc_resolve_mvbits): Remove unneeded conversion of
	FROMPOS, LEN and TOPOS arguments to fit a C int.
	* trans-intrinsic.c (gfc_conv_intrinsic_mvbits): Add inline
	expansion of MVBITS intrinsic elemental subroutine and add code
	for runtime argument checking.
	(gfc_conv_intrinsic_subroutine): Recognise MVBITS intrinsic, but
	defer handling to gfc_trans_call.
	* trans-stmt.c (replace_ss):
	(gfc_trans_call): Adjust to handle inline expansion, scalarization
	of intrinsic subroutine MVBITS in gfc_conv_intrinsic_mvbits.
	* trans.h (gfc_conv_intrinsic_mvbits): Add prototype for
	gfc_conv_intrinsic_mvbits.

2020-09-19  Sandra Loosemore  <sandra@codesourcery.com>

	* interface.c (gfc_compare_actual_formal): Add assertion after
	main processing loop to silence maybe-uninitialized error.

2020-09-19  Harald Anlauf  <anlauf@gmx.de>

	* symbol.c (gfc_check_conflict): Allow ELEMENTAL RECURSIVE
	procedure prefix for -std=f2018.

2020-09-17  Tobias Burnus  <tobias@codesourcery.com>

	PR fortran/96041
	PR fortran/93423
	* decl.c (gfc_match_submod_proc): Avoid later double-free
	in the error case.

2020-09-16  Tobias Burnus  <tobias@codesourcery.com>

	PR fortran/97061
	* trans-openmp.c (gfc_trans_omp_do): Handle simd with (last)private.

2020-09-15  Tobias Burnus  <tobias@codesourcery.com>

	PR fortran/96668
	* trans.h (gfc_omp_finish_clause): Add bool openacc arg.
	* trans-openmp.c (gfc_omp_finish_clause): Ditto. Use
	GOMP_MAP_ALWAYS_POINTER with PSET for pointers.
	(gfc_trans_omp_clauses): Like the latter and also if the always
	modifier is used.

2020-09-09  Tobias Burnus  <tobias@codesourcery.com>

	PR fortran/95109
	PR fortran/94690
	* resolve.c (gfc_resolve_code): Also call
	gfc_resolve_omp_parallel_blocks for 'distribute parallel do (simd)'.
	* openmp.c (gfc_resolve_omp_parallel_blocks): Handle it.
	(gfc_resolve_do_iterator): Remove special code for SIMD, which is
	not needed.
	* trans-openmp.c (gfc_trans_omp_target): For TARGET_PARALLEL_DO_SIMD,
	call simd not do processing function.

2020-09-08  Thomas Koenig  <tkoenig@gcc.gnu.org>

	* intrinsic.texi: Fix description of FINDLOC result.

2020-09-07  Harald Anlauf  <anlauf@gmx.de>

	* trans-intrinsic.c (build_round_expr): Use temporary with
	appropriate kind for conversion before rounding to nearest
	integer when the result precision is 128 bits.

2020-09-07  Tobias Burnus  <tobias@codesourcery.com>

	PR fortran/96896
	* resolve.c (get_temp_from_expr): Also reset proc_pointer +
	use_assoc attribute.
	(resolve_ptr_fcn_assign): Use information from the LHS.

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

	* trans-types.c (gfc_get_derived_type): Fix argument types.

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

	* resolve.c (resolve_select_type): Provide a formal arg list.

2020-09-06  Francois-Xavier Coudert  <fxcoudert@gcc.gnu.org>

	* trans-types.c (gfc_get_ppc_type): Add comment.

2020-09-06  Francois-Xavier Coudert  <fxcoudert@gcc.gnu.org>

	* trans-types.c (gfc_get_ppc_type): Fix function arg types.

2020-09-06  Francois-Xavier Coudert  <fxcoudert@gcc.gnu.org>

	PR fortran/96947
	* trans-stmt.c (gfc_trans_fail_image): caf_fail_image
	expects no argument.

2020-09-02  Jakub Jelinek  <jakub@redhat.com>

	PR fortran/96859
	* check.c (gfc_boz2real, gfc_boz2int): When clearing first two bits,
	change also '2' to '0' and '3' to '1' rather than just handling '4'
	through '7'.

2020-09-01  Steven G. Kargl  <kargl@gcc.gnu.org>
	    Mark Eggleston  <markeggleston@gcc.gnu.org>

	PR fortran/95398
	* resolve.c (resolve_select_type): Add check for BT_CLASS
	type before using the CLASS_DATA macro which will have a
	NULL pointer to derive components if it isn't BT_CLASS.

2020-08-30  José Rui Faustino de Sousa  <jrfsousa@gmail.com>

	PR fortran/96728
	* module.c (module_peek_char): Peek ahead function.
	(parse_integer): Add code for parsing signed integers.
	(parse_atom): Add code to handle signed integers.
	(peek_atom): Add code to handle signed integers.

2020-08-30  José Rui Faustino de Sousa  <jrfsousa@gmail.com>

	PR fortran/96727
	* expr.c (gfc_check_init_expr): Add default error message for the AS_ASSUMED_RANK case.

2020-08-30  José Rui Faustino de Sousa  <jrfsousa@gmail.com>

	PR fortran/96726
	* expr.c (check_references): Change different relational operator
	to less-than operator to avoid infinite loop.

2020-08-30  José Rui Faustino de Sousa  <jrfsousa@gmail.com>

	PR fortran/95352
	* simplify.c (simplify_bound_dim): Add check for NULL pointer
	before trying to access structure member.

2020-08-30  José Rui Faustino de Sousa  <jrfsousa@gmail.com>

	PR fortran/94110
	* interface.c (gfc_compare_actual_formal): Add code to also raise
	the actual argument cannot be an assumed-size array error when the
	dummy arguments are deferred-shape or assumed-rank pointer.

2020-08-28  Tobias Burnus  <tobias@codesourcery.com>

	PR fortran/94672
	* trans-array.c (gfc_trans_g77_array): Check against the parm decl and
	set the nonparm decl used for the is-present check to NULL if absent.

2020-08-28  Paul Thomas  <pault@gcc.gnu.org>

	PR fortran/96624
	* simplify.c (gfc_simplify_reshape): Detect zero shape and
	clear index if found.

2020-08-27  Mark Eggleston  <markeggleston@gcc.gnu.org>

	PR fortran/95882
	* decl.c (char_len_param_value): Check gfc_seen_div0 and
	if it is set return MATCH_ERROR.

2020-08-27  Martin Liska  <mliska@suse.cz>

	* trans-openmp.c (gfc_trans_omp_do): Set exact argument of a vector
	growth function to true.

2020-08-26  Tobias Burnus  <tobias@codesourcery.com>

	* gfortran.h (enum gfc_omp_device_type): New.
	(symbol_attribute, gfc_omp_clauses, gfc_common_head): Use it.
	* module.c (enum ab_attribute): Add AB_OMP_DEVICE_TYPE_HOST,
	AB_OMP_DEVICE_TYPE_NOHOST and AB_OMP_DEVICE_TYPE_ANY.
	(attr_bits, mio_symbol_attribute): Handle it.
	(load_commons, write_common_0): Handle omp_device_type flag.
	* openmp.c (enum omp_mask1): Add OMP_CLAUSE_DEVICE_TYPE
	(OMP_DECLARE_TARGET_CLAUSES): Likewise.
	(gfc_match_omp_clauses): Match 'device_type'.
	(gfc_match_omp_declare_target): Handle it.
	* trans-common.c (build_common_decl): Write device-type clause.
	* trans-decl.c (add_attributes_to_decl): Likewise.

2020-08-23  Paul Thomas  <pault@gcc.gnu.org>

	PR fortran/96737
	* trans-types.c (gfc_get_derived_type): Derived types that are
	used in submodules are not compatible with TYPE_CANONICAL from
	any of the global namespaces.

2020-08-20  Paul Thomas  <pault@gcc.gnu.org>

	PR fortran/96100
	PR fortran/96101
	* trans-array.c (get_array_charlen): Tidy up the evaluation of
	the string length for array constructors. Avoid trailing array
	references. Ensure string lengths of deferred length components
	are set. For parentheses operator apply string  length to both
	the primary expression and the enclosed expression.

2020-08-20  Andre Vehreschild  <vehre@gcc.gnu.org>

	PR fortran/94958
	* trans-array.c (gfc_bcast_alloc_comp): Use the correct variable.

2020-08-20  Tobias Burnus  <tobias@codesourcery.com>

	* openmp.c (gfc_match_omp_clauses): Re-order 'if' clause pasing
	to avoid creating spurious symbols.

2020-08-18  Harald Anlauf  <anlauf@gmx.de>

	* check.c (check_rest): Reject MIN/MAX character arguments of
	different kind.
	* simplify.c (min_max_choose): The simplification result shall
	have the highest kind value of the arguments.
	* trans-intrinsic.c (gfc_conv_intrinsic_minmax): Choose type and
	kind of intermediate by looking at all arguments, not the result.

2020-08-17  Martin Liska  <mliska@suse.cz>

	* openmp.c (resolve_omp_clauses): Add static assert
	for OMP_LIST_NUM and size of clause_names array.
	Remove check that is always true.

2020-08-17  Martin Liska  <mliska@suse.cz>

	* openmp.c (resolve_omp_clauses): Add NONTEMPORAL to clause
	names.

2020-08-13  Andre Vehreschild  <vehre@gcc.gnu.org>

	PR fortran/93671
	* trans-array.c (structure_alloc_comps): Keep caf-mode when applying to
	components; get the caf_token correctly for allocated scalar components.

2020-08-13  Matthew Krupcale  <mkrupcale@matthewkrupcale.com>

	PR fortran/96595
	* invoke.texi: Fix typos.

2020-08-12  Tobias Burnus  <tobias@codesourcery.com>

	* gfortran.h: Add OMP_LIST_NONTEMPORAL.
	* dump-parse-tree.c (show_omp_clauses): Dump it
	* openmp.c (enum omp_mask1): Add OMP_CLAUSE_NOTEMPORAL.
	(OMP_SIMD_CLAUSES): Add it.
	(gfc_match_omp_clauses): Match nontemporal clause.
	* trans-openmp.c (gfc_trans_omp_clauses): Process
	nontemporal clause.

2020-08-10  Thomas Koenig  <tkoenig@gcc.gnu.org>

	PR fortran/96556
	* frontend-passes.c (doloop_contained_function_call):
	Do not dereference a NULL pointer for value.function.esym.

2020-08-10  Paul Thomas  <pault@gcc.gnu.org>

	PR fortran/96312
	* trans-expr.c (fcncall_realloc_result): Only compare shapes if
	lhs was allocated..

2020-08-10  Paul Thomas  <pault@gcc.gnu.org>

	PR fortran/96102
	* resolve.c (check_host_association): Replace the gcc_assert
	with an error for internal procedures.

2020-08-05  Thomas Koenig  <tkoenig@gcc.gnu.org>

	PR fortran/96469
	* frontend-passes.c (doloop_contained_function_call): New
	function.
	(doloop_contained_procedure_code): New function.
	(CHECK_INQ): Macro for inquire checks.
	(doloop_code): Invoke doloop_contained_procedure_code and
	doloop_contained_function_call if appropriate.
	(do_intent): Likewise.

2020-08-04  Tobias Burnus  <tobias@codesourcery.com>

	* openmp.c (resolve_omp_do): Detect not perfectly
	nested loop with innermost collapse.

2020-08-04  Tobias Burnus  <tobias@codesourcery.com>

	* trans-openmp.c (gfc_trans_omp_do): Fix 'lastprivate(conditional:'.

2020-08-03  Julian Brown  <julian@codesourcery.com>
	    Thomas Schwinge  <thomas@codesourcery.com>

	* trans-openmp.c (gfc_trans_omp_clauses): Don't create present/release
	mappings for array descriptors.

2020-08-03  Martin Jambor  <mjambor@suse.cz>

	* f95-lang.c (gfc_init_builtin_functions): Remove processing of
	hsa-builtins.def.

2020-08-03  Tobias Burnus  <tobias@codesourcery.com>

	* gfc-internals.texi: Fix typos.
	* gfortran.texi: Likewise.
	* intrinsic.texi: Likewise.
	* invoke.texi: Likewise.

2020-08-02  Paul Thomas  <pault@gcc.gnu.org>

	PR target/96320
	* interface.c (gfc_check_dummy_characteristics): If a module
	procedure arrives with assumed shape in the interface and
	deferred shape in the procedure itself, update the latter and
	copy the lower bounds.

2020-08-02  Paul Thomas  <pault@gcc.gnu.org>

	PR fortran/96325
	* primary.c (gfc_match_varspec): In the case that a component
	reference is added to an intrinsic type component, emit the
	error message in this function.

2020-07-29  Tobias Burnus  <tobias@codesourcery.com>

	* dump-parse-tree.c (show_omp_clauses): Handle order(concurrent).
	* gfortran.h (struct gfc_omp_clauses): Add order_concurrent.
	* openmp.c (enum omp_mask1, OMP_DO_CLAUSES, OMP_SIMD_CLAUSES):
	Add OMP_CLAUSE_ORDER.
	* trans-openmp.c (gfc_trans_omp_clauses, gfc_split_omp_clauses):
	Handle order(concurrent) clause.

2020-07-29  Tobias Burnus  <tobias@codesourcery.com>

	* openmp.c (resolve_omp_clauses): Permit 'omp target data' without
	map if use_device_{addr,ptr} is present.

2020-07-29  Mark Eggleston  <markeggleston@gcc.gnu.org>

	PR fortran/96319
	* intrinsic.c (gfc_convert_type_warn):  Add check for
	LOGICAL type so that warnings are not output.

2020-07-29  Tobias Burnus  <tobias@codesourcery.com>

	* module.c (mio_symbol_attribute): Fix indent of previous
	commit.

2020-07-29  Mark Eggleston  <markeggleston@gcc.gnu.org>

	PR fortran/53298
	* trans-array.c (gfc_walk_array_ref): If ref->ss.end is set
	call gfc_get_scalar_ss.

2020-07-29  Tobias Burnus  <tobias@codesourcery.com>

	* gfortran.h (enum gfc_statement): Add ST_OMP_REQUIRES.
	(enum gfc_omp_requires_kind): New.
	(enum gfc_omp_atomic_op): Add GFC_OMP_ATOMIC_ACQ_REL.
	(struct gfc_namespace): Add omp_requires and omp_target_seen.
	(gfc_omp_requires_add_clause,
	(gfc_check_omp_requires): New.
	* match.h (gfc_match_omp_requires): New.
	* module.c (enum ab_attribute, attr_bits): Add omp requires clauses.
	(mio_symbol_attribute): Read/write them.
	* openmp.c (gfc_check_omp_requires, (gfc_omp_requires_add_clause,
	gfc_match_omp_requires): New.
	(gfc_match_omp_oacc_atomic): Use requires's default mem-order.
	* parse.c (decode_omp_directive): Match requires, set omp_target_seen.
	(gfc_ascii_statement): Handle ST_OMP_REQUIRES.
	* trans-openmp.c (gfc_trans_omp_atomic): Handle GFC_OMP_ATOMIC_ACQ_REL.

2020-07-27  Tobias Burnus  <tobias@codesourcery.com>

	* openmp.c (gfc_resolve_omp_directive): Remove NULL check
	for clauses in EXEC_OMP_CRITICAL as it no longer can be NULL.

2020-07-23  Tobias Burnus  <tobias@codesourcery.com>

	* gfortran.h (gfc_omp_namelist): Add lastprivate_conditional.
	* openmp.c (gfc_match_omp_clauses): Handle 'conditional:'
	modifier of 'lastprivate'.
	* trans-openmp.c (gfc_omp_clause_default_ctor): Don't assert
	on OMP_CLAUSE__CONDTEMP_ and other OMP_*TEMP_.
	(gfc_trans_omp_variable_list): Handle lastprivate_conditional.

2020-07-23  Tobias Burnus  <tobias@codesourcery.com>

	* intrinsic.texi (OMP_LIB_KINDS): Add omp_depend_kind.

2020-07-23  Tobias Burnus  <tobias@codesourcery.com>

	* gfortran.texi (Standards): Update URL; state that OpenMP 4.5
	is supported and 5.0 is partially.
	* intrinsic.texi (OpenMP Modules): Refer also to OpenMP 5.0;
	(OMP_LIB): Add missing derived type and new named constants.

2020-07-22  Tobias Burnus  <tobias@codesourcery.com>

	* gfortran.h (enum gfc_omp_if_kind): Add OMP_IF_CANCEL and OMP_IF_SIMD.
	* openmp.c (OMP_SIMD_CLAUSES): Add OMP_CLAUSE_IF.
	(gfc_match_omp_clauses, resolve_omp_clauses): Handle 'if (simd/cancel:'.
	* dump-parse-tree.c (show_omp_clauses): Likewise.
	* trans-openmp.c (gfc_trans_omp_clauses, gfc_trans_omp_cancel,
	(gfc_split_omp_clauses): Likewise.

2020-07-22  Tobias Burnus  <tobias@codesourcery.com>

	* openmp.c (gfc_match_omp_critical): Fix handling hints; permit
	hint clause without named critical.
	(resolve_omp_clauses): Require nonnegative constant integer
	for the hint clause.
	(gfc_resolve_omp_directive): Check for no name but
	nonzero value for hint clause.
	* parse.c (parse_omp_structured_block): Fix same-name check
	for critical.
	* trans-openmp.c (gfc_trans_omp_critical): Handle hint clause properly.

2020-07-21  Harald Anlauf  <anlauf@gmx.de>

	PR fortran/89574
	* trans-decl.c (gfc_get_extern_function_decl): Check whether a
	symbol belongs to a different module.

2020-07-19  Thomas Koenig  <tkoenig@gcc.gnu.org>

	PR fortran/96220
	* dump-parse-tree.c (get_c_type_name): Always use the entries from
	c_interop_kinds_table to find the correct C type.

2020-07-19  Thomas Koenig  <tkoenig@gcc.gnu.org>

	PR fortran/96018
	* frontend-passes.c (gfc_check_externals): Adjust formatting.
	(implicit_pure_call): New function.
	(implicit_pure_expr): New function.
	(gfc_fix_implicit_pure): New function.
	* gfortran.h (gfc_fix_implicit_pure): New prototype.
	* parse.c (translate_all_program_units): Call gfc_fix_implicit_pure.

2020-07-18  David Edelsohn  <dje.gcc@gmail.com>

	* check.c (gfc_invalid_boz): Mark hint for translation using _().

2020-07-16  Julian Brown  <julian@codesourcery.com>
	    Thomas Schwinge  <thomas@codesourcery.com>

	* trans-openmp.c (gfc_trans_omp_clauses): Rework OpenACC
	attach/detach handling for arrays with descriptors.

2020-07-14  Steven G. Kargl  <kargl@gcc.gnu.org>
	    Mark Eggleston  <markeggleston@gcc.gnu.org>

	PR fortran/95612
	* expr.c (gfc_check_pointer_assigb): Output an error if
	rvalue is a zero sized array or output an error if rvalue
	doesn't have a symbol tree.

2020-07-14  Tobias Burnus  <tobias@codesourcery.com>

	* openmp.c (gfc_match_omp_clauses): Match also derived-type
	component refs in OMP_CLAUSE_MAP.
	(resolve_omp_clauses): Resolve those.
	* trans-openmp.c (gfc_trans_omp_array_section, gfc_trans_omp_clauses):
	Handle OpenMP structure-element mapping.
	(gfc_trans_oacc_construct, gfc_trans_oacc_executable_directive,
	(gfc_trans_oacc_combined_directive, gfc_trans_oacc_declare): Update
	add openacc=true in gfc_trans_omp_clauses call.

2020-07-14  Tobias Burnus  <tobias@codesourcery.com>

	PR fortran/67311
	* trans-openmp.c (gfc_has_alloc_comps): Return false also for
	pointers to arrays.

2020-07-14  Steven G. Kargl  <kargl@gcc.gnu.org>
	    Mark Eggleston  <markeggleston@gcc.gnu.org>

	PR fortran/96038
	* decl.c (add_init_expr_sym):  For a symbol that is a
	parameter accept an initialisation if it does not have a
	value otherwise output a error and reject.

2020-07-13  Mark Eggleston  <markeggleston@gcc.gnu.org>

	PR fortran/45337
	* resolve.c (resolve_fl_variable): Remove type and intent
	checks from the check for dummy.

2020-07-13  Steven G. Kargl  <kargl@gcc.gnu.org>
	    Mark Eggleston  <markeggleston@gcc.gnu.org>

	PR fortran/95981
	* check.c (dim_rank_check): Allow NULL references in call to
	gfc_find_array_ref and return false if no reference is found.

2020-07-11  Thomas Koenig  <tkoenig@gcc.gnu.org>

	PR fortran/96073
	* frontend-passes.c (check_externals_procedure):  Add locus
	information for new_sym.
	* interface.c (gfc_check_dummy_characteristics): Do not warn
	about INTENT for artificially generated variables.

2020-07-10  Harald Anlauf  <anlauf@gmx.de>

	PR fortran/95980
	* class.c (gfc_add_component_ref, gfc_build_class_symbol):
	Add checks for NULL pointer dereference.
	* primary.c (gfc_variable_attr): Likewise.
	* resolve.c (resolve_variable, resolve_assoc_var)
	(resolve_fl_var_and_proc, resolve_fl_variable_derived)
	(resolve_symbol): Likewise.

2020-07-10  Harald Anlauf  <anlauf@gmx.de>

	PR fortran/96086
	* match.c (gfc_match_select_rank): Catch NULL pointer
	dereference.
	* resolve.c (resolve_assoc_var): Catch NULL pointer dereference
	that may occur after an illegal declaration.

2020-07-09  Julian Brown  <julian@codesourcery.com>

	* trans-openmp.c (gfc_trans_omp_clauses): Use 'inner' not 'decl' for
	derived type members which themselves have derived types.

2020-07-08  Harald Anlauf  <anlauf@gmx.de>

	PR fortran/96085
	* resolve.c (gfc_resolve_code): Check whether assign target is a
	parameter.

2020-07-06  Harald Anlauf  <anlauf@gmx.de>

	PR fortran/95980
	* match.c (copy_ts_from_selector_to_associate, build_class_sym):
	Distinguish between unlimited polymorphic and ordinary variables
	to avoid NULL pointer dereference.
	* resolve.c (resolve_select_type):
	Distinguish between unlimited polymorphic and ordinary variables
	to avoid NULL pointer dereference.

2020-07-06  Harald Anlauf  <anlauf@gmx.de>

	PR fortran/95709
	* resolve.c (gfc_resolve_code): Check for valid arguments to
	assigned GOTO.

2020-07-05  Thomas Koenig  <tkoenig@gcc.gnu.org>

	PR fortran/27318
	* frontend-passes.c (check_against_globals): New function.
	(gfc_check_externals): Split; also invoke check_against_globals
	via gfc_traverse_ns.
	(gfc_check_externals0): Recursive part formerly in
	gfc_check_externals.
	* resolve.c (resolve_global_procedure): Set sym->error on
	interface mismatch.
	* symbol.c (ambiguous_symbol): Check for, and set sym->error.

2020-07-02  Harald Anlauf  <anlauf@gmx.de>

	PR fortran/93423
	* resolve.c (resolve_symbol): Avoid NULL pointer dereference.

2020-07-02  Harald Anlauf  <anlauf@gmx.de>

	PR fortran/93337
	* class.c (gfc_find_derived_vtab): Punt if name is not set.

2020-07-02  Mark Eggleston  <markeggleston@gcc.gnu.org>

	PR fortran/52279
	* check.c (gfc_invalid_boz):  Change array declaration for
	hint into a pointer.

2020-07-02  Steven G. Kargl  <kargl@gcc.gnu.org>
	    Mark Eggleston  <markeggleston@gcc.gnu.org>

	PR fortran/95584
	* interface.c (generic_correspondence): Only use the pointer
	to a symbol if exists.

2020-07-01  David Edelsohn  <dje.gcc@gmail.com>

	* check.c (gfc_invalid_boz): Fix bootstrap. Revert
	Mark hint for translation using _().

2020-07-01  Mark Eggleston  <markeggleston@gcc.gnu.org>

	PR fortran/52279
	* arith.c (reduce_binary_aa): Mark for translation the string
	parameter to gfc_check_conformance with G_().
	* check.c (gfc_invalid_boz): Mark hint for translation using
	_().  (gfc_check_achar): Mark for translation the message
	parameter to gfc_invalid_boz using G_().  (gfc_check_char):
	Mark for translation the message parameter to gfc_invalid_boz
	using G_().  (gfc_check_complex): Mark for translation the
	message parameter to gfc_invalid_boz using G_().
	(gfc_check_float): Mark for translation the message
	parameter to gfc_invalid_boz using G_().  (check_rest): Mark
	for translation the string parameter to gfc_check_conformance
	with _().  (gfc_check_minloc_maxloc): Mark for translation
	the string parameter to gfc_check_conformance with _().
	(gfc_check_findloc): Mark for translation the string parameter
	to gfc_check_conformance with _().  (check_reduction): Mark
	for translation the string parameter to gfc_check_conformance
	with _().  (gfc_check_pack): Mark for translation the string
	parameter to gfc_check_conformance with _().
	* decl.c (match_old_style_init): Mark for translation the
	message parameter to gfc_invalid_boz using G_().
	* expr.c (gfc_check_assign): Mark for translation the string
	parameter to gfc_check_conformance with _().
	* intrinsic.c (check_specific): Mark for translation the string
	parameter to gfc_check_conformance with _().
	(gfc_check_intrinsic_standard): Mark symstd_msg strings for
	translation using G_(). No need to mark symstd_msg for
	translation in call to gfc_warning or when setting symstd.
	* io.c (check_open_constraints):  Mark strings for translation
	using G_() in all calls to warn_or_error.  (match_io_element):
	Mark for translation the message parameter to gfc_invalid_boz
	using G_().
	* primary.c (match_boz_constant): Mark for translation the
	message parameter to gfc_invalid_boz using G_().
	* resolve.c (resolve_elemental_actual):  Mark for translation
	the string parameter to gfc_check_conformance with _().
	(resolve_operator):  Mark for translation the string parameter
	to gfc_check_conformance with _().  Mark translation strings
	assigned to msg using G_() for use in a call to cfg_warning.

2020-07-01  Steven G. Kargl  <kargl@gcc.gnu.org>
	    Mark Eggleston  <markeggleston@gcc.gnu.org>

	PR fortran/95446
	* resolve.c (resolve_elemental_actual): Add code to check for
	non-optional argument of the same rank.  Revise warning message
	to refer to the Fortran 2018 standard.

2020-07-01  Steven G. Kargl  <kargl@gcc.gnu.org>
	    Mark Eggleston  <markeggleston@gcc.gnu.org>

	PR fortran/95829
	* decl.c (gfc_match_decl_type_spec): Compare with "* ) " instead
	of "*)".

2020-06-30  Harald Anlauf  <anlauf@gmx.de>

	PR fortran/88379
	* resolve.c (resolve_assoc_var): Avoid NULL pointer dereference.

2020-06-30  Thomas Koenig  <tkoenig@gcc.gnu.org>

	PR fortran/95355
	* gfortran.h (gfc_typename): Add optional argument for_hash.
	* misc.c (gfc_typename): When for_hash is true, just retur
	  CHARACTER(kind).
	* class.c (gfc_intrinsic_hash_value): Call gfc_typename with
	  for_hash = true.

2020-06-29  Harald Anlauf  <anlauf@gmx.de>

	PR fortran/95978
	* decl.c (gfc_match_data): Avoid NULL pointer dereference.

2020-06-29  Thomas Koenig  <tkoenig@gcc.gnu.org>

	PR fortran/95743
	* trans-decl.c (gfc_generate_function_code): Do not generate
	recursion check for compiler-generated procedures.

2020-06-29  Harald Anlauf  <anlauf@gmx.de>

	PR fortran/71706
	* trans-stmt.c (gfc_trans_sync): Do proper kind conversion in
	bounds-checking code.

2020-06-28  Harald Anlauf  <anlauf@gmx.de>

	PR fortran/95340
	* match.c (gfc_match_select_rank): Do not dereference NULL pointer.

2020-06-28  Harald Anlauf  <anlauf@gmx.de>

	PR fortran/95880
	* symbol.c (gfc_add_type): If sym->ns->proc_name is set, use it,
	otherwise fall back to sym->name.

2020-06-27  Harald Anlauf  <anlauf@gmx.de>

	PR fortran/95881
	* resolve.c (resolve_symbol): Avoid NULL pointer dereference.

2020-06-25  Harald Anlauf  <anlauf@gmx.de>

	PR fortran/95828
	* match.c (select_rank_set_tmp): Enlarge internal buffer used in
	generating a mangled name.
	* resolve.c (resolve_select_rank): Likewise.

2020-06-25  Harald Anlauf  <anlauf@gmx.de>

	PR fortran/95826
	* decl.c (gfc_match_decl_type_spec): Replace a fixed size
	buffer by a pointer and reallocate if necessary.

2020-06-25  Tobias Burnus  <tobias@codesourcery.com>

	PR fortran/95837
	* resolve.c (gfc_resolve_substring_charlen): Remove
	bogus ts.kind setting for the expression.

2020-06-25  Tobias Burnus  <tobias@codesourcery.com>
	    Kwok Cheung Yeung  <kcy@codesourery.com>

	PR fortran/95869
	* trans-openmp.c (gfc_trans_omp_target): Use correct scoping block.

2020-06-25  Kwok Cheung Yeung  <kcy@codesourcery.com>

	* trans-openmp.c (gfc_split_omp_clauses): Add if clause
	to target and simd sub-constructs.

2020-06-24  Harald Anlauf  <anlauf@gmx.de>

	PR fortran/95827
	* iresolve.c (gfc_get_string): Enlarge internal buffer used in
	generating the mangled name.

2020-06-23  Thomas Koenig  <tkoenig@gcc.gnu.org>

	PR fortran/95812
	* dependency.c (ref_same_as_full_array): Handle case of AR_FULL
	vs. AR_FULL.

2020-06-23  Steven G. Kargl  <kargl@gcc.gnu.org>
	    Mark Eggleston  <markeggleston@gcc.gnu.org>

	PR fortran/95586
	* decl.c (gfc_match_implicit): Only perform else branch if
	the type spect is not BT_DERIVED.

2020-06-22  Steven G. Kargl  <kargl@gcc.gnu.org>
	    Mark Eggleston  <markeggleston@gcc.gnu.org>

	PR fortran/95708
	* intrinsic.c (add_functions): Replace CLASS_INQUIRY with
	CLASS_TRANSFORMATIONAL for intrinsic num_images.
	(make_generic): Replace ACTUAL_NO with ACTUAL_YES for
	intrinsic team_number.
	* resolve.c (resolve_fl_procedure): Check pointer ts.u.derived
	exists before using it.

2020-06-22  Steven G. Kargl  <kargl@gcc.gnu.org>
	    Mark Eggleston  <markeggleston@gcc.gnu.org>

	PR fortran/95585
	* check.c (gfc_check_reshape): Add check for a value when
	the symbol has an attribute flavor FL_PARAMETER.

2020-06-22  Mark Eggleston  <markeggleston@gcc.gnu.org>

	PR fortran/42693
	* arith.c (gfc_arith_error): Enclose strings in G_() instead
	of _().

2020-06-20  Harald Anlauf  <anlauf@gmx.de>

	PR fortran/95707
	* gfortran.h (gfc_common_head): Enlarge buffer.
	* trans-common.c (gfc_sym_mangled_common_id): Enlarge temporary
	buffers, and add check on length on mangled name to prevent
	overflow.

2020-06-20  Harald Anlauf  <anlauf@gmx.de>

	PR fortran/95688
	* iresolve.c (gfc_get_string): Enlarge static buffer size.

2020-06-20  Harald Anlauf  <anlauf@gmx.de>

	PR fortran/95687
	* class.c (get_unique_type_string): Return a string with dynamic
	length.
	(get_unique_hashed_string, gfc_hash_value): Use dynamic result
	from get_unique_type_string instead of static buffer.

2020-06-20  Harald Anlauf  <anlauf@gmx.de>

	PR fortran/95689
	* interface.c (check_sym_interfaces): Enlarge temporary buffer,
	and add check on length on mangled name to prevent overflow.

2020-06-20  Harald Anlauf  <anlauf@gmx.de>

	PR fortran/95587
	* match.c (gfc_match_equivalence): Check constraints on
	EQUIVALENCE objects also for CLASS variables.

2020-06-18  Tobias Burnus  <tobias@codesourcery.com>

	* openmp.c (resolve_omp_clauses): Reject vars with
	allocatable components in OpenMP map clauses.

2020-06-16  Tobias Burnus  <tobias@codesourcery.com>

	* parse.c (decode_oacc_directive): Permit 'acc routine' also
	inside pure procedures.
	* openmp.c (gfc_match_oacc_routine): Inside pure procedures
	do not permit gang, worker or vector clauses.

2020-06-16  Tobias Burnus  <tobias@codesourcery.com>

	* parse.c (decode_omp_directive): Remove "or ELEMENTAL"
	from "in PURE" error message also for -fopenmp-simd.

2020-06-16  Tobias Burnus  <tobias@codesourcery.com>

	* parse.c (decode_omp_directive): Remove "or ELEMENTAL"
	from "in PURE" error message.

2020-06-14  Thomas Koenig  <tkoenig@gcc.gnu.org>

	PR fortran/42122
	* dump-parse-tree.c (gfc_dump_global_symbols):  If the symroot is
	empty, just output "empty".

2020-06-14  Harald Anlauf  <anlauf@gmx.de>

	PR fortran/95088
	* class.c (get_unique_type_string): Replace use of fixed size
	buffer by internally passing a pointer to strings.

2020-06-14  Thomas Koenig  <tkoenig@gcc.gnu.org>

	* check.c (gfc_check_random_seed): Always use locations
	from get and put arguments for error messages.

2020-06-14  Thomas Koenig  <tkoenig@gcc.gnu.org>

	PR fortran/94109
	* class.c (finalize_component): Return early if finalization has
	already happened for expression and component within namespace.
	* gfortran.h (gfc_was_finalized): New type.
	(gfc_namespace): Add member was_finalzed.
	(gfc_expr): Remove finalized.
	* symbol.c (gfc_free_namespace): Free was_finalized.

2020-06-11  Harald Anlauf  <anlauf@gmx.de>
	    Steven G. Kargl   <kargl@gcc.gnu.org>

	PR fortran/95611
	* decl.c (access_attr_decl): Use correct symbol in error message.

2020-06-11  Steven G. Kargl  <kargl@gcc.gnu.org>
	    Harald Anlauf  <anlauf@gmx.de>

	PR fortran/95544
	* check.c (invalid_null_arg): Rename to gfc_invalid_null_arg.
	(gfc_check_associated, gfc_check_kind, gfc_check_merge)
	(gfc_check_shape, gfc_check_size, gfc_check_spread)
	(gfc_check_transfer): Adjust.
	(gfc_check_len_lentrim, gfc_check_trim): Check for NULL() argument.
	* gfortran.h: Declare gfc_invalid_null_arg ().
	* intrinsic.c (check_arglist): Check for NULL() argument.

2020-06-11  Harald Anlauf  <anlauf@gmx.de>

	PR fortran/95503
	* expr.c (gfc_check_pointer_assign): Skip contiguity check of rhs
	of pointer assignment if lhs cannot be simply contiguous.

2020-06-11  José Rui Faustino de Sousa  <jrfsousa@gmail.com>

	PR fortran/95331
	* trans-array.c (gfc_conv_array_ref): For class array dummy
	arguments use the transformed descriptor in sym->backend_decl
	instead of the original descriptor.

2020-06-11  José Rui Faustino de Sousa  <jrfsousa@gmail.com>

	PR fortran/52351
	PR fortran/85868
	* trans-array.c (gfc_conv_expr_descriptor): Enable the
	creation of a new descriptor with the correct one based
	indexing for array sections.  Rework array descriptor
	indexing offset calculation.

2020-06-11  José Rui Faustino de Sousa  <jrfsousa@gmail.com>

	PR fortran/94022
	* trans-expr.c (gfc_conv_procedure_call): In the case of
	assumed-size arrays ensure that the reference is to a full array.

2020-06-07  Harald Anlauf  <anlauf@gmx.de>

	PR fortran/95091
	* class.c (gfc_hash_value): Add cast.

2020-06-07  Harald Anlauf  <anlauf@gmx.de>

	PR fortran/95091
	* class.c (get_unique_type_string, gfc_hash_value): Enlarge
	buffers, and check whether the strings returned by
	get_unique_type_string() fit.

2020-06-05  Harald Anlauf  <anlauf@gmx.de>

	PR fortran/95530
	PR fortran/95537
	* decl.c (gfc_match_decl_type_spec): Enlarge buffer, and enhance
	string copy to detect buffer overflow.
	* gfortran.h (gfc_common_head): Enlarge buffer.
	* trans-common.c (finish_equivalences): Enhance string copy to
	detect buffer overflow.

2020-06-05  Tom Tromey  <tromey@adacore.com>

	PR fortran/95509
	* misc.c (gfc_closest_fuzzy_match): Update cutoff value
	computation.

2020-06-04  Steven G. Kargl  <kargl@gcc.gnu.org>
	    Harald Anlauf  <anlauf@gmx.de>

	PR fortran/95500
	* trans-expr.c (gfc_conv_expr_reference): Do not dereference NULL
	pointer.

2020-06-03  José Rui Faustino de Sousa  <jrfsousa@gmail.com>

	PR fortran/95214
	PR fortran/66833
	PR fortran/67938
	* trans-expr.c (gfc_maybe_dereference_var): Add assumed-rank to
	character dummy arguments list of possible attributes.

2020-06-03  Tobias Burnus  <tobias@codesourcery.com>

	* f95-lang.c (LANG_HOOKS_OMP_PREDETERMINED_MAPPING): Redefine.
	* trans-openmp.c (gfc_omp_predetermined_mapping): New.
	* trans.h (gfc_omp_predetermined_mapping): Declare.

2020-05-31  Thomas Koenig  <tkoenig@gcc.gnu.org>

	PR fortran/94361
	* class.c (finalize_component): Use expr->finalized instead of
	comp->finalized.
	* gfortran.h (gfc_component): Remove finalized member.
	(gfc_expr): Add it here instead.

2020-05-30  Harald Anlauf  <anlauf@gmx.de>

	PR fortran/95373
	* primary.c (is_inquiry_ref): Move validity check of inquiry
	references against selected Fortran standard from here...
	(gfc_match_varspec) ...to here.

2020-05-30  Harald Anlauf  <anlauf@gmx.de>

	PR fortran/95090
	* class.c (get_unique_type_string): Use buffer overrun check.

2020-05-29  Harald Anlauf  <anlauf@gmx.de>

	PR fortran/95090
	* class.c (get_unique_type_string): Enlarge temporary for
	name-mangling.  Use strncpy to prevent buffer overrun.
	(get_unique_hashed_string): Enlarge temporary.
	(gfc_hash_value): Enlarge temporary for name-mangling.

2020-05-28  Harald Anlauf  <anlauf@gmx.de>

	PR fortran/95373
	* primary.c (is_inquiry_ref): Check validity of inquiry
	references against selected Fortran standard.

2020-05-28  Steven G. Kargl  <kargl@gcc.gnu.org>
	    Mark Eggleston  <markeggleston@gcc.gnu.org>
	    Mark Eggleston  <markeggleston@gcc.gnu.org>

	PR fortran/94397
	* match.c (gfc_match_type_spec): New variable ok initialised
	to true. Set ok with the return value of gfc_reduce_init_expr
	called only if the expression is not EXPR_CONSTANT and is not
	EXPR_VARIABLE. Add !ok to the check for type not being integer
	or the rank being greater than zero.

2020-05-27  Harald Anlauf  <anlauf@gmx.de>

	PR fortran/95090
	* iresolve.c (gfc_get_string): Enlarge temporary for
	name-mangling.

2020-05-27  Tobias Burnus  <tobias@codesourcery.com>
	    Mark Eggleston  <markeggleston@gnu.gcc.org>

	PR fortran/50392
	* trans-decl.c (gfc_get_symbol_decl): Remove unnecessary block
	delimiters.  Add auxiliary variables if a label is assigned to
	a return variable. (gfc_gat_fake_result): If the symbol has an
	assign attribute set declaration from the symbol's backend
	declaration.

2020-05-26  Harald Anlauf  <anlauf@gmx.de>

	PR fortran/95089
	* trans-types.c (gfc_get_derived_type): Enlarge temporary to hold
	mangled name "_caf_symbol".

2020-05-26  Alexandre Oliva  <oliva@adacore.com>

	* options.c (gfc_get_option_string): Drop auxbase, add
	dumpbase_ext.

2020-05-24  Harald Anlauf  <anlauf@gmx.de>

	PR fortran/95106
	* trans-common.c (gfc_sym_mangled_common_id): Enlarge temporaries
	for name-mangling.

2020-05-23  Thomas Koenig  <tkoenig@gcc.gnu.org>

	PR libfortran/95191
	* libgfortran.h (libgfortran_error_codes): Add
	LIBERROR_BAD_WAIT_ID.

2020-05-20  Mark Eggleston  <markeggleston@gcc.gnu.org>

	PR fortran/39695
	* resolve.c (resolve_fl_procedure): Set name depending on
	whether the result attribute is set.  For PROCEDURE/RESULT
	conflict use the name in sym->ns->proc_name->name.
	* symbol.c (gfc_add_type): Add check for function and result
	attributes use sym->ns->proc_name->name if both are set.
	Where the symbol cannot have a type use the name in
	sym->ns->proc_name->name.

2020-05-18  Harald Anlauf  <anlauf@gmx.de>

	PR fortran/95053
	* arith.c (gfc_divide): Revert hunk introduced by patch for
	PR93499.
	* decl.c (variable_decl): Generate error for array shape not being
	an INTEGER constant.
	(gfc_get_pdt_instance): Generate error if KIND or LEN expressions
	in declaration of a PDT instance do not simplify to INTEGER
	constants.

2020-05-15  Tobias Burnus  <tobias@codesourcery.com>

	PR fortran/94690
	* openmp.c (resolve_omp_do): Permit more clauses for SIMD
	iteration variables.

2020-05-14  Jakub Jelinek  <jakub@redhat.com>

	* trans-openmp.c: Include function.h.
	(gfc_trans_omp_target): Set cfun->has_omp_target.

2020-05-13  Steven G. Kargl  <kargl@gcc.gnu.org>

	PR fortran/93497
	* decl.c (char_len_param_value): Check whether character
	length expression is of type EXPR_OP and if so simplify it.
	* resolve.c (resolve_charlen): Reject length if it has a
	rank.

2020-05-13  Tobias Burnus  <tobias@codesourcery.com>

	PR fortran/94690
	* openmp.c (OMP_DISTRIBUTE_CLAUSES): Add OMP_CLAUSE_LASTPRIVATE.
	(gfc_resolve_do_iterator): Skip the private handling for SIMD as
	that is handled by ME code.
	* trans-openmp.c (gfc_trans_omp_do): Don't add private/lastprivate
	for dovar_found == 0, unless !simple.

2020-05-11  Harald Anlauf  <anlauf@gmx.de>

	PR fortran/95053
	* arith.c (gfc_divide): Do not error out if operand 2 is
	non-numeric.  Defer checks to later stage.

2020-05-11  Tobias Burnus  <tobias@codesourcery.com>

	PR fortran/94672
	* trans.h (gfc_conv_expr_present): Add use_saved_decl=false argument.
	* trans-expr.c (gfc_conv_expr_present): Likewise; use DECL directly
	and only if use_saved_decl is true, use the actual PARAM_DECL arg (saved
	descriptor).
	* trans-array.c (gfc_trans_dummy_array_bias): Set local 'arg.0'
	variable to NULL if 'arg' is not present.
	* trans-openmp.c (gfc_omp_check_optional_argument): Simplify by checking
	'arg.0' instead of the true PARM_DECL.
	(gfc_omp_finish_clause): Remove setting 'arg.0' to NULL.

2020-05-11  Janus Weil  <janus@gcc.gnu.org>
	    Dominique d'Humieres  <dominiq@lps.ens.fr>

	PR fortran/59107
	* gfortran.h: Rename field resolved as resolve_symbol_called
	and assign two 2 bits instead of 1.
	* interface.c (check_dtio_interface1): Use new field name.
	(gfc_find_typebound_dtio_proc): Use new field name.
	* resolve.c (gfc_resolve_intrinsic): Replace check of the formal
	field with resolve_symbol_called is at least 2, if it is not
	set the field to 2.  (resolve_typebound_procedure): Use new field
	name.  (resolve_symbol): Use new field name and check whether it
	is at least 1, if it is not set the field to 1.

2020-05-10  Harald Anlauf  <anlauf@gmx.de>

	PR fortran/93499
	* arith.c (gfc_divide): Catch division by zero.
	(eval_intrinsic_f3): Safeguard for NULL operands.

2020-05-05  Steve Kargl  <kargl@gcc.gnu.org>
	Harald Anlauf  <anlauf@gmx.de>

	PR fortran/93366
	* check.c (gfc_check_associated, invalid_null_arg): Factorize
	check for presence of invalid NULL() argument.
	(gfc_check_kind, gfc_check_merge, gfc_check_shape)
	(gfc_check_sizeof, gfc_check_spread, gfc_check_transfer): Use this
	check for presence of invalid NULL() arguments.

2020-04-29  Stefan Schulze Frielinghaus  <stefansf@linux.ibm.com>

	PR fortran/94769
	* io.c (check_io_constraints): Initialize local variable num to
	-1 and assert that it receives a meaningful value by function
	compare_to_allowed_values.

2020-04-27  Thomas Koenig  <tkoenig@gcc.gnu.org>

	PR fortran/93956
	PR fortran/94788
	* expr.c (gfc_check_pointer_assign): Revert patch for PR 93956.
	* interface.c: Likewise.

2020-04-25  Thomas Koenig  <tkoenig@gcc.gnu.org>

	PR fortran/94578
	* trans-expr.c (arrayfunc_assign_needs_temporary): If the
	LHS is a subref pointer, we also need a temporary.

2020-04-23  Thomas Koenig  <tkoenig@gcc.gnu.org>

	PR fortran/93956
	* expr.c (gfc_check_pointer_assign): Also set subref_array_pointer
	when a function returns a pointer.
	* interface.c (gfc_set_subref_array_pointer_arg): New function.
	(gfc_procedure_use): Call it.

2020-04-22  Fritz Reese  <foreese@gcc.gnu.org>

	* trigd_fe.inc: Use mpfr to compute cosd(30) rather than a host-
	precision floating point literal based on an invalid macro.

2020-04-22  José Rui Faustino de Sousa  <jrfsousa@gmail.com>

	PR fortran/90350
	* simplify.c (simplify_bound): In the case of assumed-size arrays
	check if the reference is to a full array.

2020-04-22  Tobias Burnus  <tobias@codesourcery.com>

	PR fortran/94709
	* scanner.c (load_line): In fixed form, also treat 'C' as comment and
	'D'/'d' only with -fd-lines-as-comments. Treat '!$' with -fopenmp,
	'!$acc' with -fopenacc and '!GCC$' as non-comment to permit <tab>
	and truncation warnings.

2020-04-20  Thomas Koenig  <tkoenig@gcc.gnu.org>

	* dump-parse-tree.c (show_attr): Add numerous flags, some cleanup.

2020-04-20  Harald Anlauf  <anlauf@gmx.de>

	PR fortran/93364
	* array.c (gfc_set_array_spec): Check for sum of rank and corank
	not exceeding GFC_MAX_DIMENSIONS.

2020-04-20  Steve Kargl  <kargl@gcc.gnu.org>
	Thomas Koenig  <tkoenig@gcc.gnu.org>

	PR fortran/91800
	* decl.c (variable_decl): Reject Hollerith constants as type
	initializer.

2020-04-19  Thomas Koenig  <tkoenig@gcc.gnu.org>

	PR fortran/93500
	* resolve.c (resolve_operator): If both operands are
	NULL, return false.
	* simplify.c (simplify_bound): If a division by zero
	was seen during bound simplification, free the
	corresponcing expression and return &gfc_bad_expr.

2020-04-17  Thomas Koenig  <tkoenig@gcc.gnu.org>

	PR fortran/94090
	* gfortran.dg (gfc_compare_interfaces): Add
	optional argument bad_result_characteristics.
	* interface.c (gfc_check_result_characteristics): Fix
	whitespace.
	(gfc_compare_interfaces): Handle new argument; return
	true if function return values are wrong.
	* resolve.c (resolve_global_procedure): Hard error if
	the return value of a function is wrong.

2020-04-15  Fritz Reese  <foreese@gcc.gnu.org>
	Linus Koenig <link@sig-st.de>

	PR fortran/94192
	* simplify.c (simplify_bound): Simplify condition for error check.

2020-04-14  Tobias Burnus  <tobias@codesourcery.com>

	* module.c (gfc_match_use): Fix name-conflict check for use-associating
	the same symbol again in a submodule.

2020-04-13  Linus Koenig <link@sig-st.de>

	PR fortran/94192
	* resolve.c (resolve_fl_var_and_proc): Set flag "error" to 1 if
	pointer is found to not have an assumed rank or a deferred shape.
	* simplify.c (simplify_bound): If an error has been issued for a
	given pointer, one should not attempt to find its bounds.

2020-04-09  Fritz Reese  <foreese@gcc.gnu.org>

	PR fortran/87923
	* gfortran.h (gfc_resolve_open, gfc_resolve_close): Add
	locus parameter.
	(gfc_resolve_dt): Add code parameter.
	* io.c (async_io_dt, check_char_variable, is_char_type): Removed.
	(resolve_tag_format): Add locus to error message regarding
	zero-sized array in FORMAT tag.
	(check_open_constraints, check_close_constraints): New functions
	called at resolution time.
	(gfc_match_open, gfc_match_close, match_io): Move checks which don't
	affect the match result to new functions check_open_constraints,
	check_close_constraints, check_io_constraints.
	(gfc_resolve_open, gfc_resolve_close): Call new functions
	check_open_constraints, check_close_constraints after all tags have
	been independently resolved.  Remove duplicate constraints which are
	already verified by resolve_tag.  Explicitly pass locus to all error
	reports.
	(compare_to_allowed_values): Add locus parameter and provide
	explicit locus all error reports.
	(match_open_element, match_close_element, match_file_element,
	match_dt_element, match_inquire_element): Remove redundant special
	cases for ASYNCHRONOUS and IOMSG tags.
	(gfc_resolve_dt): Remove redundant special case for format
	expression.  Call check_io_constraints, forwarding an I/O list as
	the io_code parameter if present.
	(check_io_constraints): Change return type to bool.  Pass explicit
	locus to error reports.  Move generic checks after tag-specific
	checks, since errors are no longer buffered.  Move simplification of
	format string to match_io.  Remove redundant checks which are
	verified by resolve_tag.  Remove usage of async_io_dt flag and
	explicitly mark symbols used in asynchronous I/O with the
	asynchronous attribute.
	* resolve.c (resolve_transfer, resolve_fl_namelist): Remove checks
	for async_io_dt flag.  This is now done in io.c.
	(check_io_constraints).
	(gfc_resolve_code): Pass code locus to gfc_resolve_open,
	gfc_resolve_close, gfc_resolve_dt.

2020-04-07  Fritz Reese  <foreese@gcc.gnu.org>
	    Steven G. Kargl  <kargl@gcc.gnu.org>

	PR fortran/93871
	* gfortran.h (GFC_ISYM_ACOSD, GFC_ISYM_ASIND, GFC_ISYM_ATAN2D,
	GFC_ISYM_ATAND, GFC_ISYM_COSD, GFC_ISYM_COTAND, GFC_ISYM_SIND,
	GFC_ISYM_TAND): New.
	* intrinsic.c (add_functions): Remove check for flag_dec_math.
	Give degree trig functions simplification and name resolution
	functions (e.g, gfc_simplify_atrigd () and gfc_resolve_atrigd ()).
	(do_simplify): Remove special casing of degree trig functions.
	* intrinsic.h (gfc_simplify_acosd, gfc_simplify_asind,
	gfc_simplify_atand, gfc_simplify_cosd, gfc_simplify_cotand,
	gfc_simplify_sind, gfc_simplify_tand, gfc_resolve_trigd2): Add new
	prototypes.
	(gfc_simplify_atrigd, gfc_simplify_trigd, gfc_resolve_cotan,
	resolve_atrigd): Remove prototypes of deleted functions.
	* iresolve.c (is_trig_resolved, copy_replace_function_shallow,
	gfc_resolve_cotan, get_radians, get_degrees, resolve_trig_call,
	gfc_resolve_atrigd, gfc_resolve_atan2d): Delete functions.
	(gfc_resolve_trigd, gfc_resolve_trigd2): Resolve to library functions.
	* simplify.c (rad2deg, deg2rad, gfc_simplify_acosd, gfc_simplify_asind,
	gfc_simplify_atand, gfc_simplify_atan2d, gfc_simplify_cosd,
	gfc_simplify_sind, gfc_simplify_tand, gfc_simplify_cotand): New
	functions.
	(gfc_simplify_atan2): Fix error message.
	(simplify_trig_call, gfc_simplify_trigd, gfc_simplify_atrigd,
	radians_f): Delete functions.
	* trans-intrinsic.c: Add LIB_FUNCTION decls for sind, cosd, tand.
	(rad2deg, gfc_conv_intrinsic_atrigd, gfc_conv_intrinsic_cotan,
	gfc_conv_intrinsic_cotand, gfc_conv_intrinsic_atan2d): New functions.
	(gfc_conv_intrinsic_function): Handle ACOSD, ASIND, ATAND, COTAN,
	COTAND, ATAN2D.
	* trigd_fe.inc: New file. Included by simplify.c to implement
	simplify_sind, simplify_cosd, simplify_tand with code common to the
	libgfortran implementation.

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

	PR fortran/93686
	* decl.c (gfc_match_data): Handle data matching for derived type
	pointers.

2020-04-02  Tobias Burnus  <tobias@codesourcery.com>

	* gfortran.h (gfc_resolve_formal_arglist): Add prototype.
	* interface.c (check_dtio_interface1): Call it.
	* resolve.c (gfc_resolve_formal_arglist): Renamed from
	resolve_formal_arglist, removed static.
	(find_arglists, resolve_types): Update calls.

2020-04-02  Tobias Burnus  <tobias@codesourcery.com>

	PR fortran/93522
	* match.c (gfc_match_select_rank): Fix error cleanup.

2020-04-02  Steven G. Kargl  <kargl@gcc.gnu.org>

	PR fortran/93498
	* check.c (gfc_check_findloc):  If the kinds of the arguments
	differ goto label "incompat".

2020-04-02 Steven G. Kargl  <kargl@gcc.gnu.org>

	PR fortran/94030
	* resolve.c (resolve_equivalence): Correct formatting
	around the label "identical_types".  Instead of using
	gfc_resolve_array_spec use is_non_constants_shape_array
	to determine whether the array can be used in a in an
	equivalence statement.

2020-04-01  Mark Eggleston  <mark.eggleston@codethink.com>

	PR fortran/94386
	expr.c (simplify_parameter_variable): Restore code deleted
	in PR94246.

2020-03-28  Paul Thomas  <pault@gcc.gnu.org>

	PR fortran/94246
	* arith.c : Remove trailing white space.
	* expr.c (scalarize_intrinsic_call): Remove the error checking.
	Make a copy of the expression to be simplified and only replace
	the original if the simplification succeeds.

2020-03-28  Tobias Burnus  <tobias@codesourcery.com>

	PR fortran/94348
	* decl.c (gfc_match_submod_proc): Add result var to the
	proc's namespace.

2020-03-27  Tobias Burnus  <tobias@codesourcery.com>

	PR fortran/93957
	* trans-array.c (gfc_alloc_allocatable_for_assignment): Accept
	nonallocatable, nonpointer deferred-rank arrays.

2020-03-27  Tobias Burnus  <tobias@codesourcery.com>

	PR fortran/93363
	* resolve.c (resolve_assoc_var): Reject association to DT and
	function name.

2020-03-25  Steven G. Kargl  <kargl@gcc.gnu.org>

	PR fortran/93484
	* match.c (gfc_match_type_spec): Replace gfc_match_init_expr with
	gfc_match_expr. Return m if m is MATCH_NO or MATCH_ERROR.

2020-03-23  Mark Eggleston  <mark.eggleston@codethink.com>
	Steven G. Kargl  <kargl@gcc.gnu.org>

	PR fortran/93600
	* expr.c (simplify_parameter_variable): Check whether the ref
	chain contains INQUIRY_LEN or INQUIRY_KIND and set inquiry
	boolean. When an empty array has been identified and a new
	new EXPR_ARRAY expression has been created only return that
	expression if inquiry is not set. This allows the new
	expression to drop through to be simplified into a
	EXPR_CONSTANT representing %kind or %len.
	* matc.c (gfc_match_assignment): If lvalue doesn't have a
	symtree free both lvalue and rvalue expressions and return
	an error.
	* resolv.c (gfc_resolve_ref): Ensure that code to handle
	INQUIRY_LEN is only performed for arrays with deferred types.

2020-03-18  Jakub Jelinek  <jakub@redhat.com>

	* class.c (generate_finalization_wrapper): Fix up duplicated word
	issue in a comment.
	* trans-types.c (gfc_get_nodesc_array_type): Likewise.

2020-03-17  Jakub Jelinek  <jakub@redhat.com>

	* array.c (gfc_check_iter_variable): Fix up duplicated word issue
	in a comment.
	* arith.c (gfc_arith_concat): Likewise.
	* resolve.c (gfc_resolve_ref): Likewise.
	* frontend-passes.c (matmul_lhs_realloc): Likewise.
	* module.c (gfc_match_submodule, load_needed): Likewise.
	* trans-expr.c (gfc_init_se): Likewise.

2020-03-15  Lewis Hyatt  <lhyatt@gmail.com>

	* lang.opt: Avoid redundancy in the help text.

2020-03-12  Tobias Burnus  <tobias@codesourcery.com>

	PR middle-end/94120
	* openmp.c (gfc_match_oacc_declare): Accept function-result
	variables; reject variables declared in a different scoping unit.

2020-03-08  Paul Thomas  <pault@gcc.gnu.org>

	PR fortran/93581
	* resolve.c (gfc_resolve_ref): Modify array refs to be elements
	if the ref chain ends in INQUIRY_LEN.
	* trans-array.c (gfc_get_dataptr_offset): Provide the offsets
	for INQUIRY_RE and INQUIRY_IM.

2020-03-05 Steven G. Kargl  <kargl@gcc.gnu.org>

	PR fortran/93792
	* decl.c (variable_decl): If param and initializer check
	for BOZ, if found,  output an error, set m to MATCH_ERROR
	and goto cleanup.

2020-03-02  Andrew Benson  <abensonca@gmail.com>

	PR fortran/93486
	* module.c: Increase size of variables used to read module names
	when loading interfaces from module files to permit cases where
	the name is the concatenation of a module and submodule name.
	* gfortran.dg/pr93486.f90: New test.

2020-03-01  Paul Thomas  <pault@gcc.gnu.org>

	PR fortran/92976
	* match.c (select_type_set_tmp): If the selector array spec has
	explicit bounds, make the temporary's bounds deferred.

2020-03-01  Paul Thomas  <pault@gcc.gnu.org>

	PR fortran/92959
	* trans-intrinsic.c (gfc_conv_associated): Eliminate
	'nonzero_charlen' and move the chunk to evaluate zero character
	length until after the argument evaluation so that the string
	length can be used.

2020-02-28  Paul Thomas  <pault@gcc.gnu.org>

	PR fortran/92785
	* trans-expr.c (gfc_conv_intrinsic_to_class): Renormalise non-
	variable expressions to be unity lbound based.

2020-02-25  Steven G. Kargl  <kargl@gcc.gnu.org>

	* simplify.c (degrees_f): Remove unused code.

2020-02-25  Jakub Jelinek  <jakub@redhat.com>

	PR translation/93864
	* intrinsic.texi (CO_BROADCAST): Fix typo, paramter -> parameter.
	* trans-array.c (gfc_allocate_pdt_comp, gfc_deallocate_pdt_comp,
	gfc_check_pdt_dummy): Fix comment typo paramter -> parameter.

2020-02-24  Mark Eggleston  <mark.eggleston@codethink.com>
	    Steven G. Kargl  <kargl@gcc.gnu.org>

	PR fortran/93835
	* decl.c (gfc_match_data) : Check whether the data expression
	is a derived type and is a constructor. If a BOZ constant
	is encountered in the constructor output an error and return
	MATCH_ERROR.

2020-02-24  Steven G. Kargl  <kargl@gcc.gnu.org>

	PR fortran/93604
	* decl.c (gfc_match_data) : Check whether the data expression
	is a derived type and is a constructor. If a BOZ constant
	is encountered in the constructor output an error and return
	MATCH_ERROR.

2020-02-24  Tobias Burnus  <tobias@codesourcery.com>

	PR fortran/93552
	* match.c (match_exit_cycle): With OpenACC, check the kernels loop
	directive and tile clause as well.

2020-02-23  Thomas Koenig  <tkoenig@gcc.gnu.org>

	PR fortran/93889
	* interface.c (compare_parameter): Fix error message.

2020-02-23  Thomas Koenig  <tkoenig@gcc.gnu.org>

	PR fortran/93890
	* interface.c: Replace "can not" by "cannot" and remove trailing
	space.

2020-02-20  Tobias Burnus  <tobias@codesourcery.com>

	PR fortran/93825
	* openmp.c (resolve_oacc_loop_blocks): Move call to
	resolve_oacc_nested_loops from here ...
	(resolve_oacc_loop): ... to here.

2020-02-18  Mark Eggleston  <markeggleston@gcc.gnu.org>

	PR fortran/93714
	* expr.c (gfc_check_pointer_assign): Move check for
	matching character length to after checking the lvalue
	attributes for target or pointer.

2020-02-18  Steven G. Kargl  <kargl@gcc.gnu.org>

	PR fortran/93601
	* match.c (gfc_match_assignment) : Reject assignment if
	the lhs stype is BT_CLASS and the rhs type is BT_BOZ.

2020-02-18  Steven G. Kargl  <kargl@gcc.gnu.org>

	PR fortran/93603
	* match.c (gfc_match_associate) : If target expression
	has the type BT_BOZ output an error and goto
	assocListError.

2020-02-18  Steven G. Kargl  <kargl@gcc.gnu.org>
	    Mark Eggleston  <markeggleston@gcc.gnu.org>

	PR fortran/93580
	* primary.c (gfc_match_varspec): If the symbol following %
	is re or im and the primary expression type is not BT_COMPLEX
	issue an error. If the symbol is len and the primary
	expression type is not BT_CHARACTER is an error.

2020-02-10  Andrew Benson  <abensonca@gmail.com>

	PR fortran/83113
	* array.c: Do not attempt to set the array spec for a submodule
	function symbol (as it has already been set in the corresponding
	module procedure interface).
	* symbol.c: Do not reject duplicate POINTER, ALLOCATABLE, or
	DIMENSION attributes in declarations of a submodule function.
	* gfortran.h: Add a macro that tests for a module procedure in a
	submodule.
	* gfortran.dg/pr83113.f90: New test.

2020-02-03  Julian Brown  <julian@codesourcery.com>
	    Tobias Burnus  <tobias@codesourcery.com>

	* cpp.c (cpp_define_builtins): Update _OPENACC define to 201711.
	* intrinsic.texi: Update mentions of OpenACC version to 2.6.
	* gfortran.texi: Likewise. Remove experimental disclamer for OpenACC.
	* invoke.texi: Remove experimental disclamer for OpenACC.

2020-02-03  Tobias Burnus  <tobias@codesourcery.com>

	PR fortran/93541
	* intrinisic.texi (OpenMP Modules OMP_LIB and OMP_LIB_KINDS):
	Add undocumented parameters from omp_lib.f90.in.

2020-02-03  Tobias Burnus  <tobias@codesourcery.com>

	PR fortran/93427
	* resolve.c (resolve_assoc_var): Remove too strict check.
	* gfortran.dg/associate_51.f90: Update test case.

2020-02-01  Jakub Jelinek  <jakub@redhat.com>

	PR fortran/92305
	* trans-types.c (gfc_get_function_type): Also push boolean_type_node
	types for non-character scalar VALUE optional dummy arguments.
	* trans-decl.c (create_function_arglist): Skip those in
	hidden_typelist.  Formatting fix.

2020-01-31  Tobias Burnus  <tobias@codesourcery.com>

	PR fortran/93462
	* frontend-passes.c (gfc_code_walker): For EXEC_OACC_ATOMIC, set
	in_omp_atomic to true prevent front-end optimization.

2020-01-30  Bernhard Reutner-Fischer  <aldot@gcc.gnu.org>

	PR fortran/87103
	* expr.c (gfc_check_conformance): Check vsnprintf for truncation.
	* iresolve.c (gfc_get_string): Likewise.
	* symbol.c (gfc_new_symbol): Remove check for maximum symbol
	name length.  Remove redundant 0 setting of new calloc()ed
	gfc_symbol.

2020-01-30  Paul Thomas  <pault@gcc.gnu.org>
	    Jakub Jelinek  <jakub@redhat.com>

	PR fortran/92123
	* trans-decl.c (gfc_get_symbol_decl): Call gfc_defer_symbol_init for
	CFI descs.
	(gfc_build_builtin_function_decls): Use ".w." instead of ".ww" or ".wR"
	for gfor_fndecl_{cfi_to_gfc,gfc_to_cfi}.
	(convert_CFI_desc): Handle references to CFI descriptors.

2020-01-29  Jakub Jelinek  <jakub@redhat.com>

	PR fortran/93463
	* openmp.c (oacc_code_to_statement): Handle
	EXEC_OACC_{ROUTINE,UPDATE,WAIT,CACHE,{ENTER,EXIT}_DATA,DECLARE}.

2020-01-28  Andrew Benson  <abensonca@gmail.com>

	PR fortran/93461
	* trans.h: Increase GFC_MAX_MANGLED_SYMBOL_LEN to
	GFC_MAX_SYMBOL_LEN*3+5 to allow for inclusion of submodule name,
	plus the "." between module and submodule names.
	* gfortran.dg/pr93461.f90: New test.

2020-01-28  Andrew Benson  <abensonca@gmail.com>

	PR fortran/93473
	* parse.c: Increase length of char variables to allow them to hold
	a concatenated module + submodule name.
	* gfortran.dg/pr93473.f90: New test.

2020-01-28  Julian Brown  <julian@codesourcery.com>

	PR fortran/93025
	* openmp.c (resolve_omp_clauses): Check array references for contiguity.

2020-01-28  Julian Brown  <julian@codesourcery.com>

	* gfortran.h (gfc_symbol): Add comp_mark bitfield.
	* openmp.c (resolve_omp_clauses): Disallow mixed component and
	full-derived-type accesses to the same variable within a single
	directive.

2020-01-28  Tobias Burnus  <tobias@codesourcery.com>

	PR fortran/93464
	* openmp.c (gfc_omp_check_optional_argument): Avoid ICE when
	DECL_LANG_SPECIFIC and GFC_DESCRIPTOR_TYPE_P but not
	GFC_DECL_SAVED_DESCRIPTOR as for local allocatable character vars.

2020-01-28  Tobias Burnus  <tobias@codesourcery.com>

	* gfortran.texi (Runtime): Remove tailing '.' in @menu.

2020-01-27  Tobias Burnus  <tobias@codesourcery.com>

	PR fortran/85781
	* trans-expr.c (gfc_conv_substring): Handle non-ARRAY_TYPE strings
	of Bind(C) procedures.

2020-01-22  Jakub Jelinek  <jakub@redhat.com>

	* parse.c (parse_omp_structured_block): Handle ST_OMP_TARGET_PARALLEL.
	* trans-openmp.c (gfc_trans_omp_target)
	<case EXEC_OMP_TARGET_PARALLEL>: Call pushlevel first.

	PR fortran/93329
	* openmp.c (omp_code_to_statement): Handle remaining EXEC_OMP_*
	cases.

2020-01-21  Tobias Burnus  <tobias@codesourcery.com>

	PR fortran/93309
	* interface.c (gfc_procedure_use): Also check parent namespace for
	'implict none (external)'.
	* symbol.c (gfc_get_namespace): Don't set has_implicit_none_export
	to parent namespace's setting.

2020-01-19  Thomas König  <tkoenig@gcc.gnu.org>

	PR fortran/44960
	* primary.c (gfc_match_rvalue): Break after setting MATCH_ERROR.
	* resolve.c (resolve_function): Issue error when a
	function call contains a reference.

2020-01-17  Mark Eggleston  <mark.eggleston@codethink.com>

	PR fortran/93236
	* resolve.c (resolve_types): Declare boolean recursive and set with the
	value of the recursive attribute of namespace proc_name symbol
	structure if it exists.  Call gfc_save_all if both flag_automatic and
	recursive are false or ns->save_all is true.

2020-01-16  Tobias Burnus  <tobias@codesourcery.com>

	PR fortran/93253
	* check.c (gfc_invalid_boz): Mention -fallow-invalid-boz
	in the error message.
	* gfortran.texi (BOZ literal constants): List another missing
	extension and refer to -fallow-invalid-boz.
	* lang.opt (fallow-invalid-boz): Also mention 'X' in the help text
	as it is not covered by the previous wording.
	* primary.c (match_boz_constant): Tweak wording such that it is
	clear how to fix the nonstandard use.

2020-01-09  Thomas Koenig  <tkoenig@gcc.gnu.org>

	PR fortran/65428
	* array.c (empty_constructor): New variable.
	(empty_ts): New variable.
	(expand_constructor): Save typespec in empty_ts.
	Unset empty_constructor if there is an element.
	(gfc_expand_constructor): Initialize empty_constructor
	and empty_ts.  If there was no explicit constructor
	type and the constructor is empty, take the type from
	empty_ts.

2020-01-09  Tobias Burnus  <tobias@codesourcery.com>

	PR fortran/84135
	* array.c (gfc_set_array_spec): Fix shifting of codimensions
	when adding a dimension.
	* decl.c (merge_array_spec): Ditto. Fix using correct codimensions.

2020-01-07  Jakub Jelinek  <jakub@redhat.com>

	PR fortran/93162
	* trans-openmp.c (gfc_trans_omp_clauses): Check for REF_ARRAY type
	before testing u.ar.type == AR_FULL.

2020-01-04  Tobias Burnus  <tobias@codesourcery.com>

	PR fortran/91640
	* trans-expr.c (gfc_conv_procedure_call): Avoid copy-out for nonvariable
	arguments to contiguous dummy args.  Avoid re-checking whether fsym is
	NULL.

2020-01-03  Tobias Burnus  <tobias@codesourcery.com>

	* trans-openmp.c (gfc_omp_check_optional_argument): Always return a
	Boolean expression; handle unallocated/disassociated actual arguments
	as absent if passed to nonallocatable/nonpointer dummy array arguments.
	(gfc_build_cond_assign): Change to assume a Boolean expr not a pointer.
	(gfc_omp_finish_clause, gfc_trans_omp_clauses): Assign NULL to generated
	array-data variable if the argument is absent. Simplify code as
	'present' is now a Boolean expression.

2020-01-03  Tobias Burnus  <tobias@codesourcery.com>

	PR fortran/92994
	* primary.c (gfc_match_rvalue): Add some flavor checks
	gfc_matching_procptr_assignment.
	* resolve.c (resolve_assoc_var): Add more checks for invalid targets.

2020-01-02  Tobias Burnus  <tobias@codesourcery.com>

	PR fortran/68020
	* array.c (gfc_match_array_spec): Fix implied-type matching
	for rank > 2.

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

	PR fortran/93113
	* dependency.c (gfc_dep_resolver): Handle REF_INQUIRY in switch
	for ref types.

2020-01-01  Jakub Jelinek  <jakub@redhat.com>

	Update copyright years.

	* gfortranspec.c (lang_specific_driver): Update copyright notice
	dates.
	* gfc-internals.texi: Bump @copying's copyright year.
	* gfortran.texi: Ditto.
	* intrinsic.texi: Ditto.
	* invoke.texi: Ditto.

Copyright (C) 2020 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.
