2018-12-31  Thomas Koenig  <tkoenig@gcc.gnu.org>

	PR fortran/82995
	* trans-expr.c (gfc_conv_procedure_call):  Pass NULL pointer
	for missing optional dummy arguments for library routines.
	* trans-intinsic.c (conv_mask_condition): New function.
	(gfc_conv_intrinsic_arith): Detect and handle optional mask.
	(gfc_conv_intrinsic_minmaxloc): Likewise.
	(gfc_conv_intrinsic_findloc): Likewise.
	(gfc_conv_intrinsic_minmaxval): Likewise.
	(gfc_inline_intrinsic_function_p): Do not inline for rank > 1 if
	an optional mask is present.

2018-12-29  Steven G. Kargl  <kargl@gcc.gnu.org>

	* expr.c (external_spec_function): Add ieee_support_subnormal to list
	of IEEE inquiry functions.

2018-12-29  Steven G. Kargl  <kargl@gcc.gnu.org>

	* cpp.c (gfc_cpp_init):  Add pre-defined macros for INTEGER(1)
	INTEGER(2), INTEGER(8) and INTEGER(16) if supported.  Add pre-defined
	macros for REAL(10) and REAL(16) if available.
	* gfortran.texi: Document new macros.

2018-12-27  Steven G. Kargl  <kargl@gcc.gnu.org>

	PR fortran/81027
	* expr.c (gfc_check_init_expr): Distinguish assumed-shape versus
	deferred-shape dummy arguments in an error message.

2018-12-26  Harald Anlauf  <anlauf@gmx.de>

	PR fortran/85407
	* module.c (read_module): Convert assert to fatal error to give a
	sensible error message.

2018-12-24  Steven G. Kargl  <kargl@gcc.gnu.org>

	PR fortran/45513
	PR fortran/81509
	* check.c: Rename function gfc_check_iand to gfc_check_iand_ieor_ior.
	* check.c (boz_args_check): New function.  Check I and J not both BOZ.
	(gfc_check_dshift,gfc_check_iand_ieor_ior, gfc_check_ishft,
	 gfc_check_and, gfc_check_merge_bits): Use it.
	* check.c (gfc_check_iand_ieor_ior): Force conversion of BOZ to kind
	type of other agrument.  Remove silly GNU extension.
	(gfc_check_ieor, gfc_check_ior): Delete now unused functions.
	* intrinsic.c (add_functions): Use gfc_check_iand_ieor_ior. Wrap long
	line.
	* intrinsic.h: Rename gfc_check_iand to gfc_check_iand_ieor_ior.
	Delete prototype for bool gfc_check_ieor and gfc_check_ior
	* intrinsic.texi: Update documentation for boz-literal-constant.

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

	PR fortran/77703
	* resolve.c (get_temp_from_expr): Use the string length of
	constant character expressions.

2018-12-22  Steven G. Kargl  <kargl@gcc.gnu.org>

	PR fortran/88328
	* io.c (resolve_tag_format): Add error for zero-sized array.
	(gfc_resolve_dt): Manipulate gfc_current_locus to get sensible error
	message locus.

2018-12-22  Steven G . Kargl  <kargl@gcc.gnu.org>

	PR fortran/85798
	* decl.c (gfc_match_data): If a component of a derived type entity
	appears in data statement, check that does not have the allocatable
	attribute.

2018-12-22  Steven G. Kargl  <kargl@gcc.gnu.org>

	PR fortran/88169
	* module.c (mio_namelist): Remove an error condition/message that
	is contrary to the Fortran standard.

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

	PR fortran/85544
	* frontend-passes.c (optimize_power): Remove.
	(optimize_op): Remove call to optimize_power.
	* trans-expr.c (gfc_conv_power_op): Handle cases of 1**integer,
	(2|4|8|16) ** integer and (-1) ** integer.

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

	PR fortran/87881
	* expr.c (find_inquiry_ref): Loop through the inquiry refs in
	case there are two of them.
	(simplify_ref_chain): Return true after a successful call to
	find_inquiry_ref.

2018-12-19  Steven G. Kargl  <kargl@gcc.gnu.org>

	PR fortran/87992
	* resolve.c (resolve_fl_variable): Avoid a NULL pointer.

2018-12-16  Steven G. Kargl  <kargl@gcc.gnu.org>

	* resolve.c (resolve_transfer): Remove dead code.

2018-12-16  Steven G. Kargl  <kargl@gcc.gnu.org>

	PR fortran/88116
	PR fortran/88467
	* array.c (gfc_match_array_constructor): Check return value of
	gfc_convert_type().  Skip constructor elements with BT_UNKNOWN,
	which need to go through resolution.
	* intrinsic.c (gfc_convert_type_warn): Return early if the types
	match (i.e., no conversion is required).
	* simplify.c (gfc_convert_constant): Remove a gfc_internal_error,
	and return gfc_bad_expr.

2018-12-16  Steven G. Kargl  <kargl@gcc.gnu.org>

	* decl.c (variable_decl): Typo fixes in comment and error messsage.

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

	PF fortran/88364
	* trans-expr.c (gfc_conv_expr_reference): Do not add clobber if
	the expression contains a reference.

2018-12-15  Steven G. Kargl  <kargl@gcc.gnu.org>

	PR fortran/87944
	* decl.c (match_data_constant): Allow inquiry parameter as data
	constant in data statement.

2018-12-15  Steven G. Kargl  <kargl@gcc.gnu.org>

	PR fortran/88138
	* decl.c (variable_decl): Check that a derived isn't being assigned
	an incompatible entity in an initialization.

2018-12-12  Jakub Jelinek  <jakub@redhat.com>

	PR fortran/88463
	* trans-openmp.c (gfc_omp_predetermined_sharing): Handle TREE_READONLY
	VAR_DECLs with DECL_EXTERNAL like those with TREE_STATIC.

2018-12-11  Steven G. Kargl  <kargl@gcc.gnu.org>

	PR fortran/88155
	* primary.c (gfc_match_structure_constructor):  Set the locus of
	an expression to avoid a NULL pointer dereference.

2018-12-11  Steven G. Kargl  <kargl@gcc.gnu.org>

	PR fortran/88249
	* gfortran.h: Update prototype for gfc_resolve_filepos().
	* io.c (gfc_resolve_filepos): Check for UNIT number if ERR= is present.
	Use passed in locus for error message.
	* resolve.c (gfc_resolve_code): Pass locus in gfc_resolve_filepos()
	call.

2018-12-10  Steven G. Kargl  <kargl@gcc.gnu.org>

	PR fortran/97922
	* io.c (gfc_match_open): Additional checks on ASYNCHRONOUS.

2018-12-10  Steven G. Kargl  <kargl@gcc.gnu.org>

	PR fortran/88269
	* io.c (io_constraint): Update macro. If locus line buffer is NULL,
	use gfc_current_locus in error messages.
	(check_io_constraints): Catch missing IO UNIT in write and read
	statements.  io_constraint macro is incompatible here.

2018-12-09  Steven G. Kargl  <kargl@gcc.gnu.org>

	PR fortran/88205
	* io.c (gfc_match_open): Move NEWUNIT checks to after STATUS checks.

2018-12-09  Steven G. Kargl  <kargl@gcc.gnu.org>

	PR fortran/88206
	* match.c (gfc_match_type_spec): REAL can be an intrinsic function.

2018-12-09  Fritz Reese  <fritzoreese@gmail.com>

	PR fortran/88228
	* resolve.c (resolve_operator):  Do not call resolve_function.
	Break like other cases.

2018-12-09  Cesar Philippidis  <cesar@codesourcery.com>

	* trans-openmp.c (gfc_trans_oacc_combined_directive): Set the
	location of combined acc loops.

2018-12-09  Thomas Schwinge  <thomas@codesourcery.com>

	* openmp.c (resolve_oacc_loop_blocks): Remove checking of OpenACC
	loop clauses.

	PR fortran/88420
	* openmp.c (resolve_oacc_loop_blocks): Remove "Clause SEQ
	conflicts with INDEPENDENT" diagnostic.

2018-12-08  Steven G. Kargl  <kargl@gcc.gnu.org>

	PR fortran/88048
	* resolve.c (check_data_variable): Named constant cannot be a
	data object.

2018-12-08  Steven G. Kargl  <kargl@gcc.gnu.org>

	PR fortran/87945
	* decl.c (var_element): Inquiry parameters cannit be data objects.

2018-12-08  Steven G. Kargl  <kargl@gcc.gnu.org>

	PR fortran/88025
	* expr.c (gfc_apply_init):  Remove asserts that cannot trigger.
	Check for a NULL pointer.

2018-12-08  Steven G. Kargl  <kargl@gcc.gnu.org>

	PR fortran/88357
	* class.c (insert_component_ref): Check for NULL pointer and
	previous error message issued.
	* parse.c (parse_associate): Check for NULL pointer.
	* resolve.c (resolve_assoc_var): Check for NULL pointer.

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

	PR fortran/88377
	* trans-openmp.c (gfc_omp_clause_default_ctor,
	gfc_omp_clause_copy_ctor, gfc_omp_clause_assign_op,
	gfc_omp_clause_linear_ctor, gfc_omp_clause_dtor): Only consider
	GFC_DECL_GET_SCALAR_ALLOCATABLE vars as scalar allocatables if they
	have pointer type.

2018-12-03  Fritz Reese  <fritzoreese@gmail.com>
	    Mark Eggleston  <mark.eggleston@codethink.co.uk>

	PR fortran/87919
	* options.c (SET_FLAG, SET_BITFLAG, SET_BITFLAG2): New macros.
	(set_dec_flags): Set/unset DEC and std flags according to value.
	(post_dec_flags, set_init_local_zero): New functions.
	(gfc_init_options): Use set_init_local_zero and post_dec_flags.
	(gfc_handle_options) <case OPT_fcheck_array_temporaries>: Use
	SET_BITFLAG.
	<case OPT_finit_local_zero>: Use set_init_local_zero.
	<case OPT_fdec>: Pass value to set_dec_flags.
	<case OPT_fdec_structure>: Remove.

2018-11-30  Thomas Schwinge  <thomas@codesourcery.com>

	* gfortran.h (struct gfc_omp_clauses): Remove "wait".  Adjust all
	users.

	* openmp.c (gfc_match_omp_clauses): Support multiple OpenACC wait
	clauses.

2018-11-27  Martin Liska  <mliska@suse.cz>

	* decl.c (gfc_match_gcc_builtin): New function.
	* gfortran.h (struct vect_builtin_tuple): New.
	(gfc_adjust_builtins): Likewise.
	* lang-specs.h (TARGET_F951_OPTIONS): New.
	(F951_OPTIONS): Use it.
	* lang.opt: Add new option -fpre-include.
	* match.h (gfc_match_gcc_builtin): Declare new function.
	* parse.c (decode_gcc_attribute): Handle builtin.
	(parse_progunit): Call gfc_adjust_builtins.
	* scanner.c (gfc_new_file): Load pre-included header file
	when provided.
	* trans-intrinsic.c (add_simd_flag_for_built_in): New.
	(gfc_adjust_builtins): Likewise.

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

	PR fortran/88143
	* resolve.c (resolve_variable): Check for associate names with
	NULL target.

2018-11-23  Jakub Jelinek  <jakub@redhat.com>

	* lang.opt (fpad-source): New option.
	* scanner.c (load_line): Don't pad fixed form lines if
	!flag_pad_source.
	* invoke.texi (-fno-pad-source): Document.

2018-11-21  Jakub Jelinek  <jakub@redhat.com>

	* invoke.texi (-fdec-include): Document.

2018-11-21  Jakub Jelinek  <jakub@redhat.com>
	    Mark Eggleston  <mark.eggleston@codethink.com>

	* lang.opt (fdec-include): New option.
	* options.c (set_dec_flags): Set also flag_dec_include.
	* scanner.c (include_line): Change return type from bool to int.
	In fixed form allow spaces in between include keyword letters.
	For -fdec-include, allow in fixed form 0 in column 6.  With
	-fdec-include return -1 if the parsed line is not full include
	statement and it could be successfully completed on continuation
	lines.
	(include_stmt): New function.
	(load_file): Adjust include_line caller.  If it returns -1, keep
	trying include_stmt until it stops returning -1 whenever adding
	further line of input.

2018-11-18  Thomas Koenig  <tkoenig@gcc.gnu.org>

	PR fortran/88073
	* frontend-passes.c (combine_array_constructor): Do not do
	anything if in a WHERE statement.

2018-11-18  Thomas Koenig  <tkoenig@gcc.gnu.org>

	PR fortran/70260
	* expr.c (gfc_check_assign): Reject assigning to an external
	symbol.
	(gfc_check_pointer_assign): Add suppress_type_test
	argument. Insert line after if. A non-proc pointer can not point
	to a constant.  Only check types if suppress_type_test is false.
	* gfortran.h (gfc_check_pointer_assign): Add optional
	suppress_type_test argument.
	* resolve.c (gfc_resolve_code):  Move up gfc_check_pointer_assign
	and give it the extra argument.
	(resolve_fl_procedure): Set error on value for a function with
	an inizializer.

2018-11-15  David Malcolm  <dmalcolm@redhat.com>

	PR other/19165
	* error.c (gfc_diagnostic_finalizer): Add diagnostic_t param.

2018-11-13  David Malcolm  <dmalcolm@redhat.com>

	* cpp.c: Replace "source_location" with "location_t".
	* gfortran.h: Likewise.

2018-11-08  Jakub Jelinek  <jakub@redhat.com>

	* trans-openmp.c (gfc_trans_omp_clauses): Use
	OMP_CLAUSE_DEFAULTMAP_SET_KIND.
	(gfc_trans_omp_atomic): Set OMP_ATOMIC_MEMORY_ORDER
	rather than OMP_ATOMIC_SEQ_CST.
	(gfc_trans_omp_taskgroup): Build OMP_TASKGROUP using
	make_node instead of build1_loc.
	* types.def (BT_FN_VOID_BOOL, BT_FN_VOID_SIZE_SIZE_PTR,
	BT_FN_UINT_UINT_PTR_PTR, BT_FN_UINT_OMPFN_PTR_UINT_UINT,
	BT_FN_BOOL_UINT_LONGPTR_LONG_LONG_LONGPTR_LONGPTR_PTR_PTR,
	BT_FN_BOOL_UINT_ULLPTR_LONG_ULL_ULLPTR_ULLPTR_PTR_PTR,
	BT_FN_BOOL_LONG_LONG_LONG_LONG_LONG_LONGPTR_LONGPTR_PTR_PTR,
	BT_FN_BOOL_BOOL_ULL_ULL_ULL_LONG_ULL_ULLPTR_ULLPTR_PTR_PTR): New.
	(BT_FN_VOID_INT_OMPFN_SIZE_PTR_PTR_PTR_UINT_PTR_PTR): Formatting fix.

2018-11-02  Thomas Koenig  <tkoenig@gcc.gnu.org>

	PR fortran/46020
	* decl.c (verify_bind_c_sym): Remove unnecessary space
	in error message.

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

	PR fortran/87782
	* frontend-passes.c (constant_string_length): If there is a
	substring with a length which cannot be reduced to a constant,
	return NULL.

2018-11-01  Paul Thomas  <pault@gcc.gnu.org>

	PR fortran/40196
	* dependency.c (are_identical_variables): Return false if the
	inquiry refs are not the same.
	(gfc_ref_needs_temporary_p): Break on an inquiry ref.
	* dump_parse_tree.c (show_ref): Show the inquiry ref type.
	* expr.c (gfc_free_ref_list): Break on an inquiry ref.
	(gfc_copy_ref): Copy the inquiry ref types.
	(find_inquiry_ref): New function.
	(simplify_const_ref, simplify_ref_chain): Call it. Add new arg
	to simplify_ref_chain.
	(gfc_simplify_expr): Use the new arg in call to
	simplify_ref_chain.
	(gfc_get_full_arrayspec_from_expr, gfc_is_coarray): Break on
	inquiry ref.
	(gfc_traverse_expr): Return true for inquiry ref.
	* frontend-passes.c (gfc_expr_walker): Break on inquiry ref.
	* gfortran.h : Add enums and union member in gfc_ref to
	implement inquiry refs.
	* intrinsic.c : Fix white nois.
	* match.c (gfc_match_assignment): A constant lavlue is an
	error.
	* module.c : Add DECL_MIO_NAME for inquiry_type and the mstring
	for inquiry_types.
	(mio_ref): Handle inquiry refs.
	* primary.c (is_inquiry_ref): New function.
	(gfc_match_varspec): Handle inquiry refs calling new function.
	(gfc_variable_attr): Detect inquiry ref for disambiguation
	with components.
	(caf_variable_attr): Treat inquiry and substring refs in the
	same way.
	* resolve.c (find_array_spec): ditto.
	(gfc_resolve_substring_charlen): If there is neither a charlen
	ref not an inquiry ref, return.
	(resolve_ref): Handle inqiry refs as appropriate.
	(resolve_allocate_expr): Entities with an inquiry ref cannot be
	allocated.
	* simplify.c (simplify_bound, simplify_cobound): Punt on
	inquiry refs.
	* trans-array.c (get_array_ctor_var_strlen): Break on inquiry
	ref.
	*trans-expr.c (conv_inquiry): New function.
	(gfc_conv_variable): Retain the last typespec to pass to
	conv_inquiry on detecting an inquiry ref.

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

	PR fortran/46020
	* decl.c (verify_bind_c_sym): Improve error message.

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

	PR fortran/54613
	* gfortran.texi (File format of unformatted sequential files):
	Replace random comma with period.
	* intrinsic.texi (Intrinsic Procedures): Add FINDLOC to menu.
	(FINDLOC): Document.
	(MAXLOC): Add refrence to FINDLOC.
	(MINLOC): Likewise.

2018-10-31  Nathan Sidwell  <nathan@acm.org>

	* cpp.c (gfc_cpp_init): Adjust cpp_force_token_locations call.

2018-10-31  Martin Liska  <mliska@suse.cz>

	* trans-decl.c (struct module_hasher): Call htab_hash_string
	for s->name and not for s.

2018-10-30  Thomas Koenig  <tkoenig@gcc.gnu.org>

	PR fortran/85896
	* simplify.c (simplify_min_max): Do not convert the type of the
	return expression.

2017-10-28  Thomas Koenig  <tkoenig@gcc.gnu.org>

	PR fortran/54613
	* gfortran.h (gfc_isym_id): Add GFC_ISYM_FINDLOC.
	(gfc_check_f): Add f6fl field.
	(gfc_simplify_f): Add f6 field.
	(gfc_resolve_f): Likewise.
	(gfc_type_letter): Add optional logical_equas_int flag.
	* check.c (intrinsic_type_check): New function.
	(gfc_check_findloc): New function.
	* intrinsics.c (gfc_type_letter): If logical_equals_int is
	set, act accordingly.
	(add_sym_5ml):  Reformat comment.
	(add_sym_6fl): New function.
	(add_functions): Add findloc.
	(check_arglist): Add sixth argument, handle it.
	(resolve_intrinsic): Likewise.
	(check_specific): Handle findloc.
	* intrinsic.h (gfc_check_findloc): Add prototype.
	(gfc_simplify_findloc): Likewise.
	(gfc_resolve_findloc): Likewise.
	(MAX_INTRINSIC_ARGS): Adjust.
	* iresolve.c (gfc_resolve_findloc): New function.
	* simplify.c (gfc_simplify_minmaxloc): Make static.
	(simplify_findloc_to_scalar): New function.
	(simplify_findloc_nodim): New function.
	(simplify_findloc_to_array): New function.
	(gfc_simplify_findloc): New function.
	(gfc_conv_intrinsic_findloc): New function.
	(gfc_conv_intrinsic_function): Handle GFC_ISYM_FINDLOC.
	(gfc_is_intrinsic_libcall): Likewise.

2018-10-27  Thomas Koenig  <tkoenig@gcc.gnu.org>

	PR fortran/86907
	* frontend-passes.c (check_locus_code): Add information that
	warning about missing location information points to an
	inconsisten internal state.
	(check_locus_expr): Likewise.

2018-10-25  Jakub Jelinek  <jakub@redhat.com>

	PR fortran/87725
	* openmp.c (gfc_match_omp_clauses): Parse simd, monotonic and
	nonmonotonic modifiers regardless of if they have been parsed
	already or if the opposite one has.  Fix up check whether
	comma after modifier should be parsed.
	(resolve_omp_clauses): Diagnose schedule modifier restrictions.

2018-10-23  Paul Thomas  <pault@gcc.gnu.org>

	PR fortran/85603
	* frontend-passes.c (get_len_call): New function to generate a
	call to intrinsic LEN.
	(create_var): Use this to make length expressions for variable
	rhs string lengths.
	Clean up some white space issues.

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

	PR fortran/71880
	* trans-expr.c (gfc_trans_pointer_assignment): Set the string
	length for array valued deferred length lhs.

2018-10-18  Tobias Burnus  <burnus@net-b.de>

	PR fortran/87625
	* trans-array.c (gfc_is_reallocatable_lhs): Detect allocatable
	polymorphic arrays.

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

	PR fortran/58618
	* trans-stmt.c (trans_associate_var): All strings that return
	as pointer types can be assigned directly to the associate
	name so remove 'attr' and the condition that uses it.

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

	PR fortran/58618
	* trans-decl.c (gfc_get_symbol_decl): Deal correctly with the
	initialization with NULL() of a deferred length pointer.

2018-10-17  Tobias Burnus  <burnus@net-b.de>

	PR fortran/87632
	* resolve.c (resolve_select_type): Use correct variable.

2018-10-17  David Malcolm  <dmalcolm@redhat.com>

	* Make-lang.in (selftest-fortran): New.

2018-10-17  Paul Thomas  <pault@gcc.gnu.org>

	PR fortran/56386
	PR fortran/58906
	PR fortran/77385
	PR fortran/80260
	PR fortran/82077
	* resolve.c (resolve_variable): Fix up expressions with array
	associate names, where the parser did not detect that this is
	array and there was no array part_ref in the expression.

2018-10-16  Tobias Burnus  <burnus@net-b.de>

	PR fortran/67125
	* trans-array.c (gfc_array_init_size, gfc_array_allocate):
	Rename argument e3_is_array_constr to e3_has_nodescriptor
	and update comments.
	* trans-stmt.c (gfc_trans_allocate): Also fix lower bound
	to 1 for nonalloc/nonpointer func results/vars besides
	array constructors.

2018-10-16  Tobias Burnus  <burnus@net-b.de>

	PR fortran/87556
	* trans-stmt.c (form_team, change_team, sync_team):
	Don't ignore argse.pre/argse.post.

2018-10-15  Paul Thomas  <pault@gcc.gnu.org>
	Tobias Burnus  <burnus@gcc.gnu.org>

	PR fortran/87566
	* resolve.c (resolve_assoc_var): Add missing array spec for
	class associate names.
	(resolve_select_type): Handle case where last typed component
	of the selector has a different type to the expression.
	* trans-expr.c (gfc_find_and_cut_at_last_class_ref): Replace
	call to gfc_expr_to_initialize with call to gfc_copy_expr.
	(gfc_conv_class_to_class): Guard assignment to 'len' field
	against case where zero constant is supplied.

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

	PR fortran/87597
	* expr.c (gfc_simplify_expr): Avoid simplifying
	the 'array' argument to lbound/ubound/lcobound/
	ucobound.

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

	PR fortran/58787
	* decl.c (get_proc_name): Return with error before
	creating sym_tree.

2018-10-11  Tobias Burnus <burnus@net-b.de>

	Revert:
	2018-10-09  Tobias Burnus <burnus@net-b.de>

	PR fortran/83522
	* resolve.c (resolve_ref): Reject nonscalar
	substring references.

2018-10-09  David Malcolm  <dmalcolm@redhat.com>

	* cpp.c (gfc_cpp_init_0): Update for renamings.
	(cb_cpp_error): Rename to...
	(cb_cpp_diagnostic): ...this, converting level and reason to
	enums.

2018-10-09  Tobias Burnus <burnus@net-b.de>

	PR fortran/83522
	* resolve.c (resolve_ref): Reject nonscalar
	substring references.

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

	PR fortran/87151
	* trans-array.c (gfc_get_array_span): Deal with deferred char
	array components having a TYPE_MAX_VALUE of zero.
	(gfc_array_init_size): Use the hidden string length component
	to build the descriptor dtype.
	(gfc_array_allocate): Remove the erroneous replacement of the
	charlen backend decl with a temporary.
	(gfc_conv_expr_descriptor): Use the ss_info string length in
	the case of deferred character components.
	(gfc_alloc_allocatable_for_assignment): Actually compare the
	string lengths for deferred characters. Make sure that kind > 1
	is handled correctly. Set the span field of the descriptor.
	* trans-intrinsic.c (gfc_conv_intrinsic_len): Remove the stupid
	comment.

	PR fortran/80931
	* trans-array.c (gfc_array_allocate): Set the span field for
	variable length character arrays.

2018-10-08  Cesar Philippidis  <cesar@codesourcery.com>

	* expr.c (gfc_check_pointer_assign): Demote "Assignment to
	contiguous pointer from non-contiguous target" to a warning.

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

	PR fortran/86372
	* trans-stmt.c (trans_associate_var): Character associate names
	with variable string length do not have to be deferred length
	for the string length to be set, if variable.

2018-10-06  Thomas Koenig  <tkoenig@gcc.gnu.org>

	PR fortran/86111
	* gfortran.h (enum arith): Add ARITH_WRONGCONCAT.
	* arith.h (gfc_arith_error): Issue error for ARITH_WRONGCONCAT.
	(gfc_arith_concat):  If the types of op1 and op2 are not
	character of if their kinds do not match, issue ARITH_WRONGCONCAT.

2018-10-06  Paul Thomas  <pault@gcc.gnu.org>

	PR fortran/83999
	* resolve.c (resolve_fl_procedure): Include class functions in
	the test that elemental function results be scalar.

2018-10-06  Thomas Koenig  <tkoenig@gcc.gnu.org>

	PR fortran/84640
	* simplify.c (gfc_simplify_cshift): Extend size of hs_ex and ss_ex
	by one. Set extents one past the array boundaries to zero to avoid
	warning with instrumented compiler.
	(gfc_simplify_eoshift): Likewise, only for ss_ex.

2018-10-05  Paul Thomas  <pault@gcc.gnu.org>

	PR fortran/87487
	* trans-decl.c (gfc_get_symbol_decl): Make sure that deferred
	character length pointer initializer has the right type to fix
	problem with deferred_character_24.f90 on big endian.

2018-10-03  Jeff Law  <law@redhat.comg>

	* trans-types.c (get_typenode_from_name): Moved into gcc/tree.c.

2018-10-01  Paul Thomas  <pault@gcc.gnu.org>

	PR fortran/65677
	* trans-expr.c (gfc_trans_assignment_1): Set the 'identical'
	flag in the call to gfc_check_dependency.

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

	PR fortran/87359
	* trans-array.c (gfc_is_reallocatable_lhs): Correct the problem
	introduced by r264358, which prevented components of associate
	names from being reallocated on assignment.

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

	PR fortran/70752
	PR fortran/72709
	* trans-array.c (gfc_conv_scalarized_array_ref): If this is a
	deferred type and the info->descriptor is present, use the
	info->descriptor
	(gfc_conv_array_ref): Is the se expr is a descriptor type, pass
	it as 'decl' rather than the symbol backend_decl.
	(gfc_array_allocate): If the se string_length is a component
	reference, fix it and use it for the expression string length
	if the latter is not a variable type. If it is a variable do
	an assignment. Make use of component ref string lengths to set
	the descriptor 'span'.
	(gfc_conv_expr_descriptor): For pointer assignment, do not set
	the span field if gfc_get_array_span returns zero.
	* trans.c (get_array_span): If the upper bound a character type
	is zero, use the descriptor span if available.

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

	PR fortran/70149
	* trans-decl.c (gfc_get_symbol_decl): A deferred character
	length pointer that is initialized needs the string length to
	be initialized as well.

2018-09-29  Paul Thomas  <pault@gcc.gnu.org>

	PR fortran/65677
	* trans-expr.c (gfc_trans_assignment_1): If there is dependency
	fix the rse stringlength.

2018-09-25  Martin Liska  <mliska@suse.cz>

	PR fortran/87394
	* decl.c (add_hidden_procptr_result): Simplify condition
	as we are in branch witch 'case1 || case2'.

2018-09-25  Martin Liska  <mliska@suse.cz>

	* trans.c (remove_suffix): Remove
	unused function.

2018-09-24  Thomas Koenig  <tkoenig@gcc.gnu.org>

	PR fortran/87397
	* gfc_conv_procedure_call: Do not add clobber on INTENT(OUT)
	for variables in an associate statement.

2018-09-24  Bernhard Reuther-Fischer  <aldot@gcc.gnu.org>
	    Cesar Philippidis  <cesar@codesourcery.com>

	* openmp.c (resolve_oacc_loop_blocks):

2018-09-23  Thomas Koenig  <tkoenig@gcc.gnu.org>

	PR fortran/87397
	* gfc_conv_procedure_call: Do not add clobber on INTENT(OUT)
	for variables having the dimension attribute.

2018-09-23  Janne Blomqvist  <jb@gcc.gnu.org>

	* trans-expr.c (gfc_caf_get_image_index): Do array index
	calculations in gfc_array_index_type.
	* trans-intrinsic.c (conv_intrinsic_event_query): Likewise.
	* trans-stmt.c (gfc_trans_lock_unlock): Likewise.
	(gfc_trans_event_post_wait): Likewise.

2018-09-23  Thomas Koenig  <tkoenig@gcc.gnu.org>

	PR fortran/87395
	* gfc_conv_procedure_call: Reformat comments slightly. Do not add
	clobber on INTENT(OUT) for saved variables.

2018-09-22  Thomas Koenig  <tkoenig@gcc.gnu.org>

	PR fortran/41453
	* trans.h (gfc_conv_expr_reference): Add optional argument
	add_clobber to prototype.
	(gfc_conv_procedure_call):  Set add_clobber argument to
	gfc_conv_procedure_reference to true for scalar, INTENT(OUT),
	non-pointer, non-allocatable, non-dummy variables whose type
	is neither BT_CHARACTER, BT_DERIVED or BT_CLASS, but only if
	the procedure is not elemental.
	* trans-expr.c (gfc_conv_procedure_reference): Add clobber
	statement before call if add_clobber is set.

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

	PR fortran/85603
	* trans-array.c (gfc_alloc_allocatable_for_assignment): Test
	the charlen backend_decl before using the VAR_P macro.

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

	PR fortran/77325
	* trans-array.c (gfc_alloc_allocatable_for_assignment): If the
	rhs has a charlen expression, convert that and use it.
	* trans-expr.c (gfc_trans_assignment_1): The rse.pre for the
	assignment of deferred character array vars to a realocatable
	lhs should not be added to the exterior block since vector
	indices, for example, generate temporaries indexed within the
	loop.

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

	PR fortran/87359
	* trans-stmt.c (gfc_trans_allocate): Don't deallocate alloc
	components if must_finalize is set for expr3.

2018-09-21  Andrew Stubbs  <ams@codesourcery.com>
            Kwok Cheung Yeung  <kcy@codesourcery.com>

	* trans-expr.c (gfc_trans_structure_assign): Ensure that the first
	argument of a call to _gfortran_caf_register is of size_type_node.
	* trans-intrinsic.c (conv_intrinsic_event_query): Convert computed
	index to a size_type_node type.
	* trans-stmt.c (gfc_trans_event_post_wait): Likewise.

2018-09-20  Allan Sandfeld Jensen  <allan.jensen@qt.io>

	* gfortranspec.c (lang_specific_driver): Handle -r like -nostdlib.

2018-09-20  Janus Weil  <janus@gcc.gnu.org>

	* gfortran.h (gfc_str_startswith): New macro.
	* decl.c (variable_decl, gfc_match_end): Use it.
	* iresolve.c (is_trig_resolved): Ditto.
	* module.c (load_omp_udrs, read_module): Ditto.
	* options.c (gfc_handle_runtime_check_option): Ditto.
	* primary.c (match_arg_list_function): Ditto.
	* trans-decl.c (gfc_get_symbol_decl): Ditto.
	* trans-expr.c (gfc_conv_procedure_call): Ditto.
	* interface.c (dtio_op): Replace strncmp by strcmp.
	* resolve.c (resolve_actual_arglist, resolve_function): Ditto.
	* trans-expr.c (conv_arglist_function): Ditto.
	* trans-intrinsic.c (gfc_conv_ieee_arithmetic_function): Replace macro
	STARTS_WITH by gfc_str_startswith.

2018-09-20  Cesar Philippidis  <cesar@codesourcery.com>

	* dump-parse-tree.c (show_omp_clauses): Add missing omp list_types
	and reorder the switch cases to match the enum in gfortran.h.

2018-09-19  Paul Thomas  <pault@gcc.gnu.org>

	PR fortran/84109
	* trans-expr.c (gfc_trans_assignment_1): The rse.pre for the
	assignment of deferred character intrinsic elemental function
	results to a realocatable lhs must not be added to the exterior
	block if they are array valued but must go to the loop body.

2018-09-18  Thomas Koenig  <tkoenig@gcc.gnu.org>

	PR fortran/29550
	* gfortran.h (gfc_expr): Add external_blas flag.
	* frontend-passes.c (matrix_case): Add case A2TB2T.
	(optimize_namespace): Handle flag_external_blas by
	calling call_external_blas.
	(get_array_inq_function): Add argument okind. If
	it is nonzero, use it as the kind of argument
	to be used.
	(inline_limit_check): Remove m_case argument, add
	limit argument instead.  Remove assert about m_case.
	Set the limit for inlining from the limit argument.
	(matmul_lhs_realloc): Handle case A2TB2T.
	(inline_matmul_assign): Handle inline limit for other cases with
	two rank-two matrices.  Remove no-op calls to inline_limit_check.
	(call_external_blas): New function.
	* trans-intrinsic.c (gfc_conv_intrinsic_funcall): Do not add
	argument to external BLAS if external_blas is already set.

2018-09-18  Paul Thomas  <pault@gcc.gnu.org>

	PR fortran/87239
	* trans-expr.c (gfc_trans_assignment_1): The rse.pre for the
	assignment of deferred character elemental function results to
	a realocatable lhs must not be added to the exterior block but
	must go to the loop body.

2018-09-18  Paul Thomas  <pault@gcc.gnu.org>

	PR fortran/87336
	* trans-array.c (gfc_get_array_span): Try to get the element
	length of incomplete types. Return NULL_TREE otherwise.
	(gfc_conv_expr_descriptor): Only set the 'span' field if the
	above does not return NULL_TREE. Set 'span' field if possible
	for all new descriptors.

2018-09-17  Paul Thomas  <pault@gcc.gnu.org>

	PR fortran/64120
	* trans-decl.c (gfc_get_symbol_decl): Flag allocatable, scalar
	characters with a variable length expression for deferred init.
	(gfc_trans_deferred_vars): Perform the assignment for these
	symbols by calling gfc_conv_string_length.

2018-09-17  Paul Thomas  <pault@gcc.gnu.org>

	PR fortran/85954
	* resolve.c (resolve_assoc_var): If the target expression is a
	deferred charlen dummy and the associate name shares the
	charlen, generate a new one. Make sure that new charlens are in
	the namespace list so that they get cleaned up.
	* trans-array.c (gfc_is_reallocatable_lhs): Associate names are
	not reallocatable.
	* trans-decl.c (gfc_get_symbol_decl): Put deferred character
	length dummy and result arrays on the deferred initialization
	list so that the variable length arrays can be correctly dealt
	with.
	* trans-expr.c (gfc_conv_string_length): Return if 'expr' is
	NULL rather than ICEing..

2018-09-16  Janus Weil  <janus@gcc.gnu.org>

	PR fortran/86484
	PR fortran/84543
	* match.c (gfc_match_assignment): For a polymorphic assignment,
	make sure that the vtab for the rhs type is generated.

2018-09-16  Thomas Koenig  <tkoenig@gcc.gnu.org>

	PR fortran/37802
	* frontend-passes.c (B_ERROR): New macro for matmul bounds
	checking error messages.
	(C_ERROR): Likewise.
	(inline_matmul_assign): Reorganize bounds checking, use B_ERROR
	and C_ERROR macros.

2018-09-13  Bernd Edlinger  <bernd.edlinger@hotmail.de>

	* trans-array.c (gfc_conv_array_initializer): Remove excess precision
	from overlength string initializers.

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

	PR fortran/87284
	* trans-expr.c (gfc_trans_class_init_assign): Access to
	to array elements of the dynamic type requires that the array
	reference be added to the class expression and not the _data
	component, unlike scalar expressions.

2018-09-11  Janus Weil  <janus@gcc.gnu.org>

	PR fortran/87172
	* resolve.c (resolve_fl_derived): If a type has the 'use_assoc'
	attribute, then it was declared in another module, so there should be
	no error that it has not been declared.

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

	PR fortran/87277
	* expr.c (is_subref_array): Add the check of dimensionality for
	class, dummy, pointer arrays.

2018-09-11  Janus Weil  <janus@gcc.gnu.org>

	PR fortran/86830
	* expr.c (gfc_is_simply_contiguous): Handle type-bound procedure calls
	with non-polymorphic objects.

2018-09-10  Janus Weil  <janus@gcc.gnu.org>

	PR fortran/85395
	* decl.c (match_binding_attributes): Use correct default accessibility
	for procedure pointer components.

2018-09-03  Jerry DeLisle  <jvdelisle@gcc.gnu.org>

	* simplify.c (gfc_simplify_modulo): Re-arrange code to test whether
	'P' is zero and issue an error if it is.

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

	PR fortran/86328
	PR fortran/86760
	* trans-array.c (gfc_conv_scalarized_array_ref): Do not fix
	info->descriptor but pass it directly to gfc_build_array_ref.
	(gfc_conv_array_ref): Likewise for se->expr.
	* trans.c (gfc_build_array_ref): If 'decl' is a COMPONENT_REF
	obtain the span field directly from it.

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

	PR fortran/80477
	* trans-expr.c (gfc_conv_procedure_call): Allocatable class
	scalar results being passed to a derived type formal argument
	are finalized if possible. Otherwise, rely on existing code for
	deallocation. Make the deallocation of allocatable result
	components conditional on finalization not taking place. Make
	the freeing of data components after finalization conditional
	on the data being NULL.
	(gfc_trans_arrayfunc_assign): Change the gcc_assert to a
	condition to return NULL_TREE.
	(gfc_trans_assignment_1): If the assignment is class to class
	and the rhs expression must be finalized but the assignment
	is not marked as a polymorphic assignment, use the vptr copy
	function instead of gfc_trans_scalar_assign.

	PR fortran/86481
	* trans-expr.c (gfc_conv_expr_reference): Do not add the post
	block to the pre block if the expression is to be finalized.
	* trans-stmt.c (gfc_trans_allocate): If the expr3 must be
	finalized, load the post block into a finalization block and
	add it right at the end of the allocation block.

2018-08-27  David Malcolm  <dmalcolm@redhat.com>

	PR 87091
	* error.c (gfc_format_decoder): Update for conversion of
	show_caret_p to a tri-state.

2018-08-25  Janus Weil  <janus@gcc.gnu.org>

	PR fortran/86545
	* resolve.c (resolve_transfer): Correctly determine typespec for
	generic function calls, in order to throw a proper error.

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

	PR fortran/86837
	* frontend-passes.c (var_in_expr_callback): New function.
	(var_in_expr): New function.
	(traverse_io_block): Use var_in_expr instead of
	gfc_check_dependency for checking if the variable depends on the
	previous interators.

2018-08-23  Janne Blomqvist  <blomqvist.janne@gmail.com>

	* trans-intrinsic.c (gfc_conv_intrinsic_minmaxval): Delete
	HONOR_SIGNED_ZEROS checks.

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

	PR fortran/86863
	* resolve.c (resolve_typebound_call): If the TBP is not marked
	as a subroutine, check the specific symbol.

2018-08-22  Thomas Koenig  <tkoenig@gcc.gnu.org>

	* gfortran.texi: Mention that asynchronous I/O does
	not work on systems which lack condition variables, such
	as AIX.

2018-08-22  Janus Weil  <janus@gcc.gnu.org>

	PR fortran/86935
	* match.c (gfc_match_associate): Improve diagnostics for the ASSOCIATE
	statement.

2018-08-22  Andrew Benson  <abensonca@gmail.com>

	* module.c (load_generic_interfaces): Move call to find_symbol()
	so that only occurs if actually needed.

2018-08-22  Janus Weil  <janus@gcc.gnu.org>

	PR fortran/86888
	* decl.c (gfc_match_data_decl): Allow allocatable components of
	indirectly recursive type.
	* resolve.c (resolve_component): Remove two errors messages ...
	(resolve_fl_derived): ... and replace them by a new one.

2018-08-21  Janne Blomqvist  <jb@gcc.gnu.org>

	* trans-intrinsic.c (gfc_conv_intrinsic_minmax): Use
	MAX_EXPR/MIN_EXPR unconditionally for real arguments.
	* gfortran.texi (Compiler Characteristics): Document MAX/MIN
	behavior wrt NaN.

2018-08-21  Nicolas Koenig  <koenigni@gcc.gnu.org>
	Thomas Koenig <tkoenig@gcc.gnu.org>

	PR fortran/25829
	* gfortran.texi: Add description of asynchronous I/O.
	* trans-decl.c (gfc_finish_var_decl): Treat asynchronous variables
	as volatile.
	* trans-io.c (gfc_build_io_library_fndecls): Rename st_wait to
	st_wait_async and change argument spec from ".X" to ".w".
	(gfc_trans_wait): Pass ID argument via reference.

2018-08-16  Nathan Sidwell  <nathan@acm.org>

	* cpp.c (dump_macro): Use cpp_user_macro_p.

2018-08-14  Janus Weil  <janus@gcc.gnu.org>

	PR fortran/86116
	* interface.c (compare_type): Remove a CLASS/TYPE check.
	(compare_type_characteristics): New function that behaves like the old
	'compare_type'.
	(gfc_check_dummy_characteristics, gfc_check_result_characteristics):
	Call 'compare_type_characteristics' instead of 'compare_type'.

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

	PR fortran/66679
	* trans-intrinsic.c (gfc_conv_intrinsic_transfer): Class array
	elements are returned as references to the data element. Get
	the class expression by stripping back the references. Use this
	for the element size.

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

	PR fortran/86906
	* resolve.c (resolve_fl_variable_derived): Check if the derived
	type is use associated before checking for the host association
	error.

2018-08-10  Janus Weil  <janus@gcc.gnu.org>

	PR fortran/57160
	* invoke.texi (frontend-optimize): Mention short-circuiting.
	* options.c (gfc_post_options): Disable -ffrontend-optimize with -Og.
	* resolve.c (resolve_operator): Warn about short-circuiting only with
	-ffrontend-optimize.
	* trans-expr.c (gfc_conv_expr_op): Use short-circuiting operators only
	with -ffrontend-optimize. Without that flag, make sure that both
	operands are evaluated.

2018-08-08  Nathan Sidwell  <nathan@acm.org>

	* cpp.c (cb_file_change): Use linemap_included_from.

2018-08-07  Cesar Philippidis  <cesar@codesourcery.com>

	* trans-stmt.h: Remove stale reference to trans-openacc.c.

2018-08-04  Janus Weil  <janus@gcc.gnu.org>

	PR fortran/45521
	* interface.c (gfc_compare_interfaces): Apply additional
	distinguishability criteria of F08 to operator interfaces.

2018-07-31  Andre Vieira  <andre.simoesdiasvieira@arm.com>

	Revert 'AsyncI/O patch committed'
	2018-07-25  Nicolas Koenig  <koenigni@gcc.gnu.org>
		Thomas Koenig <tkoenig@gcc.gnu.org>

	PR fortran/25829
	* gfortran.texi: Add description of asynchronous I/O.
	* trans-decl.c (gfc_finish_var_decl): Treat asynchronous variables
	as volatile.
	* trans-io.c (gfc_build_io_library_fndecls): Rename st_wait to
	st_wait_async and change argument spec from ".X" to ".w".
	(gfc_trans_wait): Pass ID argument via reference.

2018-07-25  Nicolas Koenig  <koenigni@gcc.gnu.org>
	Thomas Koenig <tkoenig@gcc.gnu.org>

	PR fortran/25829
	* gfortran.texi: Add description of asynchronous I/O.
	* trans-decl.c (gfc_finish_var_decl): Treat asynchronous variables
	as volatile.
	* trans-io.c (gfc_build_io_library_fndecls): Rename st_wait to
	st_wait_async and change argument spec from ".X" to ".w".
	(gfc_trans_wait): Pass ID argument via reference.

2018-07-20  Martin Sebor  <msebor@redhat.com>

	PR middle-end/82063
	* gfortran.h (gfc_handle_option): Change function argument
	to HOST_WIDE_INT.
	* options.c (gfc_handle_option): Same.

2018-07-20  Andrew Benson  <abenson@carnegiescience.edu>

	* gfortran.h (gfc_symbol): Add pointer to next derived type.
	(gfc_dt_list, gfc_get_dt_list): Remove.
	(gfc_namespace): Replace gfc_dt_list with gfc_symbol.
	* parse.c (resolve_all_program_units): Replace gfc_free_dt_list() with
	simple nullification of gfc_derived_types.
	* resolve.c (resolve_global_procedure): Replace gfc_dt_list with
	gfc_symbol.
	(add_dt_to_dt_list): Change derived type linked list insertion to
	utilize dt_next pointers in gfc_symbol.
	* symbol.c (gfc_new_symbol, gfc_free_dt_list, gfc_symbol_done2)
	(get_iso_c_binding_dt, generate_isocbinding_symbol): Remove
	gfc_free_dt_list as gfc_dt_list is obsoleted. Change derived type
	linked list search/insertion to utilize dt_next pointers in gfc_symbol.
	* trans-types.c (gfc_get_derived_type): Change derived type linked
	list search to utilize dt_next pointers in gfc_symbol.

2018-07-19  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>

	* trans-intrinsic.c: (gfc_conv_intrinsic_minmax): Emit MIN_MAX_EXPR
	or IFN_FMIN/FMAX sequence to calculate the min/max when possible.

2018-07-18  Janus Weil  <janus@gcc.gnu.org>
	    Thomas Koenig  <tkoenig@gcc.gnu.org>

	PR fortran/85599
	* dump-parse-tree.c (show_attr): Add handling of implicit_pure.
	* frontend-passes.c (do_warn_function_elimination): Do not warn for
	pure functions.
	* gfortran.h: Add prototypes for gfc_pure_function and
	gfc_implicit_pure_function.
	* gfortran.texi: Add chapter on evaluation of logical expressions.
	* invoke.texi: Mention that -Wfunction-elimination is implied
	by -Wextra.
	* lang.opt: Make -Wextra imply -Wfunction-elimination.
	* resolve.c (pure_function): Rename to gfc_pure_function.
	(gfc_implicit_pure_function): New function.
	(check_pure_function): Use it here.
	(impure_function_callback): New function.
	(resolve_operator): Call it via gfc_expr_walker.

2018-07-16  Fritz Reese  <fritzoreese@gmail.com>

	PR fortran/83184
	* decl.c (match_old_style_init): Initialize locus of variable expr when
	creating a data variable.
	(match_clist_expr): Verify array is explicit shape/size before
	attempting to allocate constant array constructor.

2018-07-16  Fritz Reese  <fritzoreese@gmail.com>

	PR fortran/86417
	* module.c (mio_component): Set component->loc when loading from module.

2018-07-10  Jakub Jelinek  <jakub@redhat.com>

	PR fortran/86421
	* module.c (omp_declare_simd_clauses): Add LINEAR with _REF, _VAL and
	_UVAL suffixes.
	(mio_omp_declare_simd): Save and restore ref, val and uval modifiers
	on linear clauses.  Initialize n->where to gfc_current_locus.

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

	PR fortran/86408
	* resolve.c.c (resolve_contained_fntype): Reference to C418 is
	in F2008 and not F2003.
	(resolve_function): Ditto in error message. Also, exclude
	deferred character length results from the error.

2018-07-05  Fritz Reese  <fritzoreese@gmail.com>

	PR fortran/83183
	PR fortran/86325
	* expr.c (class_allocatable, class_pointer, comp_allocatable,
	comp_pointer): New helpers.
	(component_initializer): Generate EXPR_NULL for allocatable or pointer
	components. Do not generate initializers for components within BT_CLASS.
	Do not assign to comp->initializer.
	(gfc_generate_initializer): Use new helpers; move code to generate
	EXPR_NULL for class allocatable components into component_initializer().

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

	PR fortran/82009
	* trans-decl.c (gfc_process_block_locals): Delete assert and set
	saved_local_decls = NULL_TREE.

2018-07-02  Richard Biener  <rguenther@suse.de>

	PR lto/86321
	* trans-types.c (gfc_get_array_type_bounds): Unshare TYPE_FIELDs
	for the distinct type copy.

2018-07-02  Paul Thomas  <pault@gcc.gnu.org>

	PR fortran/82969
	PR fortran/86242
	* trans-array.c (structure_alloc_comps): Do not explicitly copy
	procedure pointer components.

2018-07-02  Paul Thomas  <pault@gcc.gnu.org>

	PR fortran/45305
	* expr.c : Add a prototype for scalarize_intrinsic_call.
	(gfc_simplify_expr): Use scalarize_intrinsic_call for elemental
	intrinsic function calls.
	(scalarize_intrinsic_call): Add 'init_flag' argument. Check if
	the expression or any of the actual argument expressions are
	NULL. Before calling gfc_check_init_expr, check 'init_flag'.
	Only simplify the scalarized expressions if there are no errors
	on the stack.
	(gfc_check_init_expr): Set 'init_flag' true in the call to
	scalarize_intrinsic_call.

2018-06-28  Fritz Reese  <fritzoreese@gmail.com>

	PR fortran/82865
	* decl.c (gfc_match_type): Refactor and check for PDT declarations.

2018-06-28  Martin Liska  <mliska@suse.cz>

	* gfortranspec.c: Include opt-suggestions.h.

2018-06-25  Fritz Reese  <fritzoreese@gmail.com>

	PR fortran/82972
	PR fortran/83088
	PR fortran/85851
	* expr.c (component_initializer): Assign init expr to c->initializer.
	(generate_isocbinding_initializer): New.
	(gfc_generate_initializer): Call generate_isocbinding_initializer to
	generate initializers for c_ptr and c_funptr with -finit-derived.

2018-06-23  Jerry DeLisle  <jvdelisle@gcc.gnu.org>

	PR fortran/85983
	* interface.c (check_dtio_interface1): Delete assert.

2018-06-22  Paul Thomas  <pault@gcc.gnu.org>
	    Rainer Orth  <ro@gcc.gnu.org>

	PR fortran/86281
	* resolve.c (resolve_contained_fntype): Check for the charlen
	before testing the length.

2018-06-21  Paul Thomas  <pault@gcc.gnu.org>

	PR fortran/49630
	* resolve.c (resolve_contained_fntype): Change standard ref.
	from F95 to F2003: C418. Correct a spelling error in a comment.
	It is an error for an abstract interface to have an assumed
	character length result.
	* trans-expr.c (gfc_conv_procedure_call): Likewise change the
	standard reference.

2018-06-21  Paul Thomas  <pault@gcc.gnu.org>

	PR fortran/83118
	* resolve.c (resolve_ordinary_assign): Force the creation of a
	vtable for assignment of non-polymorphic expressions to an
	unlimited polymorphic object.
	* trans-array.c (gfc_alloc_allocatable_for_assignment): Use the
	size of the rhs type for such assignments. Set the dtype, _len
	and vptrs appropriately.
	* trans-expr.c (gfc_trans_assignment): Force the use of the
	_copy function for these assignments.

2018-06-20  Chung-Lin Tang <cltang@codesourcery.com>
	    Thomas Schwinge <thomas@codesourcery.com>
	    Cesar Philippidis  <cesar@codesourcery.com>

	* gfortran.h (gfc_omp_clauses): Add unsigned if_present, finalize
	bitfields.
	* openmp.c (enum omp_mask2): Remove OMP_CLAUSE_PRESENT_OR_*. Add
	OMP_CLAUSE_{IF_PRESENT,FINALIZE}.
	(gfc_match_omp_clauses): Update handling of copy, copyin, copyout,
	create, deviceptr, present_of_*. Add support for finalize and
	if_present.
	(OACC_PARALLEL_CLAUSES): Remove PRESENT_OR_* clauses.
	(OACC_KERNELS_CLAUSES): Likewise.
	(OACC_DATA_CLAUSES): Likewise.
	(OACC_DECLARE_CLAUSES): Likewise.
	(OACC_UPDATE_CLAUSES): Add IF_PRESENT clause.
	(OACC_ENTER_DATA_CLAUSES): Remove PRESENT_OR_* clauses.
	(OACC_EXIT_DATA_CLAUSES): Add FINALIZE clause.
	(gfc_match_oacc_declare): Update to OpenACC 2.5 semantics.
	* trans-openmp.c (gfc_trans_omp_clauses): Add support for IF_PRESENT
	and FINALIZE.

2018-06-18  Eric Botcazou  <ebotcazou@adacore.com>

	* trans-decl.c (gfc_get_fake_result_decl): Revert latest change.

2018-06-17  Eric Botcazou  <ebotcazou@adacore.com>

	* trans-decl.c (nonlocal_dummy_decl_pset): Delete.
	(nonlocal_dummy_decls): Likewise.
	(gfc_nonlocal_dummy_array_decl): Likewise.
	(gfc_get_symbol_decl): Do not call gfc_nonlocal_dummy_array_decl.
	(gfc_get_fake_result_decl): Do not generate a new DECL if simply
	reusing the result of a recursive call.
	(gfc_generate_function_code): Do not create, insert and destroy
	nonlocal_dummy_decls.

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

	PR fortran/86110
	* array.c (gfc_resolve_character_array_constructor): Avoid NULL
	pointer dereference.

2018-06-13  Cesar Philippidis  <cesar@codesourcery.com>

	PR fortran/85703
	* parse.c (decode_oacc_directive): Set gfc_matching_function
	to false.
	(decode_omp_directive): Likewise.

2018-06-13  Cesar Philippidis  <cesar@codesourcery.com>

	PR fortran/85702
	* openmp.c (gfc_match_oacc_wait): Use %C to report error location.

2018-06-12  David Malcolm  <dmalcolm@redhat.com>

	PR other/69968
	* misc.c (gfc_closest_fuzzy_match): Update for renaming of
	levenshtein_distance to get_edit_distance.

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

	PR fortran/44491
	* expr.c (gfc_check_assign): Select non-NULL locus.

2018-06-11  Janus Weil  <janus@gcc.gnu.org>

	PR fortran/45521
	* interface.c (compare_ptr_alloc): New function.
	(generic_correspondence): Call it.

2018-06-10  Thomas Koenig  <tkoenig@gcc.gnu.org>

	* gfortran.h (gfc_expr): Add no_bounds_check field.
	* frontend-passes.c (get_array_inq_function): Set no_bounds_check
	on function and function argument.
	(inline_matmul_assign): Set no_bounds_check on zero expression
	and on lhs of zero expression.
	Also handle A1B2 case if realloc on assigment is active.
	* trans-array.c (gfc_conv_array_ref): Don't do range checking
	if expr has no_bounds_check set.
	(gfc_conv_expr_descriptor): Set no_bounds_check on ss if expr
	has it set.
	* trans-expr.c (gfc_trans_assignment_1): Set no_bounds_check
	on lss and lss if the corresponding expressions have it set.

2018-06-10  Dominique d'Humieres  <dominiq@gcc.gnu.org>

	PR fortran/79854
	* trans-const.c: Remove include "diagnostic-core.h".
	(gfc_conv_constant_to_tree): Replace fatal_error with gcc_unreachable.

2018-06-10  Janus Weil  <janus@gcc.gnu.org>

	PR fortran/85088
	* decl.c (match_attr_spec): Synchronize the DECL_* enum values with the
	INTENT_* values from the enum 'sym_intent'. Call 'match_intent_spec'
	and remove a TODO note.
	* gfortran.h: Add a comment to sym_intent.

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

	PR fortran/38351
	* resolve.c (resolve_operator): Provide better error message for
	derived type entity used in an binary intrinsic numeric operator.

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

	PR fortran/85138
	PR fortran/85996
	PR fortran/86051
	* decl.c (gfc_match_char_spec): Use private namespace in attempt to
	reduce a charlen to a constant.

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

	PR fortran/78278
	* data.c (gfc_assign_data_value): Re-arrange code to allow for
	an error for double initialization of CHARACTER entities.

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

	PR fortran/63514
	* symbol.c (gfc_add_volatile): Enforce F2008:C1282 and F2018:C1588.

2018-06-08  Thomas Koenig  <tkoenig@gcc.gnu.org>

	PR fortran/85631
	* trans.h (gfc_ss): Add field no_bounds_check.
	* trans-array.c (gfc_conv_ss_startstride): If flag_realloc_lhs and
	ss->no_bounds_check is set, do not use runtime checks.
	* trans-expr.c (gfc_trans_assignment_1): Set lss->no_bounds_check
	for reallocatable lhs.

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

	PR fortran/86059
	* array.c (match_array_cons_element): NULL() cannot be in an
	array constructor.

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

	PR fortran/78571
	* data.c (create_character_initializer): Return early if type is
	incompatible with CHARACTER.

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

	PR fortran/86045
	* simplify.c (gfc_simplify_mod): Re-arrange code to test whether
	'P' is zero and issue an error if it is.

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

	PR fortran/85641
	* frontend-passes.c (is_fe_temp): Add prototype.
	(realloc_string_callback): Early return for frontend-generated
	temporary.

2018-06-05  Cesar Philippidis  <cesar@codesourcery.com>

	PR fortran/85701

	* openmp.c (gfc_resolve_oacc_declare): Error on functions and
	subroutine data clause arguments.

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

	PR fortran/85981
	* resolve.c (resolve_allocate_deallocate): Check errmsg is default
	character kind.

2018-06-03  Paul Thomas  <pault@gcc.gnu.org>

	PR fortran/36497
	* decl.c (variable_decl): Use gfc_add_type for cray pointees.

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

	PR fortran/63570
	* check.c (gfc_check_random_init): New function. Check arguments of
	RANDOM_INIT.
	* gfortran.h (GFC_ISYM_RANDOM_INIT): New enum token.
	* intrinsic.c (add_subroutines): Add RANDOM_INIT to list of
	subroutines.
	(gfc_check_intrinsic_standard): Introduce Fortran 2018 check.
	* intrinsic.h: Add prototypes for gfc_check_random_init and
	gfc_resolve_random_init
	* intrinsic.texi: Document new intrinsic subprogram.
	* iresolve.c (gfc_resolve_random_init): Resolve routine name.
	* trans-decl.c: Declare gfor_fndecl_random_init
	* trans-intrinsic.c (conv_intrinsic_random_init): New function.
	Translate call to RANDOM_INIT.
	(gfc_conv_intrinsic_subroutine): Call it.
 	* trans.h: Declare gfor_fndecl_random_init

2018-05-27  Steven G. Kargl  <kargl@gcc.gnu.org>

	* decl.c (match_data_constant):  Fortran 2018 allows pointer
	initialization in a data statement.

2018-05-25  Janus Weil  <janus@gcc.gnu.org>

	PR fortran/85839
	* match.c (gfc_match_block_data): Call gfc_notify_std to warn about
	an obsolescent feature in Fortran 2018.
	(gfc_match_equivalence): Ditto.
	* resolve.c (resolve_common_blocks): Ditto.
	(gfc_resolve_forall): Ditto.
	* symbol.c (gfc_define_st_label): Ditto.

2018-05-24  Steven G. Kargl  <kargl@gcc.gnu.org>

	PR fortran/85543
	* resolve.c (update_current_proc_array_outer_dependency): Avoid NULL
	pointer dereference.

2018-05-24  Steven G. Kargl  <kargl@gcc.gnu.org>

	PR fortran/85780
	* resolve.c (resolve_fl_procedure): Avoid NULL dereference.

2018-05-24  Steven G. Kargl  <kargl@gcc.gnu.org>

	PR fortran/85779
	* decl.c (gfc_match_derived_decl): Fix NULL point dereference.

2018-05-24  Steven G. Kargl  <kargl@gcc.gnu.org>

	PR fortran/85895
	* resolve.c (resolve_sync): Resolve expression before checking for
	an error.

2018-05-22  Janus Weil  <janus@gcc.gnu.org>

	PR fortran/85841
	* libgfortran.h: Remove the macros GFC_STD_F2008_TS and
	GFC_STD_OPT_F08TS.
	* error.c (notify_std_msg): Remove GFC_STD_F2008_TS.
	* options.c (set_default_std_flags): Ditto.
	(gfc_handle_option): Make -std=f2008ts an alias for -std=f2018.
	* array.c (gfc_match_array_spec): Replace GFC_STD_F2008_TS by
	GFC_STD_F2018.
	* check.c (gfc_check_atomic, gfc_check_event_query,
	gfc_check_c_f_pointer, gfc_check_c_f_procpointer, gfc_check_c_funloc,
	gfc_check_c_loc, gfc_check_num_images, gfc_check_this_image): Ditto.
	* decl.c (gfc_verify_c_interop_param, gfc_match_decl_type_spec): Ditto.
	* intrinsic.c (add_functions, add_subroutines,
	gfc_check_intrinsic_standard): Ditto.
	* iso-c-binding.def: Ditto.
	* iso-fortran-env.def: Ditto.
	* match.c (gfc_match_event_post, gfc_match_event_wait,
	gfc_match_fail_image, gfc_match_form_team, gfc_match_change_team,
	gfc_match_end_team, gfc_match_sync_team): Ditto.
	* gfortran.texi: Remove mention of -std=f2008ts.
	Move TSs into F2018 section.
	* invoke.texi: Update documentation of -std=f2008ts.

2018-05-21  Janus Weil  <janus@gcc.gnu.org>

	PR fortran/85841
	* libgfortran.h: New macros GFC_STD_OPT_*.
	* error.c (notify_std_msg): New function.
	(gfc_notify_std): Adjust such that it can handle combinations of
	GFC_STD_* flags in the 'std' argument, not just a single one.
	* match.c (match_arithmetic_if, gfc_match_if): Reject arithmetic if
	in Fortran 2018.
	(gfc_match_stopcode): Use GFC_STD_OPT_* macros.
	* options.c (set_default_std_flags): Warn for F2018 deleted features
	by default.
	(gfc_handle_option): F2018 deleted features are allowed in earlier
	standards.
	* symbol.c (gfc_define_st_label, gfc_reference_st_label): Reject
	nonblock do constructs in Fortran 2018.

2018-05-20  Paul Thomas  <pault@gcc.gnu.org>

	PR fortran/80657
	* resolve.c (flag_fn_result_spec): Use the 'sym' argument to
	test for self refs to the function result in the character len
	expression. If a self reference is found, emit an error and
	return true.
	(resolve_fntype): Use the function symbol in the calls to the
	above.

2018-05-20  Paul Thomas  <pault@gcc.gnu.org>

	PR fortran/49636
	* trans-array.c (gfc_get_array_span): Renamed from
	'get_array_span'.
	(gfc_conv_expr_descriptor): Change references to above.
	* trans-array.h : Add prototype for 'gfc_get_array_span'.
	* trans-intrinsic.c (gfc_conv_associated): Add pre and post
	blocks for 'arg1'.
	* trans-stmt.c (trans_associate_var): If the associate name is
	a subref array pointer, use gfc_get_array_span for the span.

2018-05-20  Paul Thomas  <pault@gcc.gnu.org>

	PR fortran/82275
	* match.c (gfc_match_type_spec): Go through the array ref and
	decrement 'rank' for every dimension that is an element.

2018-05-19  Paul Thomas  <pault@gcc.gnu.org>

	PR fortran/82923
	PR fortran/66694
	PR fortran/82617
	* trans-array.c (gfc_alloc_allocatable_for_assignment): Set the
	charlen backend_decl of the rhs expr to ss->info->string_length
	so that the value in the current scope is used.

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

	PR fortran/63529
	* gfortran.texi: Clarify documentation for Cray pointer and
	assumed-sized array.

2018-05-13  Paul Thomas  <pault@gcc.gnu.org>

	PR fortran/85742
	* trans-types.c (gfc_get_dtype_rank_type): Reorder evaluation
	of 'size'. If the element type is a pointer use the size of the
	TREE_TYPE of the type, unless it is VOID_TYPE. In this latter
	case, set the size to zero.

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

	* gfortran.h: Remove prototype.
	* symbol.c (gfc_new_undo_checkpoint): Remove unused function.

2018-05-11  Steven G. Kargl  <kargl@gcc.gnu.org>

	PR fortran/85542
	* expr.c (check_inquiry): Avoid NULL pointer dereference.

2018-05-10  Steven G. Kargl  <kargl@gcc.gnu.org>

	PR fortran/85687
	* check.c (gfc_check_rank): Check that the argument is a data object.

2018-05-10  Steven G. Kargl  <kargl@gcc.gnu.org>

	PR fortran/85521
	* array.c (gfc_resolve_character_array_constructor): Substrings
	with upper bound smaller than lower bound are zero length strings.

2018-05-10  Steven G. Kargl  <kargl@gcc.gnu.org>

	PR fortran/70870
	* data.c (gfc_assign_data_value): Check that a data object does
	not also have default initialization.

2018-05-10  Marek Polacek  <polacek@redhat.com>

	PR fortran/85735
	* options.c (gfc_post_options): Set main_input_filename.

2018-05-10  Thomas Koenig  <tkoenig@gcc.gnu.org>

	PR fortran/54613
	* intrinsic.texi: Document BACK for MINLOC and MAXLOC.

2018-05-10  Paul Thomas  <pault@gcc.gnu.org>

	PR fortran/68846
	PR fortran/70864
	* resolve.c (get_temp_from_expr): The temporary must not have
	dummy or intent attributes.

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

	PR fortran/54613
	* check.c (gfc_check_minmaxloc): Remove error for BACK not being
	implemented.  Use gfc_logical_4_kind for BACK.
	* simplify.c (min_max_choose): Add optional argument back_val.
	Handle it.
	(simplify_minmaxloc_to_scalar): Add argument back_val. Pass
	back_val to min_max_choose.
	(simplify_minmaxloc_to_nodim): Likewise.
	(simplify_minmaxloc_to_array): Likewise.
	(gfc_simplify_minmaxloc): Add argument back, handle it.
	Pass back_val to specific simplification functions.
	(gfc_simplify_minloc): Remove ATTRIBUTE_UNUSED from argument back,
	pass it on to gfc_simplify_minmaxloc.
	(gfc_simplify_maxloc): Likewise.
	* trans-intrinsic.c (gfc_conv_intrinsic_minmaxloc): Adjust
	comment. If BACK is true, use greater or equal (or lesser or
	equal) insteal of greater (or lesser). Mark the condition of
	having found a value which exceeds the limit as unlikely.

2018-05-07  Jeff Law  <law@redhat.comg>

	* scanner.c (preprocessor_line): Call linemap_add after a line
	directive that changes the current filename.

2018-05-06  Andre Vehreschild  <vehre@gcc.gnu.org>

	PR fortran/85507
	* dependency.c (gfc_dep_resolver): Revert looking at coarray dimension
	introduced by r259385.
	* trans-intrinsic.c (conv_caf_send): Always report a dependency for
	same variables in coarray assignments.

2018-05-02  Tom de Vries  <tom@codesourcery.com>

	PR libgomp/82428
	* f95-lang.c (DEF_GOACC_BUILTIN_ONLY): Define.

2018-04-24  Steven G. Kargl  <kargl@gcc.gnu.org>

	PR fortran/85520
	* decl.c (gfc_match_char_spec): Check for negative length and set to 0.

2018-04-14  Andre Vehreschild  <vehre@gcc.gnu.org>

	PR fortran/81773
	PR fortran/83606
	* dependency.c (gfc_dep_resolver): Coarray indexes are to be ignored
	during dependency computation.  They define no data dependency.
	* trans-array.c (conv_array_index_offset): The stride can not be set
	here, prevent fail.
	* trans-intrinsic.c (conv_caf_send): Add creation of temporary array
	for caf_get's result and copying to the array with vectorial
	indexing.

2018-04-14  Thomas Koenig  <tkoenig@gcc.gnu.org>

	PR fortran/85387
	* frontend-passes.c (traverse_io_block): Check for start, end or
	stride being defined by an outer implied DO loop.

2018-04-12  Thomas Koenig  <tkoenig@gcc.gnu.org>

	PR fortran/83064
	PR testsuite/85346
	* trans-stmt.c (gfc_trans_forall_loop): Use annot_expr_ivdep_kind
	for annotation and remove dependence on -ftree-parallelize-loops.

2018-04-10  Jakub Jelinek  <jakub@redhat.com>

	PR fortran/85313
	* openmp.c (resolve_omp_do): Remove bogus if (j < i) break;.
	(resolve_oacc_nested_loops): Likewise.  Formatting fix.

2018-04-09  Thomas Koenig  <tkoenig@gcc.gnu.org>

	PR fortran/83064
	* trans-stmt.c (gfc_trans_forall_loop): Remove annotation for
	parallell processing of DO CONCURRENT -ftree-parallelize-loops
	is set.

2018-04-09  Thomas Koenig  <tkoenig@gcc.gnu.org>

	PR fortran/51260
	* resolve.c (resolve_variable): Simplify cases where access to a
	parameter array results in a single constant.

2018-04-02  Thomas Koenig  <tkoenig@gcc.gnu.org>

	PR fortran/85102
	* decl.c (variable_decl): If upper or lower bounds simplify
	to a constant, use that.

2018-03-30  Paul Thomas  <pault@gcc.gnu.org>

	PR fortran/84931
	* simplify.c (gfc_convert_constant): Handle case of array
	constructors within an array that has no iterator and improve
	the conciseness of this section of code.

2017-03-30  Thomas Koenig  <tkoenig@gcc.gnu.org>

	PR fortran/85111
	* array.c (gfc_resolve_character_array_constructor): Early
	exit for zero-size arrays.
	* simplify.c (simplify_transformation_to_array): Exit early
	if the result size is zero.
	(simplify_minmaxloc_to_array): Likewise.

2018-03-28  Mikael Morin  <mikael@gcc.gnu.org>

	PR fortran/69497
	* symbol.c (gfc_symbol_done_2): Start freeing namespaces
	from the root.
	(gfc_free_namespace): Restore assert (revert r258839).

2018-03-28  Jakub Jelinek  <jakub@redhat.com>

	* gfortran.h (gfc_dt): Rename default_exp field to dec_ext.
	* ioparm.def (IOPARM_dt_default_exp): Rename to ...
	(IOPARM_dt_dec_ext): ... this.
	* trans-io.c (build_dt): Adjust for default_exp renaming to
	dec_ext and IOPARM_dt_default_exp renaming to IOPARM_dt_dec_ext.
	* io.c (match_io): Likewise.

2018-03-27  Thomas Koenig  <tkoenig@gcc.gnu.org>

	PR fortran/85084
	* frontend-passes.c (gfc_run_passes): Do not run front-end
	optimizations if a previous error occurred.

2018-03-27  Thomas Koenig  <tkoenig@gcc.gnu.org>
	Harald Anlauf  <anlauf@gmx.de>

	PR fortran/85083
	* primary.c (gfc_convert_to_structure_constructor): Check
	conformance of argument types in structure constructor.

2018-03-26  Thomas Koenig  <tkoenig@gcc.gnu.org>

	PR fortran/66709
	* io.c: Include constructor.h.
	(resolve_tag_format): For a constant character array, concatenate
	into a single character expression.

2018-03-25  Seth Johnson <johnsonsr@ornl.gov>
	Dominique d'Humieres  <dominiq@gcc.gnu.org>

	PR fortran/84924
	* check.c (gfc_check_c_f_pointer): Allow scalar noninteroperable
	scalar derived type with -std=f2003 and -std=f2008.

2018-03-24  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
	    Dominique d'Humieres  <dominiq@gcc.gnu.org>

	PR fortran/69497
	* symbol.c (gfc_free_namespace): Delete the assert and only if
	refs count is equals zero, free the namespace. Otherwise,
	something is halfway and other errors will resound.

2018-03-24  Thomas Koenig  <tkoenig@gcc.gnu.org>

	PR fortran/70068
	* expr.c (find_substring_ref): Change types of start, end
	and length variables to gfc_charlen_t. Set length to zero
	for empty substring.

2018-03-24  Steven G. Kargl  <kargl@gcc.gnu.org>

	PR fortran/42651
	* decl.c (check_function_name): Improved error message
	(gfc_match_volatile, gfc_match_asynchronous) Use check_function_name.

2018-03-22  Steven G. Kargl  <kargl@gcc.gnu.org>

	PR fortran/84922
	* decl.c (get_proc_name): If the MODULE prefix appears in interface
	body, then it must appear on the contained subroutine or function.
	While here, fix nearby mis-indented code.

2018-03-21  Thomas Koenig  <tkoenig@gcc.gnu.org>
	Harald Anlauf  <anlauf@gmx.de>

	PR fortran/84957
	* trans-types.c (gfc_sym_type): Do not dereference NULL pointer.

2018-03-21  Janne Blomqvist  <jb@gcc.gnu.org>

	PR fortran/84615
	* trans-expr.c (gfc_conv_procedure_call): Convert charlen to
	gfc_charlen_type_node when calling procedure.

2018-03-20  Steven G. Kargl  <kargl@gcc.gnu.org>

	PR fortran/85001
	* interface.c (symbol_rank): Remove bogus null pointer check that
	crept in when translating a ternary operator into an if-else
	constructor.

2018-03-19  Thomas Koenig  <tkoenig@gcc.gnu.org>

	PR fortran/84931
	* simplify.c (gfc_convert_constant): Correctly handle iterators
	for type conversion.

2018-03-18  Steven G. Kargl  <kargl@gcc.gnu.org>

	PR fortran/77414
	* decl.c (get_proc_name):  Check for a subroutine re-defined in
	the contain portion of a subroutine.  Change language of existing
	error message to better describe the issue. While here fix whitespace
	issues.

2018-03-18  Steven G. Kargl  <kargl@gcc.gnu.org>

	PR fortran/65453
	* decl.c (get_proc_name): Catch clash between a procedure statement
	and a contained subprogram

2018-03-16  Steven G. Kargl  <kargl@gcc.gnu.org>

	PR fortran/69395
	* decl.c (merge_array_spec): Correct the error condition.

2018-03-15  Steven G. Kargl  <kargl@gcc.gnu.org>

	PR fortran/78741
	* decl.c (get_proc_name):  Check for clash of entry name with
	subroutine name.

2018-03-15  Steven G. Kargl  <kargl@gcc.gnu.org>

	PR fortran/69395
	* decl.c (merge_array_spec): Limit the merging to maximum allowed
	dimensions, and issue error message if limit is exceeded.

2018-03-13  Steven G. Kargl  <kargl@gcc.gnu.org>

	* check.c (gfc_check_kill_sub):  Remove check for INTEGER(4) or (8).
	* intrinsic.c (add_functions): Remove reference to gfc_resolve_kill.
	(add_subroutines): Remove reference to gfc_resolve_kill_sub.
	* intrinsic.texi: Update documentation.
	* iresolve.c (gfc_resolve_kill, gfc_resolve_kill_sub): Remove.
	* trans-decl.c (gfc_build_intrinsic_function_decls):  Add
	gfor_fndecl_kill and gfor_fndecl_kill_sub
	* trans-intrinsic.c (conv_intrinsic_kill, conv_intrinsic_kill_sub): new
	functions.
	(gfc_conv_intrinsic_function): Use conv_intrinsic_kill.
	(gfc_conv_intrinsic_subroutine): Use conv_intrinsic_kill_sub.
	* trans.h: Declare gfor_fndecl_kill and gfor_fndecl_kill_sub.

2018-03-11  Paul Thomas  <pault@gcc.gnu.org>

	PR fortran/84546
	* trans-array.c (structure_alloc_comps): Make sure that the
	vptr is copied and that the unlimited polymorphic _len is used
	to compute the size to be allocated.
	* trans-expr.c (gfc_get_class_array_ref): If unlimited, use the
	unlimited polymorphic _len for the offset to the element.
	(gfc_copy_class_to_class): Set the new 'unlimited' argument.
	* trans.h : Add the boolean 'unlimited' to the prototype.

2018-03-11  Steven G. Kargl  <kargl@gcc.gnu.org>

	PR fortran/83939
	* resolve.c (resolve_fl_procedure): Enforce F2018:C15100.

2018-03-11  Steven G. Kargl  <kargls@gcc.gnu.org>

	* check.c (gfc_check_kill):  Check pid and sig are scalar.
	(gfc_check_kill_sub): Restrict kind to 4 and 8.
	* intrinsic.c (add_function): Sort keyword list.  Add pid and sig
	keywords for KILL.  Remove redundant *back="back" in favor of the
	original *bck="back".
	(add_subroutines): Sort keyword list.  Add pid and sig keywords
	for KILL.
	* intrinsic.texi: Fix documentation to consistently use pid and sig.
	* iresolve.c (gfc_resolve_kill): Kind can only be 4 or 8.  Choose the
	correct function.
	(gfc_resolve_rename_sub): Add comment.

2018-03-11  Thomas Koenig  <tkoenig@gcc.gnu.org>

	PR fortran/66128
	* simplify.c (simplify_transformation): Return default result for
	empty array argument.
	(gfc_simplify_all): Remove special-case handling for zerosize.
	(gfc_simplify_any): Likewise.
	(gfc_simplify_count): Likewise.
	(gfc_simplify_iall): Likewise.
	(gfc_simplify_iany): Likewise.
	(gfc_simplify_iparity): Likewise.
	(gfc_simplify_minval): Likewise.
	(gfc_simplify_maxval): Likewise.
	(gfc_simplify_norm2): Likewise.
	(gfc_simplify_product): Likewise.
	(gfc_simplify_sum): Likewise.

2018-03-10  Steven G. Kargl  <kargl@gcc.gnu.org>

	PR fortran/84734
	* arith.c (check_result, eval_intrinsic):  If result overflows, pass
	the expression up the chain instead of a NULL pointer.

2018-03-07  Steven G. Kargl  <kargl@gcc.gnu.org>

	PR fortran/64124
	PR fortran/70409
	* decl.c (gfc_match_char_spec): Try to reduce a charlen to a constant.

2017-03-06  Thomas Koenig  <tkoenig@gcc.gnu.org>

	PR fortran/84697
	PR fortran/66128
	* expr.c (simplify_parameter_variable): If p is a size zero array
	and not an ARRAY_EXPR insert an empty array constructor and
	return.
	* gfortran.h: Add prototype for gfc_is_size_zero_array.
	* simplify.c (is_size_zero_array): Make non-static and rename into
	(gfc_is_size_zero_array):  Check for parameter arrays of zero
	size by comparing shape and absence of constructor.
	(gfc_simplify_all): Use gfc_is_size_zero_array instead of
	is_size_zero_array.
	(gfc_simplify_count): Likewise.
	(gfc_simplify_iall): Likewise.
	(gfc_simplify_iany): Likewise.
	(gfc_simplify_iparity): Likewise.
	(gfc_simplify_minval): Likewise.
	(gfc_simplify_maxval): Likewise.
	(gfc_simplify_product): Likewise.
	(gfc_simplify_sum): Likewise.

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

	PR fortran/56667
	* primary.c (match_sym_complex_part): Give the matcher for an implied
	do-loop a chance to run.

2018-03-03  Harald Anlauf  <anlauf@gmx.de>

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

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

	PR fortran/66128
	* simplify.c (is_size_zero_array): New function to check for size
	zero array.
	(gfc_simplify_all, gfc_simplify_any, gfc_simplify_count,
	 gfc_simplify_iall, gfc_simplify_iany, gfc_simplify_iparity,
	 gfc_simplify_minval, gfc_simplify_maxval, gfc_simplify_norm2,
	 gfc_simplify_product, gfc_simplify_sum): Use it, and implement
	requirements from F2018.

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

	PR fortran/51434
	* simplify.c (gfc_simplify_transfer): Resolve mold.

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

	PR fortran/80965
	* resolve.c (build_loc_call): Change symtree name from 'loc' to
	'_loc'.

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

	PR fortran/84219
	* target-memory.c (gfc_interpret_derived): Assert that BT_VOID
	components are caf tokens.
	(gfc_target_interpret_expr): Treat BT_VOID expressions as
	integers.

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

	PR fortran/84538
	* class.c (class_array_ref_detected): Remove the condition that
	there be no reference after the array reference.
	(find_intrinsic_vtab): Remove excess whitespace.
	* trans-array.c (gfc_conv_scalarized_array_ref): Rename 'tmp'
	as 'base and call build_class_array_ref earlier.

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

	PR fortran/83901
	* trans-stmt.c (trans_associate_var): Make sure that the se
	expression is a pointer type before converting it to the symbol
	backend_decl type.

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

	PR fortran/83633
	* decl.c (variable_decl): Check that an explicit-shape-array with
	nonconstant bounds is allowed.

2018-02-25  Paul Thomas  <pault@gcc.gnu.org>

	PR fortran/84523
	* trans-intrinsic.c (gfc_conv_allocated): If the argument se
	has a pre block, add it to the expression pre block.

2018-02-25  Thomas Koenig  <tkoenig@gcc.gnu.org>

	PR fortran/78238
	* gfortran.h (gfc_integer_4_kind): Define.
	* resolve.c (resolve_select_type): Make sure that the
	kind of c->high is gfc_integer_4_kind.

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

	PR fortran/30792
	* decl.c (gfc_match_data): Check for invalid substring in
	data-implied-do

2018-02-23  Steven G. Kargl  <kargl@gcc.gnu.org>

	* intrinsic.texi: Arguments to MATMUL cannot both be rank one.

2018-02-23  Steven G. Kargl  <kargl@gcc.gnu.org>

	PR fortran/84511
	* trans-io.c (transfer_expr): Deal with C_LOC in transfer statement.

2018-02-23  Steven G. Kargl  <kargl@gcc.gnu.org>

	PR fortran/84346
	* interface.c (compare_actual_formal): Issue error if keyword is
	used in a statement function.

2018-02-23  Jerry DeLisle  <jvdelisle@gcc.gnu.org>

	PR fortran/84506
	* trans-io.c (set_parameter_value_inquire): Adjust range check of
	negative unit values for kind=8 units to the kind=4 negative limit.

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

	PR fortran/83149
	* trans-types.c (gfc_sym_type): Test sym->ns->proc_name before
	accessing its components.

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

	PR fortran/83149
	* trans-decl.c (gfc_finish_var_decl): Test sym->ns->proc_name
	before accessing its components.

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

	PR fortran/83148
	* trans-const.c : Clean up some whitespace issues.
	* trans-expr.c (gfc_conv_initializer): If an iso_c_binding
	derived type has a kind value of zero, set it to the default
	integer kind.

2018-02-23  Janne Blomqvist  <jb@gcc.gnu.org>

	PR fortran/84519
	* trans-decl.c (gfc_build_builtin_function_decls): Add bool
	argument to stop and error stop decls.
	* trans-stmt.c (gfc_trans_stop): Add false value to argument
	lists.

2018-02-22  Janne Blomqvist  <jb@gcc.gnu.org>

	PR 78534
	PR 84509
	* trans-decl.c (gfc_build_builtin_function_decls): Pass
	gfc_int8_type node to pause_numeric, size_type_node to
	pause_string.
	* trans-stmt.c (gfc_trans_pause): Likewise.

2018-02-22  Janne Blomqvist  <jb@gcc.gnu.org>

	* gfortran.texi: Update Coarray API description.
	* trans-decl.c (gfc_build_builtin_function_decls): Use size_t for
	character lengths, int for exit codes.
	(generate_coarray_sym_init): Use size_t for character length.
	* trans-intrinsic.c (conv_co_collective): Likewise.
	* trans-stmt.c (gfc_trans_lock_unlock): Likewise.
	(gfc_trans_event_post_wait): Likewise.
	(gfc_trans_sync): Likewise.
	(gfc_trans_stop): Use size_t for character lengths, int for exit
	codes.

2018-02-20  Thomas Koenig  <tkoenig@gcc.gnu.org>

	PR fortran/48890
	PR fortran/83823
	* primary.c (gfc_convert_to_structure_constructor):
	For a constant string constructor, make sure the length
	is correct.

2018-02-19  Paul Thomas  <pault@gcc.gnu.org>

	PR fortran/83344
	PR fortran/83975
	* resolve.c (resolve_assoc_var): Rearrange the logic for the
	determination of the character length of associate names. If
	the associate name is missing a length expression or the length
	expression is not a constant and the target is not a variable,
	make the associate name allocatable and deferred length.
	* trans-decl.c (gfc_get_symbol_decl): Null the character length
	backend_decl for deferred length associate names that are not
	variables. Set 'length' to gfc_index_zero_node for character
	associate names, whose character length is a PARM_DECL.

2018-02-19  Thomas Koenig  <tkoenig@gcc.gnu.org>

	PR fortran/35339
	* frontend-passes.c (traverse_io_block): Remove workaround for
	PR 80945.

2018-02-19  Andre Vehreschild  <vehre@gcc.gnu.org>

	* gfortran.texi: Document additional src/dst_type.  Fix some typos.
	* trans-decl.c (gfc_build_builtin_function_decls): Declare the new
	argument of _caf_*_by_ref () with * e { get, send, sendget }.
	* trans-intrinsic.c (gfc_conv_intrinsic_caf_get): Add the type of the
	data referenced when generating a call to caf_get_by_ref ().
	(conv_caf_send): Same but for caf_send_by_ref () and
	caf_sendget_by_ref ().

2018-02-18  Jerry DeLisle  <jvdelisle@gcc.gnu.org>

	PR fortran/84389
	* io.c (check_format): Allow FMT_COLON.

2018-02-18  Paul Thomas  <pault@gcc.gnu.org>

	PR fortran/80945
	* trans-array.c (gfc_conv_expr_descriptor): Set parmtype from
	the typenode in the case of deferred length characters.

2018-02-17  Thomas Koenig  <tkoenig@gcc.gnu.org>

	PR fortran/84270
	* frontend-passes (scalarized_expr):  If the expression
	is an assumed size array, leave in the last reference
	and pass AR_SECTION instead of AR_FULL to gfc_resolve
	in order to avoid an error.

2018-02-17  Paul Thomas  <pault@gcc.gnu.org>

	PR fortran/84115
	* resolve.c (resolve_assoc_var): If a non-constant target expr.
	has no string length expression, make the associate variable
	into a deferred length, allocatable symbol.
	* trans-decl.c (gfc_is_reallocatable_lhs): Add and use a ptr to
	the symbol.
	* trans-stmt.c (trans_associate_var): Null and free scalar
	associate names that are allocatable. After assignment, remove
	the allocatable attribute to prevent reallocation.

2018-02-16  Jakub Jelinek  <jakub@redhat.com>

	PR fortran/84418
	* trans-openmp.c (gfc_trans_omp_clauses): For OMP_CLAUSE_LINEAR_REF
	kind set OMP_CLAUSE_LINEAR_STEP to TYPE_SIZE_UNIT times last_step.

2018-02-16  Dominique d'Humieres  <dominiq@gcc.gnu.org>

	PR fortran/84354
	* decl.c (gfc_get_pdt_instance): Replace '%qs' with %qs.

2018-02-15  Janus Weil  <janus@gcc.gnu.org>

	PR fortran/84409
	* interface.c (check_dtio_arg_TKR_intent): Add a check for character
	length.

2018-02-14  Janus Weil  <janus@gcc.gnu.org>

	PR fortran/84385
	* match.c (gfc_match_select_type): Fix check for selector in
	SELECT TYPE statement.

2018-02-13  Janus Weil  <janus@gcc.gnu.org>

	PR fortran/84313
	* symbol.c (check_conflict): Reject procedure pointers in common blocks.

2018-02-13  Alastair McKinstry  <alastair.mckinstry@sceal.ie>
	    Janne Blomqvist  <jb@gcc.gnu.org>

	* module.c (dump_module): Use lbasename to ensure that module
	files are reproducible.

2018-02-12  Janus Weil  <janus@gcc.gnu.org>

	PR fortran/84273
	* resolve.c (resolve_component): Fix checks of passed argument in
	procedure-pointer components.

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

	PR fortran/35299
	* resolve.c (resolve_formal_arglist): Update error message.

2018-02-11  Andre Vehreschild  <vehre@gcc.gnu.org>

	* gfortran.texi: Fix typos in documentation of caf_register ().
	* trans-array.c (structure_alloc_comps): Only register a component of
	a derived typed corray, not of an ultimate component coarray.

2018-02-11  Steven G. Kargl  <kargl@gcc.gnu.org>

	PR fortran/54223
	PR fortran/84276
	* interface.c (compare_actual_formal): Add in_statement_function
	bool parameter.  Skip check of INTENT attribute for statement
	functions.  Arguments to a statement function cannot be optional,
	issue error for missing argument.
	(gfc_procedure_use, gfc_ppc_use, gfc_arglist_matches_symbol): Use
	 in_statement_function.

2018-02-11  Paul Thomas  <pault@gcc.gnu.org>

	PR fortran/84074
	* trans-expr.c (gfc_conv_derived_to_class): Set the use_offset
	flag. If the is a vector subscript or the expression is not a
	variable, make the descriptor one-based.

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

	PR fortran/84141
	PR fortran/84155
	* trans-array.c (gfc_array_init_size): Revert the change made
	in revision 257356 setting the dtype.
	* trans-types.c (gfc_get_dtype): Do not use the cached dtype.
	Call gfc_get_dtype_rank_type every time.

	PR fortran/56691
	* trans-array.c (gfc_conv_expr_descriptor): If the source array
	is a descriptor type, use its offset, removing the condition
	that is be a class expression.

2018-02-07  Steven G. Kargl  <kargl@gcc.gnu.org>

	PR fortran/82994
	* match.c (gfc_match_deallocate): Check for NULL pointer.

2018-02-07  Thomas Koenig  <tkoenig@gcc.gnu.org>

	PR fortran/68560
	* trans-intrinsic.c (gfc_conv_intrinsic_shape): New function.
	(gfc_conv_intrinsic_function): Call it.

2018-02-07  Steven G. Kargl  <kargl@gcc.gnu.org>

	PR fortran/82049
	* match.c (gfc_match_type_spec): If the charlen is non-NULL, then
	try to resolve it.  While here return early if possible.

2018-02-04  Paul Thomas  <pault@gcc.gnu.org>

	PR fortran/84115
	* trans-decl.c (gfc_get_symbol_decl): Do not finish the decl of
	'length' if the symbol charlen backend_decl is an indirect ref.

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

	PR fortran/84141
	PR fortran/84155
	* trans-array.c (gfc_array_init_size): Instead of gfc_get_dtype
	use gfc_get_dtype_rank_type.

2018-02-01  Janne Blomqvist  <jb@gcc.gnu.org>

	PR 83975
	PR 83344
	* resolve.c (resolve_assoc_var): Generate an error if
	target length unknown.

2018-02-01  Janne Blomqvist  <jb@gcc.gnu.org>

	PR fortran/83705
	* simplify.c (gfc_simplify_repeat): Increase limit for deferring
	to runtime, print a warning message.

2018-01-31  Jakub Jelinek  <jakub@redhat.com>

	PR fortran/84116
	* openmp.c (gfc_match_omp_clauses): If all the linear
	gfc_match_omp_variable_list calls failed, don't gfc_free_omp_namelist
	nor set *head = NULL.  Formatting fixes.

2018-01-31  Paul Thomas  <pault@gcc.gnu.org>

	PR fortran/84088
	* trans-expr.c (gfc_conv_procedure_call): If the parm expr is
	an address expression passed to an assumed rank dummy, convert
	to an indirect reference.

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

	* dump-parse-tree.c (write_proc): Use sym_name (which may
	be sym->binding_label) instead of sym->name.

2018-01-31  Janne Blomqvist  <jb@gcc.gnu.org>

	* trans-const.c (gfc_conv_string_init): Use gfc_charlen_t instead
	of int for slen.

2018-01-31  Janne Blomqvist  <jb@gcc.gnu.org>

	PR fortran/78534
	* trans-expr.c (fill_with_spaces): Use memset instead of
	generating loop.
	(gfc_trans_string_copy): Improve opportunity to use builtins with
	constant lengths.

2018-01-30  Jakub Jelinek  <jakub@redhat.com>

	PR debug/84131
	* trans-array.c (gfc_get_descriptor_offsets_for_info): Set *data_off
	to DATA_FIELD's offset rather than OFFSET_FIELD's offset.

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

	PR fortran/84134
	* array.c (gfc_ref_dimen_size): Whitespace fixes.  If stride is
	zero, return false.

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

	PR fortran/84133
	* frontend-passes (matmul_to_var_expr): Return early if
	in association list.
	(inline_matmul_assign): Likewise.

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

	PR fortran/84073
	* resolve.c (resolve_component): Ensure BIND(C) character
	components have length one.
	(resolve_symbol): Likewise for variables.

2018-01-27  Jakub Jelinek  <jakub@redhat.com>

	PR fortran/84065
	* decl.c (add_init_expr_to_sym): Ignore initializers for too large
	lengths.

2018-01-26  Damian Rouson  <damian@sourceryinstitute.org>
	    Alessandro Fanfarillo  <fanfarillo.gcc@gmail.com>
	    Soren Rasmussen  <s.c.rasmussen@gmail.com>

	Partial support for Fortran 2018 teams features.

	* array.c (gfc_match_array_ref): add team attribute in coarray
	transfers.
	* check.c (gfc_check_get_team, gfc_check_team_number): add new
	functions for get_team and team_number.
	* dump-parse-tree.c (show_code_node): add new statements: form team,
	change team, end team, and sync team.
	* expr.c (gfc_find_team_co): add new function.
	* gfortran.h: add new statements.
	* intrinsic.c (add_functions): add get_team and team_number functions.
	* intrinsic.h: add get_team and team_number prototypes for check,
	simplify, and resolve.
	* iresolve.c (gfc_resolve_get_team, gfc_resolve_team_number): add new
	functions.
	* iso-fortran-env.def: add the team_type derived type.
	* match.c (gfc_match_if, gfc_match_form_team, gfc_match_team_number)
	(gfc_match_end_team, gfc_match_sync_team, gfc_match_change_team):
	add change team, end team, form team, sync team match and functions.
	* match.h: add new prototypes for change team, end team, form team,
	and sync team.
	* parse.c (decode_statement): add cases for change team, end team,
	form team, and sync team.
	* resolve.c: add cases for exec form team, change team, end team, and
	sync team.
	* simplify.c (gfc_simplify_get_team): add new function for get team.
	* st.c (gfc_free_statement): add cases exec for change team, end team,
	form team, sync team.
	* trans-decl.c (gfor_fndecl_caf_form_team)
	(gfor_fndecl_caf_change_team, gfor_fndecl_caf_end_team)
	(gfor_fndecl_caf_sync_team, gfor_fndecl_caf_get_team)
	(gfor_fndecl_caf_team_number): add functions and definitions.
	* trans-intrinsic.c (conv_caf_send, conv_intrinsic_team_number): add
	new function and team_type argument support.
	* trans-stmt.c (gfc_trans_form_team, gfc_trans_change_team)
	(gfc_trans_end_team, gfc_trans_sync_team): add new functions.
	* trans-stmt.h: add new prototypes.
	* trans-types.c (gfc_get_derived_type): check condition for team_type.
	* trans.c (trans_code): new exec cases for form team, change team, end
	team, and sync team.
	* trans.h: add new prototypes.

2018-01-26  Steven G. Kargl  <kargl@gcc.gnu.org>

	PR fortran/83998
	* simplify.c (compute_dot_product):  Initialize result to INTEGER(1) 0
	or .false.  The summation does the correct type conversion.
	(gfc_simplify_dot_product): Special case zero-sized arrays.

2018-25-01  Paul Thomas  <pault@gcc.gnu.org>

	PR fortran/37577
	* array.c (gfc_match_array_ref): If standard earlier than F2008
	it is an error if the reference dimension is greater than 7.
	libgfortran.h : Increase GFC_MAX_DIMENSIONS to 15. Change the
	dtype masks and shifts accordingly.
	* trans-array.c (gfc_conv_descriptor_dtype): Use the dtype
	type node to check the field.
	(gfc_conv_descriptor_dtype): Access the rank field of dtype.
	(duplicate_allocatable_coarray): Access the rank field of the
	dtype descriptor rather than the dtype itself.
	* trans-expr.c (get_scalar_to_descriptor_type): Store the type
	of 'scalar' on entry and use its TREE_TYPE if it is ARRAY_TYPE
	(ie. a character).
	(gfc_conv_procedure_call): Pass TREE_OPERAND (tmp,0) to
	get_scalar_to_descriptor_type if the actual expression is a
	constant.
	(gfc_trans_structure_assign): Assign the rank directly to the
	dtype rank field.
	* trans-intrinsic.c (gfc_conv_intrinsic_rank): Cast the result
	to default integer kind.
	(gfc_conv_intrinsic_sizeof): Obtain the element size from the
	'elem_len' field of the dtype.
	* trans-io.c (gfc_build_io_library_fndecls): Replace
	gfc_int4_type_node with dtype_type_node where necessary.
	(transfer_namelist_element): Use gfc_get_dtype_rank_type for
	scalars.
	* trans-types.c : Provide 'get_dtype_type_node' to acces the
	dtype_type_node and, if necessary, build it.
	The maximum size of an array element is now determined by the
	maximum value of size_t.
	Update the description of the array descriptor, including the
	type def for the dtype_type.
	(gfc_get_dtype_rank_type): Build a constructor for the dtype.
	Distinguish RECORD_TYPEs that are BT_DERIVED or BT_CLASS.
	(gfc_get_array_descriptor_base): Change the type of the dtype
	field to dtype_type_node.
	(gfc_get_array_descr_info): Get the offset to the rank field of
	the dtype.
	* trans-types.h : Add a prototype for 'get_dtype_type_node ()'.
	* trans.h : Define the indices of the dtype fields.

2018-23-01  Paul Thomas  <pault@gcc.gnu.org>

	PR fortran/83866
	* decl.c (gfc_match_derived_decl): If eos not matched, recover
	and emit error about garbage after declaration.

2018-23-01  Paul Thomas  <pault@gcc.gnu.org>

	PR fortran/83898
	* trans-stmt.c (trans_associate_var): Do not set cst_array_ctor
	for characters.

2018-01-22  Janne Blomqvist  <jb@gcc.gnu.org>

	PR 78534
	PR 83704
	* arith.c (gfc_arith_concat): Use size_t for string length.
	(gfc_compare_string): Likewise.
	(gfc_compare_with_Cstring): Likewise.
	* array.c (gfc_resolve_character_array_constructor): Use
	HOST_WIDE_INT, gfc_mpz_get_hwi.
	* check.c (gfc_check_fe_runtime_error): Use size_t.
	* data.c (create_character_initializer): Use HOST_WIDE_INT,
	gfc_extract_hwi.
	* decl.c (gfc_set_constant_character_len): Use gfc_charlen_t.
	(add_init_expr_to_sym): Use HOST_WIDE_INT.
	* expr.c (gfc_build_init_expr): Use HOST_WIDE_INT,
	gfc_extract_hwi.
	(gfc_apply_init): Likewise.
	* match.h (gfc_set_constant_character_len): Update prototype.
	* primary.c (match_string_constant): Use size_t.
	* resolve.c (resolve_ordinary_assign): Use HOST_WIDE_INT,
	gfc_mpz_get_hwi.
	* simplify.c (init_result_expr): Likewise.
	(gfc_simplify_len_trim): Use size_t.
	* target-memory.c (gfc_encode_character): Use size_t.
	(gfc_target_encode_expr): Use HOST_WIDE_INT, gfc_mpz_get_hwi.
	(interpret_array): Use size_t.
	(gfc_interpret_character): Likewise.
	* target-memory.h (gfc_encode_character): Update prototype.
	(gfc_interpret_character): Likewise.
	(gfc_target_interpret_expr): Likewise.
	* trans-const.c (gfc_build_string_const): Use size_t for length
	argument.
	(gfc_build_wide_string_const): Likewise.
	* trans-const.h (gfc_build_string_const): Likewise.
	(gfc_build_wide_string_const): Likewise.

2018-01-20  Steven G. Kargl  <kargl@gcc.gnu.org>

	PR fortran/83900
    * simplify.c (gfc_simplify_matmul): Set return type correctly.

2018-01-19  Steven G. Kargl  <kargl@gcc.gnu.org>

	PR fortran/83900
	* simplify.c (gfc_simplify_matmul): Delete bogus assertion.

2018-01-17  Harald Anlauf  <anlauf@gmx.de>

	PR fortran/83864
	* expr.c (add_init_expr_to_sym): Do not dereference NULL pointer.

2018-01-17  Harald Anlauf  <anlauf@gmx.de>

	PR fortran/83874
	* decl.c (add_init_expr_to_sym): Do not dereference NULL pointer.

2018-01-15  Louis Krupp  <louis.krupp@zoho.com>

	PR fortran/82257
	* interface.c (compare_rank): Don't try to retrieve CLASS_DATA
	from symbol marked unlimited polymorphic.
	* resolve.c (resolve_structure_cons): Likewise.
	* misc.c (gfc_typename): Don't dereference derived->components
	if it's NULL.

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

	PR fortran/54613
	* gfortran.h (gfc_check_f): Rename f4ml to f5ml.
	(gfc_logical_4_kind): New macro
	* intrinsic.h (gfc_simplify_minloc): Add a gfc_expr *argument.
	(gfc_simplify_maxloc): Likewise.
	(gfc_resolve_maxloc): Likewise.
	(gfc_resolve_minloc): Likewise.
	* check.c (gfc_check_minloc_maxloc): Add checking for "back"
	argument; also raise error if it is used (for now). Add it
	if it isn't present.
	* intrinsic.c (add_sym_4ml): Rename to
	(add_sym_5ml), adjust for extra argument.
	(add_functions): Add "back" constant. Adjust maxloc and minloc
	for back argument.
	* iresolve.c (gfc_resolve_maxloc): Add back argument. If back is
	not of gfc_logical_4_kind, convert.
	(gfc_resolve_minloc): Likewise.
	* simplify.c (gfc_simplify_minloc): Add back argument.
	(gfc_simplify_maxloc): Likewise.
	* trans-intinsic.c (gfc_conv_intrinsic_minmaxloc): Rename last
	argument to %VAL to ensure passing by value.
	(gfc_conv_intrinsic_function): Call gfc_conv_intrinsic_minmaxloc
	also for library calls.

2018-01-13  Jerry DeLisle  <jvdelisle@gcc.gnu.org>

	PR fortran/82007
	* resolve.c (resolve_transfer): Delete code looking for 'DT'
	format specifiers in format strings. Set formatted to true if a
	format string or format label is present.
	* trans-io.c (get_dtio_proc): Likewise. (transfer_expr): Fix
	whitespace.

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

	PR fortran/83744
	* dump-parse-tree.c (get_c_type_name): Remove extra line.
	Change for loop to use declaration in for loop. Handle BT_LOGICAL
	and BT_CHARACTER.
	(write_decl): Add where argument. Fix indentation. Replace
	assert with error message. Add typename to warning
	in comment.
	(write_type): Adjust locus to call of write_decl.
	(write_variable): Likewise.
	(write_proc): Likewise. Replace assert with error message.

2018-01-13  Paul Thomas  <pault@gcc.gnu.org>

	PR fortran/52162
	* trans-expr.c (gfc_trans_scalar_assign): Flag is_alloc_lhs if
	the rhs expression is neither an elemental nor a conversion
	function.

	PR fortran/83622
	* trans-array.c (is_pointer_array): Remove unconditional return
	of false for -fopenmp.

2018-01-13  Thomas Koenig  <tkoenig@gcc.gnu.org>
	<emsr@gcc.gnu.org>

	PR fortran/83803
	* dump-parse-tree.c (write_proc): Always emit closing parenthesis
	for functions.

2018-01-10  Steven G. Kargl  <kargl@gcc.gnu.org>

	PR fortran/82367
	* resolve.c (resolve_allocate_expr): Check for NULL pointer.

2018-01-10  Steven G. Kargl  <kargl@gcc.gnu.org>

	PR fortran/83093
	* resolve.c (resolve_charlen): Check the type of cl->length
	after resolution.

2018-01-10  Janne Blomqvist  <jb@gcc.gnu.org>

	PR fortran/83740
	* trans-array.c (gfc_trans_array_ctor_element): Fix formatting.

2018-01-10  Janne Blomqvist  <jb@gcc.gnu.org>

	PR fortran/83740
	* trans-array.c (gfc_trans_array_ctor_element): Convert RHS to the
	LHS type when assigning.

2018-01-09  Steven G. Kargl  <kargl@gcc.gnu.org>

	PR fortran/83742
	* expr.c (gfc_is_simply_contiguous): Check for NULL pointer.

2018-01-08  Steven G. Kargl  <kargl@gcc.gnu.org>

	* match.c (gfc_match_allocate): Check for NULL pointer.

2018-01-08  Steven G. Kargl  <kargl@gcc.gnu.org>

	* expr.c (gfc_check_pointer_assign): Fix typo in comment.

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

	PR fortran/83611
	* decl.c (gfc_get_pdt_instance): If parameterized arrays have
	an initializer, convert the kind parameters and add to the
	component if the instance.
	* trans-array.c (structure_alloc_comps): Add 'is_pdt_type' and
	use it with case COPY_ALLOC_COMP. Call 'duplicate_allocatable'
	for parameterized arrays. Clean up typos in comments. Convert
	parameterized array initializers and copy into the array.
	* trans-expr.c (gfc_trans_scalar_assign): Do a deep copy for
	parameterized types.
	*trans-stmt.c (trans_associate_var): Deallocate associate vars
	as necessary, when they are PDT function results for example.

	PR fortran/83731
	* trans-array.c (structure_alloc_comps): Only compare len parms
	when they are declared explicitly.

2018-01-06  Janne Blomqvist  <jb@gcc.gnu.org>

	PR fortran/50892
	* trans-expr.c (gfc_trans_pointer_assignment): fold_convert rhs to
	lhs type.

2018-01-05  Janne Blomqvist  <jb@gcc.gnu.org>

	PR fortran/78534
	PR fortran/66310
	* array.c (got_charlen): Use gfc_charlen_int_kind.
	* class.c (gfc_find_derived_vtab): Use gfc_size_kind instead of
	hardcoded kind.
	(find_intrinsic_vtab): Likewise.
	* decl.c (match_char_length): Use gfc_charlen_int_kind.
	(add_init_expr_to_sym): Use gfc_charlen_t and gfc_charlen_int_kind.
	(gfc_match_implicit): Use gfc_charlen_int_kind.
	* dump-parse-tree.c (show_char_const): Use gfc_charlen_t and size_t.
	(show_expr): Use HOST_WIDE_INT_PRINT_DEC.
	* expr.c (gfc_get_character_expr): Length parameter of type
	gfc_charlen_t.
	(gfc_get_int_expr): Value argument of type HOST_WIDE_INT.
	(gfc_extract_hwi): New function.
	(simplify_const_ref): Make string_len of type gfc_charlen_t.
	(gfc_simplify_expr): Use HOST_WIDE_INT for substring refs.
	* frontend-passes.c (optimize_trim): Use gfc_charlen_int_kind.
	* gfortran.h (gfc_mpz_get_hwi): New prototype.
	(gfc_mpz_set_hwi): Likewise.
	(gfc_charlen_t): New typedef.
	(gfc_expr): Use gfc_charlen_t for character lengths.
	(gfc_size_kind): New extern variable.
	(gfc_extract_hwi): New prototype.
	(gfc_get_character_expr): Use gfc_charlen_t for character length.
	(gfc_get_int_expr): Use HOST_WIDE_INT type for value argument.
	* gfortran.texi: Update description of hidden string length argument.
	* iresolve.c (check_charlen_present): Use gfc_charlen_int_kind.
	(gfc_resolve_char_achar): Likewise.
	(gfc_resolve_repeat): Pass string length directly without
	temporary, use gfc_charlen_int_kind.
	(gfc_resolve_transfer): Use gfc_charlen_int_kind.
	* match.c (select_intrinsic_set_tmp): Use HOST_WIDE_INT for charlen.
	* misc.c (gfc_mpz_get_hwi): New function.
	(gfc_mpz_set_hwi): New function.
	* module.c (atom_int): Change type from int to HOST_WIDE_INT.
	(parse_integer): Don't complain about large integers.
	(write_atom): Use HOST_WIDE_INT for integers.
	(mio_integer): Handle integer type mismatch.
	(mio_hwi): New function.
	(mio_intrinsic_op): Use HOST_WIDE_INT.
	(mio_array_ref): Likewise.
	(mio_expr): Likewise.
	* primary.c (match_substring): Use gfc_charlen_int_kind.
	* resolve.c (resolve_substring_charlen): Use gfc_charlen_int_kind.
	(resolve_character_operator): Likewise.
	(resolve_assoc_var): Likewise.
	(resolve_select_type): Use HOST_WIDE_INT for charlen, use snprintf.
	(resolve_charlen): Use mpz_sgn to determine sign.
	* simplify.c (gfc_simplify_repeat): Use HOST_WIDE_INT/gfc_charlen_t
	instead of long.
	* symbol.c (generate_isocbinding_symbol): Use gfc_charlen_int_kind.
	* target-memory.c (size_character): Length argument of type
	gfc_charlen_t.
	(gfc_encode_character): Likewise.
	(gfc_interpret_character): Use gfc_charlen_t.
	* target-memory.h (gfc_encode_character): Modify prototype.
	* trans-array.c (gfc_trans_array_ctor_element): Use existing type.
	(get_array_ctor_var_strlen): Use gfc_conv_mpz_to_tree_type.
	(trans_array_constructor): Use existing type.
	(get_array_charlen): Likewise.
	* trans-const.c (gfc_conv_mpz_to_tree_type): New function.
	* trans-const.h (gfc_conv_mpz_to_tree_type): New prototype.
	* trans-decl.c (gfc_trans_deferred_vars): Use existing type.
	(add_argument_checking): Likewise.
	* trans-expr.c (gfc_class_len_or_zero_get): Build const of type
	gfc_charlen_type_node.
	(gfc_conv_intrinsic_to_class): Use gfc_charlen_int_kind instead of
	4, fold_convert to correct type.
	(gfc_conv_class_to_class): Build const of type size_type_node for
	size.
	(gfc_copy_class_to_class): Likewise.
	(gfc_conv_string_length): Use same type in expression.
	(gfc_conv_substring): Likewise, use HOST_WIDE_INT for charlen.
	(gfc_conv_string_tmp): Make sure len is of the right type.
	(gfc_conv_concat_op): Use same type in expression.
	(gfc_conv_procedure_call): Likewise.
	(fill_with_spaces): Comment out memset() block due to spurious
	-Wstringop-overflow warnings.
	(gfc_trans_string_copy): Use gfc_charlen_type_node.
	(alloc_scalar_allocatable_for_subcomponent_assignment):
	fold_convert to right type.
	(gfc_trans_subcomponent_assign): Likewise.
	(trans_class_vptr_len_assignment): Build const of correct type.
	(gfc_trans_pointer_assignment): Likewise.
	(alloc_scalar_allocatable_for_assignment): fold_convert to right
	type in expr.
	(trans_class_assignment): Build const of correct type.
	* trans-intrinsic.c (gfc_conv_associated): Likewise.
	(gfc_conv_intrinsic_repeat): Do calculation in sizetype.
	* trans-io.c (gfc_build_io_library_fndecls): Use
	gfc_charlen_type_node for character lengths.
	(set_string): Convert to right type in assignment.
	* trans-stmt.c (gfc_trans_label_assign): Build const of
	gfc_charlen_type_node.
	(trans_associate_var): Likewise.
	(gfc_trans_character_select): Likewise.
	(gfc_trans_allocate): Likewise, don't typecast strlen result.
	(gfc_trans_deallocate): Don't typecast strlen result.
	* trans-types.c (gfc_size_kind): New variable.
	(gfc_init_types): Determine gfc_charlen_int_kind and gfc_size_kind
	from size_type_node.
	* trans-types.h: Fix comment.

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

	PR fortran/83683
	PR fortran/45689
	* check.c (gfc_check_eoshift): Check for string length and
	for conformance of boundary.
	* intrinsic.c (add_functions): Add gfc_simplify_eoshift.
	* intrinsic.h: Add prototype for gfc_simplify_eoshift.
	* simplify.c (gfc_simplify_eoshift): New function.

2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
	    Alan Hayward  <alan.hayward@arm.com>
	    David Sherwood  <david.sherwood@arm.com>

	* trans-types.c (gfc_type_for_mode): Handle MODE_VECTOR_BOOL.

2018-01-03  Richard Sandiford  <richard.sandiford@linaro.org>
	    Alan Hayward  <alan.hayward@arm.com>
	    David Sherwood  <david.sherwood@arm.com>

	* trans-types.c (gfc_type_for_mode): Check valid_vector_subparts_p.

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

	PR fortran/83664
	* check.c (gfc_check_eoshift): Error for missing boundary if array
	is not one of the standard types.

2018-01-03  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.

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

	PR fortran/45689
	* intrinsic.c (add_function): Add gfc_simplify_maxloc and
	gfc_simplify_minloc to maxloc and minloc, respectively.
	* intrinsic.h: Add prototypes for gfc_simplify_minloc
	and gfc_simplify_maxloc.
	* simplify.c (min_max_chose): Adjust prototype.  Modify function
	to have a return value which indicates if the extremum was found.
	(is_constant_array_expr): Fix typo in comment.
	(simplify_minmaxloc_to_scalar): New function.
	(simplify_minmaxloc_nodim): New function.
	(new_array): New function.
	(simplify_minmaxloc_to_array): New function.
	(gfc_simplify_minmaxloc): New function.
	(simplify_minloc): New function.
	(simplify_maxloc): New function.

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

	PR fortran/45689
	PR fortran/83650
	* simplify.c (gfc_simplify_cshift): Re-implement to allow full
	range of arguments.

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

	PR fortran/83076
	* resolve.c (resolve_fl_derived0): Add caf_token fields for
	allocatable and pointer scalars, when -fcoarray selected.
	* trans-types.c (gfc_copy_dt_decls_ifequal): Copy the token
	field as well as the backend_decl.
	(gfc_get_derived_type): Flag GFC_FCOARRAY_LIB for module
	derived types that are not vtypes. Components with caf_token
	attribute are pvoid types. For a component requiring it, find
	the caf_token field and have the component token field point to
	its backend_decl.

	PR fortran/83319
	*trans-types.c (gfc_get_array_descriptor_base): Add the token
	field to the descriptor even when codimen not set.

Copyright (C) 2018 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.
