2016-09-08 Steven G. Kargl PR fortran/69514 * array.c (gfc_match_array_constructor): If type-spec is present, walk the array constructor performing possible conversions for numeric types. 2016-09-08 Jakub Jelinek PR fortran/77500 * trans-openmp.c (gfc_trans_omp_atomic): For atomic write or swap, don't try to look through GFC_ISYM_CONVERSION. In other cases, check that value.function.isym is non-NULL before dereferencing it. 2016-09-04 Steven G. Kargl PR fortran/77391 * resolve.c (deferred_requirements): New function to check F2008:C402. (resolve_fl_variable,resolve_fl_parameter): Use it. 2016-09-04 Steven G. Kargl PR fortran/77460 * simplify.c (simplify_transformation_to_scalar): On error, result may be NULL, simply return. 2016-08-31 Jakub Jelinek PR fortran/77352 * trans-openmp.c (gfc_trans_omp_parallel_workshare): Always add a BIND_EXPR with BLOCK around what gfc_trans_omp_workshare returns. PR fortran/77374 * parse.c (parse_omp_oacc_atomic): Copy over cp->ext.omp_atomic to cp->block->ext.omp_atomic. * resolve.c (gfc_resolve_blocks): Assert block with one or two EXEC_ASSIGNs for EXEC_*_ATOMIC. * openmp.c (resolve_omp_atomic): Don't assert one or two EXEC_ASSIGNs, instead return quietly for EXEC_NOPs and otherwise error unexpected statements. 2016-08-31 Paul Thomas Jerry DeLisle PR fortran/48298 * decl.c (access_attr_decl): Include case INTERFACE_DTIO as appropriate. * gfortran.h : Add INTRINSIC_FORMATTED and INTRINSIC_UNFORMATTED to gfc_intrinsic_op. Add INTERFACE_DTIO to interface type. Add new enum 'dtio_codes'. Add bitfield 'has_dtio_procs' to symbol_attr. Add prototypes 'gfc_check_dtio_interfaces' and 'gfc_find_specific_dtio_proc'. * interface.c (dtio_op): New function. (gfc_match_generic_spec): Match generic DTIO interfaces. (gfc_match_interface): Treat DTIO interfaces in the same way as (gfc_current_interface_head): Add INTERFACE_DTIO appropriately. (check_dtio_arg_TKR_intent): New function. (check_dtio_interface1): New function. (gfc_check_dtio_interfaces): New function. (gfc_find_specific_dtio_proc): New function. * io.c : Add FMT_DT to format_token. (format_lex): Handle DTIO formatting. * match.c (gfc_op2string): Add DTIO operators. * resolve.c (derived_inaccessible): Ignore pointer components to enclosing derived type. (resolve_transfer): Resolve transfers that involve DTIO. procedures. Find the specific subroutine for the transfer and use its existence to over-ride some of the constraints on derived types. If the transfer is recursive, require that the subroutine be so qualified. (dtio_procs_present): New function. (resolve_fl_namelist): Remove inhibition of polymorphic objects in namelists if DTIO read and write subroutines exist. Likewise for derived types. (resolve_types): Invoke 'gfc_verify_dtio_procedures'. * symbol.c : Set 'dtio_procs' using 'minit'. * trans-decl.c (gfc_finish_var_decl): If a derived-type/class object is associated with DTIO procedures, make it TREE_STATIC. * trans-expr.c (gfc_get_vptr_from_expr): If the expression drills down to a PARM_DECL, extract the vptr correctly. (gfc_conv_derived_to_class): Check 'info' in the test for 'useflags'. If the se expression exists and is a pointer, use it as the class _data. * trans-io.c : Add IOCALL_X_DERIVED to iocall and the function prototype. Likewise for IOCALL_SET_NML_DTIO_VAL. (set_parameter_tree): Renamed from 'set_parameter_const', now returns void and has new tree argument. Calls modified to match new interface. (transfer_namelist_element): Transfer DTIO procedure pointer and vpointer using the new function IOCALL_SET_NML_DTIO_VAL. (get_dtio_proc): New function. (transfer_expr): Add new argument for the vptr field of class objects. Add the code to call the specific DTIO proc, convert derived types to class and call IOCALL_X_DERIVED. (trans_transfer): Add BT_CLASS to structures for treatment by the scalarizer. Obtain the vptr for the dynamic type, both for scalar and array transfer. 2016-08-30 Fritz Reese * gfortran.texi: Fix typo in STRUCTURE documentation. 2016-08-29 Fritz Reese Fix, reorganize, and clarify comparisons of anonymous types/components. PR fortran/77327 * interface.c (is_anonymous_component, is_anonymous_dt): New functions. * interface.c (compare_components, gfc_compare_derived_types): Use new functions. 2016-08-27 Steven G. Kargl PR fortran/77380 * dependency.c (gfc_check_dependency): Do not assert with -fcoarray=lib. 2016-08-27 Steven G. Kargl PR fortran/77372 simplify.c (simplify_ieee_selected_real_kind): Check for NULL pointers. 2016-08-25 Steven g. Kargl PR fortran/77351 * frontend-passes.c (remove_trim,combine_array_constructor): Check for NULL pointer. 2016-08-24 Paul Thomas PR fortran/77358 * resolve.c (resolve_fl_procedure): Use the correct gfc_charlen for deferred character length module procedures. 2016-08-23 Fritz Reese * decl.c (gfc_match_structure_decl): Make gfc_structure_id static. 2016-08-23 Fritz Reese * interface.c (compare_components): Fix typo in name check conditional. 2016-08-22 Steven G. Kargl Bud Davis PR fortran/60774 * parse.c (next_free,next_fixed): Issue error for statement label without a statement. 2016-08-22 Steven G. Kargl PR fortran/61318 * interface.c (compare_parameter): Use better locus for error message. 2016-08-22 Steven G. Kargl PR fortran/77260 * gcc/fortran/trans-decl.c (generate_local_decl): Suppress warning for unused variable if symbol is entry point. 2016-08-19 Joseph Myers PR c/32187 * trans-types.h (float128_type_node): Rename to gfc_float128_type_node. (complex_float128_type_node): Rename to gfc_complex_float128_type_node. * iso-c-binding.def, trans-intrinsic.c, trans-types.c: All users changed. 2016-08-19 Jakub Jelinek PR fortran/71014 * resolve.c (gfc_resolve): For ns->construct_entities don't save, clear and restore omp state around the resolving. PR fortran/69281 * trans-openmp.c (gfc_trans_omp_parallel, gfc_trans_omp_task, gfc_trans_omp_target): Wrap gfc_trans_omp_code result in an extra BIND_EXPR with its own forced BLOCK. 2016-08-19 Janne Blomqvist * intrinsics.texi (RANDOM_NUMBER): Remove reference to init_random_seed in example. (RANDOM_SEED): Remove warning to not set all seed values to 0. 2016-08-18 David Malcolm * error.c (gfc_diagnostic_starter): Update for change to diagnostic_show_locus. 2016-08-17 Jakub Jelinek PR fortran/67496 * trans-array.c (trans_array_constructor): Load expr->ts.u.cl->length_from_typespec only if expr->ts.type is BT_CHARACTER. 2016-08-15 Fritz Reese * lang.opt, invoke.texi: New flag -finit-derived. * gfortran.h (gfc_build_default_init_expr, gfc_apply_init, gfc_generate_initializer): New prototypes. * expr.c (gfc_build_default_init_expr, gfc_apply_init, component_initializer, gfc_generate_initializer): New functions. * expr.c (gfc_default_initializer): Wrap gfc_generate_initializer. * decl.c (build_struct): Move common code to gfc_apply_init. * resolve.c (can_generate_init): New function. * resolve.c (build_default_init_expr): Wrap gfc_build_default_init_expr. * resolve.c (apply_default_init, resolve_fl_variable_derived): Use gfc_generate_initializer. * trans-decl.c (gfc_generate_function_code): Use gfc_generate_initializer. 2016-08-15 Thomas Koenig * frontend-passes.c (create_var): Set ts.deferred for deferred-length character variables. * dump-parse-tree.c (show_typespec): Also dump is_c_interop, is_iso_c and deferred flags. 2016-08-15 Jakub Jelinek PR debug/71906 * trans-decl.c (gfc_get_symbol_decl): Call gfc_finish_var_decl for decl's character length before gfc_finish_var_decl on the decl itself. 2016-08-14 Chung-Lin Tang PR fortran/70598 * openmp.c (resolve_omp_clauses): Adjust use_device clause handling to only allow pointers and arrays. 2016-08-12 Marek Polacek PR c/7652 * decl.c (match_attr_spec): Add FALLTHRU. * primary.c (match_arg_list_function): Likewise. * resolve.c (resolve_operator): Adjust fall through comment. (fixup_charlen): Add FALLTHRU. (resolve_allocate_expr): Adjust fall through comment. * trans-array.c (gfc_conv_ss_startstride): Add FALLTHRU. * trans-intrinsic.c (gfc_conv_intrinsic_len): Adjust fall through comment. 2016-08-11 Janne Blomqvist * check.c (gfc_check_random_seed): Use new seed size in check. * intrinsic.texi (RANDOM_NUMBER): Updated documentation. (RANDOM_SEED): Likewise. 2016-08-08 Jakub Jelinek PR fortran/72716 * openmp.c (gfc_match_omp_declare_simd): Don't stick anything into BLOCK DATA ns, it will be rejected later. 2016-08-08 Andre Vehreschild PR fortran/71936 * trans-array.c (gfc_array_allocate): When SOURCE= is a function stick with the ref of the object to allocate. 2016-08-08 Andre Vehreschild PR fortran/72698 * trans-stmt.c (gfc_trans_allocate): Prevent generating code for copy of zero sized string and with it an ICE. 2016-08-08 Andre Vehreschild PR fortran/70524 * trans-array.c (gfc_trans_dummy_array_bias): Ensure that the location information is correctly set. * trans-decl.c (gfc_trans_deferred_vars): Set the locus of the current construct early. 2016-08-03 Fritz Reese * lang.opt: New option -fdec-intrinsic-ints. * options.c (set_dec_flags): Enable with -fdec. * gfortran.texi, invoke.texi, intrinsics.texi: Update documentation. * intrinsic.c (add_function, add_subroutine): New B/I/J/K intrinsic variants. 2016-07-30 Steven G. Kargl PR fortran/41922 * target-memory.c (expr_to_char): Pass in locus and use it in error messages. (gfc_merge_initializers): Ditto. * target-memory.h: Update prototype for gfc_merge_initializers (). * trans-common.c (get_init_field): Use the correct locus. 2016-07-30 Steven G. Kargl PR fortran/68566 * check.c (gfc_check_reshape): Check for constant expression. 2016-07-30 Steven G. Kargl PR fortran/69867 * decl.c (build_struct): Ensure that pointers point to something. 2016-07-30 Steven G. Kargl PR fortran/69962 * decl.c (gfc_set_constant_character_len): if expr is not constant issue an error instead of an ICE. 2016-07-30 Steven G. Kargl PR fortran/70006 * io.c (gfc_resolve_dt): Use correct locus. * resolve.c (resolve_branch): Ditto. 2016-07-30 Steven G. Kargl PR fortran/71730 * decl.c (char_len_param_value): Check return value of gfc_reduce_init_expr(). 2016-07-29 Dominik Vogt * trans-array.c (gfc_conv_array_ref): Fix allocation of diagnostic message (was too small). 2016-07-28 Steven G. Kargl PR fortran/71067 * decl.c (match_data_constant): On error, set 'result' to NULL. 2016-07-28 Steven G. Kargl PR fortran/71799 * resolve.c(gfc_resolve_iterator): Failure of type conversion need not ICE. 2016-07-28 Steven G. Kargl PR fortran/71859 * check.c(numeric_check): Prevent ICE. Issue error for invalid subroutine as an actual argument when numeric argument is expected. 2016-07-28 Steven G. Kargl Thomas Koenig PR fortran/71883 * frontend-passes.c (gfc_run_passes): Bail out if there are any errors. * error.c (gfc_internal_error): If there are any errors in the buffer, exit with EXIT_FAILURE. 2016-07-28 Renlin Li Revert 2016-07-19 Thomas Koenig PR fortran/71902 * dependency.c (gfc_check_dependency): Use dep_ref. Handle case if identical is true and two array element references differ. (gfc_dep_resovler): Move most of the code to dep_ref. (dep_ref): New function. * frontend-passes.c (realloc_string_callback): Name temporary variable "realloc_string". 2016-07-26 Steven G. Kargl PR fortran/71862 * class.c: Remove assert. Iterate over component only if non-null. 2016-07-22 Steven G. Kargl PR fortran/71935 * check.c (is_c_interoperable): Simplify right expression. 2016-07-22 Thomas Koenig PR fortran/71795 * frontend-passes.c (combine_array_constructor): Don't do anything if the expression is inside an array iterator. 2016-07-22 Andre Vehreschild * expr.c (gfc_find_stat_co): Fixed whitespaces. * gfortran.texi: Fixed typos and reversed meaning of caf_get()'s src and dst description. * trans-decl.c (gfc_build_builtin_function_decls): Fixed style and corrected fnspec for caf functions. * trans-intrinsic.c (gfc_conv_intrinsic_caf_get): Fixed style. (conv_caf_send): Dito. 2016-07-19 Thomas Koenig PR fortran/71902 * dependency.c (gfc_check_dependency): Use dep_ref. Handle case if identical is true and two array element references differ. (gfc_dep_resovler): Move most of the code to dep_ref. (dep_ref): New function. * frontend-passes.c (realloc_string_callback): Name temporary variable "realloc_string". 2016-07-17 Fritz Reese PR fortran/71523 * trans-decl.c (gfc_finish_var_decl): Replace automatic initializer with a static one. 2016-07-15 Jerry DeLisle Marco Restelli PR fortran/62125 * symbol.c (select_type_insert_tmp): Recursively call self to take care of nested select type. 2016-07-15 Cesar Philippidis * openmp.c (gfc_match_omp_clauses): Scan for clause vector_length before vector. 2016-07-15 Andre Vehreschild PR fortran/71807 * trans-expr.c (gfc_trans_subcomponent_assign): Special casing when allocatable component is set to null() in initializer. 2016-07-14 Steven G. Kargl PR fortran/29819 * parse.c (parse_contained): Use proper locus. 2016-07-14 Andre Vehreschild PR fortran/70842 * simplify.c (gfc_simplify_len): Only for unlimited polymorphic types replace the expression's _data ref with a _len ref. 2016-07-09 Thomas Koenig PR fortran/71783 * frontend-passes.c (create_var): Always allocate a charlen for character variables. 2016-07-08 Steven G. Kargl PR fortran/68426 * simplify (gfc_simplify_spread): Adjust locus. 2016-07-08 Cesar Philippidis * parse.c (matcha): Define. (decode_oacc_directive): Add spec_only local var and set it. Use matcha to parse acc directives except for routine and declare. Return ST_GET_FCN_CHARACTERISTICS if a non-declarative directive could be matched. 2016-07-08 Martin Liska * invoke.texi (Wundefined-do-loop): Enhance documentation. 2016-07-07 Jerry DeLisle PR fortran/71764 * trans-expr.c (gfc_trans_structure_assign): Remove assert. 2016-07-07 Martin Liska * lang.opt (Wundefined-do-loop): New option. * resolve.c (gfc_resolve_iterator): Warn for Wundefined-do-loop. (gfc_trans_simple_do): Generate a c-style loop. (gfc_trans_do): Fix GNU coding style. * invoke.texi: Mention the new warning. 2016-07-07 Martin Liska * trans-stmt.c (gfc_trans_do): Add expect builtin for DO loops with step bigger than +-1. 2016-07-05 Alessandro Fanfarillo * array.c (gfc_match_array_ref): Add parsing support for STAT= attribute in CAF reference. * expr.c (gfc_find_stat_co): New function that returns the STAT= assignment. * gfortran.h (gfc_array_ref): New member. * trans-decl.c (gfc_build_builtin_function_decls): new attribute for caf_get and caf_send functions. * trans-intrinsic.c (gfc_conv_intrinsic_caf_get): Passing the stat attribute to external function. (gfc_conv_intrinsic_caf_send): Ditto. 2016-07-05 Andre Vehreschild PR fortran/71623 * trans-stmt.c (gfc_trans_allocate): Add code of pre block of typespec in allocate to parent block. 2016-07-04 Jerry DeLisle PR fortran/66575 * decl.c (match_procedure_interface): Exit loop if procedure interface refers to itself. 2016-07-04 Jerry DeLisle Steven G. Kargl PR fortran/35849 * simplify.c (gfc_simplify_ishftc): Check that absolute value of SHIFT is less than or equal to SIZE. 2016-07-01 Jakub Jelinek PR fortran/71687 * f95-lang.c (struct binding_level): Add reversed field. (clear_binding_level): Adjust initializer. (getdecls): If reversed is clear, set it and nreverse the names chain before returning it. (poplevel): Use getdecls. * trans-decl.c (gfc_generate_function_code, gfc_process_block_locals): Use nreverse to pushdecl decls in the declaration order. PR fortran/71717 * trans-openmp.c (gfc_omp_privatize_by_reference): Return false for GFC_DECL_ASSOCIATE_VAR_P with POINTER_TYPE. 2016-06-30 Jakub Jelinek PR fortran/71704 * parse.c (matchs, matcho): Move right before decode_omp_directive. If spec_only, only gfc_match the keyword and if successful, goto do_spec_only. (matchds, matchdo): Define. (decode_omp_directive): Add spec_only local var and set it. Use matchds or matchdo macros instead of matchs or matcho for declare target, declare simd, declare reduction and threadprivate directives. Return ST_GET_FCN_CHARACTERISTICS if a non-declarative directive could be matched. (next_statement): For ST_GET_FCN_CHARACTERISTICS restore gfc_current_locus from old_locus even if there is no label. PR fortran/71705 * trans-openmp.c (gfc_trans_omp_clauses): Set TREE_ADDRESSABLE on decls in to/from clauses. 2016-06-29 Jerry DeLisle PR fortran/71686 * scanner.c (gfc_next_char_literal): Only decrement nextc if it is not NULL. 2016-06-29 Cesar Philippidis * openmp.c (match_oacc_clause_gang): Rename to ... (match_oacc_clause_gwv): this. Add support for OpenACC worker and vector clauses. (gfc_match_omp_clauses): Use match_oacc_clause_gwv for OMP_CLAUSE_{GANG,WORKER,VECTOR}. Propagate any MATCH_ERRORs for invalid OMP_CLAUSE_{ASYNC,WAIT,GANG,WORKER,VECTOR} clauses. (gfc_match_oacc_wait): Propagate MATCH_ERROR for invalid oacc_expr_lists. Adjust the first and needs_space arguments to gfc_match_omp_clauses. 2016-06-29 Richard Biener PR middle-end/71002 * f95-lang.c (LANG_HOOKS_GET_ALIAS_SET): Remove (un-)define. (gfc_get_alias_set): Remove. 2016-06-25 Jerry DeLisle PR fortran/71649 * module.c (create_intrinsic_function): Check for NULL values and return after giving error. 2016-06-21 Michael Meissner * trans-types.c (gfc_build_complex_type): Move setting complex MODE to layout_type, instead of setting it ahead of time by the caller. 2016-06-21 Tobias Burnus PR fortran/71068 * resolve.c (resolve_function): Don't resolve caf_get/caf_send. (check_data_variable): Strip-off caf_get before checking. 2016-06-20 Tobias Burnus PR fortran/71194 * trans-expr.c (gfc_trans_pointer_assignment): Correctly handle RHS pointer functions. 2016-06-19 Bernhard Reutner-Fischer * class.c (gfc_add_class_array_ref): Call gfc_add_data_component() instead of gfc_add_component_ref(). (gfc_get_len_component): Call gfc_add_len_component() instead of gfc_add_component_ref(). * trans-intrinsic.c (gfc_conv_intrinsic_loc): Call gfc_add_data_component() instead of gfc_add_component_ref(). * trans.c (gfc_add_finalizer_call): Call gfc_add_final_component() and gfc_add_size_component() instead of gfc_add_component_ref. 2016-06-18 Bernhard Reutner-Fischer * trans-types.c (gfc_typenode_for_spec): Commentary typo fix. 2016-06-17 Cesar Philippidis * openmp.c (match_acc): New generic function to parse OpenACC directives. (gfc_match_oacc_parallel_loop): Use it. (gfc_match_oacc_parallel): Likewise. (gfc_match_oacc_kernels_loop): Likewise. (gfc_match_oacc_kernels): Likewise. (gfc_match_oacc_data): Likewise. (gfc_match_oacc_host_data): Likewise. (gfc_match_oacc_loop): Likewise. (gfc_match_oacc_enter_data): Likewise. (gfc_match_oacc_exit_data): Likewise. 2016-06-16 Martin Liska * trans-stmt.c (gfc_trans_simple_do): Predict the edge. 2016-06-16 Martin Liska * trans-array.c (gfc_array_allocate): Do not generate expect stmt. * trans.c (gfc_allocate_using_malloc): Properly set FAIL_ALLOC predictor for malloc return value. (gfc_allocate_allocatable): Use REALLOC predictor instead of FAIL_ALLOC. (gfc_deallocate_with_status): Likewise. 2016-06-13 Paul Thomas PR fortran/70673 * frontend-passes.c (realloc_string_callback): Add a call to gfc_dep_compare_expr. 2016-06-11 Dominique d'Humieres PR fortran/60751 * io.c (gfc_resolve_dt): Replace GFC_STD_GNU with GFC_STD_LEGACY. 2016-06-10 Thomas Schwinge PR c/71381 * openmp.c (gfc_match_oacc_cache): Add comment. 2016-06-05 Jerry DeLisle PR fortran/71404 * io.c (match_io): For READ, commit in pending symbols in the current statement before trying to match an expression so that if the match fails and we undo symbols we dont toss good symbols. 2016-06-05 Andre Vehreschild PR fortran/69659 * trans-array.c (gfc_trans_dummy_array_bias): For class arrays use the address of the _data component to reference the arrays data component. 2016-06-03 Chung-Lin Tang * trans-openmp.c (gfc_trans_omp_reduction_list): Add mark_addressable bool parameter, set reduction clause DECLs as addressable when true. (gfc_trans_omp_clauses): Pass clauses->async to gfc_trans_omp_reduction_list, add comment describing OpenACC situation. 2016-06-01 Jerry DeLisle PR fortran/52393 * io.c (match_io): For READ, try to match a default character expression. If found, set the dt format expression to this, otherwise go back and try control list. 2016-06-01 Paul Thomas PR fortran/71156 * decl.c (copy_prefix): Add checks that the module procedure declaration prefixes are compliant with the interface. Invert order of existing elemental and pure checks. * resolve.c (resolve_fl_procedure): Invert order of elemental and pure errors. 2016-06-01 Jakub Jelinek * parse.c (case_decl): Move ST_OMP_* to ... (case_omp_decl): ... here, new macro. (verify_st_order): For case_omp_decl, complain about p->state >= ORDER_EXEC, but don't change p->state otherwise. 2016-05-26 Jakub Jelinek * openmp.c (resolve_omp_clauses): Warn if chunk_size is known not to be positive. 2016-05-23 Jerry DeLisle PR fortran/66461 * scanner.c (gfc_next_char_literal): Clear end_flag when adjusting current locus back to old_locus. 2016-05-20 Jakub Jelinek PR fortran/71204 * frontend-passes.c (realloc_string_callback): Clear inserted_block and changed_statement before calling create_var. 2016-05-15 Harald Anlauf PR fortran/69603 * interface.c (compare_parameter): Check for non-NULL pointer. 2016-05-14 Fritz Reese * gfortran.texi: Update example of DEC UNION extension. 2016-05-14 Fritz Reese PR fortran/71047 * expr.c (gfc_default_initializer): Avoid extra component refs in constructors for derived types and classes. 2016-05-11 Jakub Jelinek PR fortran/70855 * frontend-passes.c (inline_matmul_assign): Disable in !$omp workshare. 2016-05-09 Richard Biener PR fortran/70937 * trans-decl.c: Include gimplify.h for unshare_expr. (gfc_trans_vla_one_sizepos): Unshare exprs before inserting them into the IL. 2016-05-07 Fritz Reese PR fortran/56226 * module.c (dt_upper_string): Rename to gfc_dt_upper_string (dt_lower_string): Likewise. * gfortran.h: Make new gfc_dt_upper/lower_string global. * class.c: Use gfc_dt_upper_string. * decl.c: Likewise. * symbol.c: Likewise. * resolve.c (resolve_component): New function. (resolve_fl_derived0): Move component loop code to resolve_component. * parse.c (check_component): New function. (parse_derived): Move loop code to check_component. * lang.opt, invoke.texi, options.c : New option -fdec-structure. * libgfortran.h (bt): New basic type BT_UNION. * gfortran.h (gfc_option): New option -fdec-structure. (gfc_get_union_type, gfc_compare_union_types): New prototypes. (gfc_bt_struct, gfc_fl_struct, case_bt_struct, case_fl_struct): New macros. (gfc_find_component): Change prototype. * match.h (gfc_match_member_sep, gfc_match_map, gfc_match_union, gfc_match_structure_decl): New prototypes. * parse.h (gfc_comp_struct): New macro. * symbol.c (gfc_find_component): Search for components in nested unions * class.c (insert_component_ref, gfc_add_component_ref, add_proc_comp, copy_vtab_proc_comps): Update calls to gfc_find_component. * primary.c (gfc_convert_to_structure_constructor): Likewise. * symbol.c (gfc_add_component): Likewise. * resolve.c (resolve_typebound_function, resolve_typebound_subroutine, resolve_typebound_procedure, resolve_component, resolve_fl_derived): Likewise. * expr.c (get_union_init, component_init): New functions. * decl.c (match_clist_expr, match_record_decl, get_struct_decl, gfc_match_map, gfc_match_union, gfc_match_structure_decl): Likewise. * interface.c (compare_components, gfc_compare_union_types): Likewise. * match.c (gfc_match_member_sep): Likewise. * parse.c (check_component, parse_union, parse_struct_map): Likewise. * resolve.c (resolve_fl_struct): Likewise. * symbol.c (find_union_component): Likewise. * trans-types.c (gfc_get_union_type): Likewise. * parse.c (parse_derived): Use new functions. * interface.c (gfc_compare_derived_types, gfc_compare_types): Likewise. * expr.c (gfc_default_initializer): Likewise. * gfortran.texi: Support for DEC structures, unions, and maps. * gfortran.h (gfc_statement, sym_flavor): Likewise. * check.c (gfc_check_kill_sub): Likewise. * expr.c (gfc_copy_expr, simplify_const_ref, gfc_has_default_initializer): Likewise. * decl.c (build_sym, match_data_constant, add_init_expr_to_sym, match_pointer_init, build_struct, variable_decl, gfc_match_decl_type_spec, gfc_mach_data-decl, gfc_match_entry, gfc_match_end, gfc_match_derived_decl): Likewise. * interface.c (check_interface0, check_interface1, gfc_search_interface): Likewise. * misc.c (gfc_basic_typename, gfc_typename): Likewise. * module.c (add_true_name, build_tnt, bt_types, mio_typespec, fix_mio_expr, load_needed, mio_symbol, read_module, write_symbol, gfc_get_module_backend_decl): Likewise. * parse.h (gfc_compile_state): Likewise. * parse.c (decode_specification_statement, decode_statement, gfc_ascii_statement, verify_st_order, parse_spec): Likewise. * primary.c (gfc_match_varspec, gfc_match_structure_constructor, gfc_match_rvalue, match_variable): Likewise. * resolve.c (find_arglists, resolve_structure_cons, is_illegal_recursion, resolve_generic_f, get_declared_from_expr, resolve_typebound_subroutine, resolve_allocate_expr, nonscalar_typebound_assign, generate_component_assignments, resolve_fl_variable_derived, check_defined_assignments, resolve_component, resolve_symbol, resolve_equivalence_derived): Likewise. * symbol.c (flavors, check_conflict, gfc_add_flavor, gfc_use_derived, gfc_restore_last_undo_checkpoint, gfc_type_compatible, gfc_find_dt_in_generic): Likewise. * trans-decl.c (gfc_get_module_backend_decl, create_function_arglist, gfc_create_module_variable, check_constant_initializer): Likewise. * trans-expr.c (gfc_conv_component_ref, gfc_conv_initializer, gfc_trans_alloc_subarray_assign, gfc_trans_subcomponent_assign, gfc_conv_structure, gfc_trans_scalar_assign, copyable_array_p): Likewise. * trans-io.c (transfer_namelist_element, transfer_expr, gfc_trans_transfer): Likewise. * trans-stmt.c (gfc_trans_deallocate): Likewise. * trans-types.c (gfc_typenode_for_spec, gfc_copy_dt_decls_ifequal, gfc_get_derived_type): Likewise. 2016-05-05 Jakub Jelinek * openmp.c (gfc_match_omp_clauses): Restructuralize, so that clause parsing is done in a big switch based on gfc_peek_ascii_char and individual clauses under their first letters are sorted too. 2016-05-02 Michael Meissner * trans-types.c (gfc_build_complex_type): 2016-05-02 Richard Biener * trans-array.c (gfc_trans_create_temp_array): Properly create a DECL_EXPR for the anonymous VLA array type. 2016-04-29 Cesar Philippidis PR middle-end/70626 * trans-openmp.c (gfc_trans_oacc_combined_directive): Duplicate the reduction clause in both parallel and loop directives. 2016-04-18 Michael Matz * trans-io.c (gfc_build_io_library_fndecls): Use SET_TYPE_ALIGN. * trans-common.c (build_common_decl): Use SET_DECL_ALIGN. * trans-types.c (gfc_add_field_to_struct): Use SET_DECL_ALIGN. 2016-04-13 Dominique d'Humieres PR fortran/67039 * intrinsic.texi: Correct the documentation of pseudorandom number intrinsics. 2016-04-13 Dominique d'Humieres PR fortran/58000 * gfortran.texi: Document OPEN( ... NAME=) as not implemented in GNU Fortran 2016-04-09 Jerry DeLisle PR fortran/68566 * array.c (match_array_element_spec): Add check for non-integer. * simplify.c (gfc_simplify_reshape): If source shape is NULL return. 2016-04-06 Patrick Palka PR c/70436 * openmp.c (gfc_find_omp_udr): Add explicit braces to resolve a future -Wparentheses warning. 2016-04-04 Andre Vehreschild PR fortran/67538 * resolve.c (resolve_allocate_expr): Emit error message when no array spec and no array valued source= expression is given in an F2008 allocate() for an array to allocate. 2016-04-04 Andre Vehreschild PR fortran/65795 * trans-array.c (gfc_array_allocate): When the array is a coarray, do not nullyfing its allocatable components in array_allocate, because the nullify missed the array ref and nullifies the wrong component. Cosmetics. 2016-03-29 Andre Vehreschild PR fortran/70397 * trans-expr.c (gfc_class_len_or_zero_get): Add function to return a constant zero tree, when the class to get the _len component from is not unlimited polymorphic. (gfc_copy_class_to_class): Use the new function. * trans.h: Added interface of new function gfc_class_len_or_zero_get. 2016-03-28 Alessandro Fanfarillo * trans-decl.c (gfc_build_builtin_function_decls): caf_stop_numeric and caf_stop_str definition. * trans-stmt.c (gfc_trans_stop): invoke external functions for stop and stop_str when coarrays are used. * trans.h: extern for new functions. 2016-03-19 Jerry DeLisle PR fortran/69043 * scanner.c (load_file): Update to use S_ISREG macro. 2016-03-17 Thomas Schwinge * gfortran.h (enum gfc_omp_map_op): Rename OMP_MAP_FORCE_DEALLOC to OMP_MAP_DELETE. Adjust all users. 2016-03-13 Jerry DeLisle Jim MacArthur PR fortran/69043 * scanner.c (load_file): Check that included file is regular. 2016-03-12 Jerry DeLisle Harold Anlauf PR fortran/69520 * invoke.texi: Explain use of the 'no-' construct within the -fcheck= option. * options.c (gfc_handle_runtime_check_option): Enable use of 'no-' prefix for the various options with -fcheck= to allow negating previously enabled check options. 2016-03-12 Paul Thomas PR fortran/70031 * decl.c (gfc_match_prefix): Treat the 'module' prefix in the same way as the others, rather than fixing it to come last. (gfc_match_function_decl, gfc_match_subroutine): After errors in 'copy_prefix', emit them immediately in the case of module procedures to prevent a later ICE. PR fortran/69524 * decl.c (gfc_match_submod_proc): Permit 'module procedure' declarations within the contains section of modules as well as submodules. * resolve.c (resolve_fl_procedure): Likewise. *trans-decl.c (build_function_decl): Change the gcc_assert to allow all forms of module procedure declarations within module contains sections. 2016-02-28 Thomas Koenig PR fortran/68147 PR fortran/47674 * frontend-passes.c (realloc_string_callback): Don't set walk_subtrees. 2016-02-28 Thomas Koenig * dump-parse-tree.c (show_code_node): Print association list of a block if present. Handle EXEC_END_BLOCK. 2016-02-28 Harald Anlauf Jerry DeLisle PR fortran/56007 * match.c (gfc_match_iterator): Add diagnostic for array variable as do loop index. 2016-02-27 Jerry DeLisle Steven G. Kargl PR fortran/69910 * io.c (gfc_match_open): Check that open status is an expression constant before comparing string to 'scratch' with NEWUNIT. 2016-02-27 Alessandro Fanfarillo * trans.c (gfc_allocate_allocatable): size conversion from byte to number of elements for event variables. * trans-types.c (gfc_get_derived_type): event variables represented as a pointer (like lock variable). 2016-02-23 Jerry DeLisle PR fortran/61156 * scanner.c (add_path_to_list): If include path is not a directory, issue a fatal error. 2016-02-23 Andre Vehreschild PR fortran/67451 * trans-array.c (gfc_array_allocate): Take the attributes from the expression to allocate and not from the source=-expression. 2016-02-20 Paul Thomas PR fortran/69423 * trans-decl.c (create_function_arglist): Deferred character length functions, with and without declared results, address the passed reference type as '.result' and the local string length as '..result'. (gfc_null_and_pass_deferred_len): Helper function to null and return deferred string lengths, as needed. (gfc_trans_deferred_vars): Call it, thereby reducing repeated code, add call for deferred arrays and reroute pointer function results. Avoid using 'tmp' for anything other that a temporary tree by introducing 'type_of_array' for the arrayspec type. 2015-02-16 Thomas Koenig PR fortran/69742 * frontend-passes.c (cfe-expr_0): Don't register functions from within an ASSOCIATE statement. 2016-02-14 Thomas Koenig PR fortran/60526 * decl.c (build_sym): If the name has already been defined as a type, it has a symtree with an upper case letter at the beginning. If such a symtree exists, issue an error and exit. Don't do this if there is no corresponding upper case letter. 2016-02-14 Thomas Koenig PR fortran/60526 PR bootstrap/69816 * decl.c (build_sym): Reverted previous patch. 2016-02-14 Thomas Koenig PR fortran/60526 * decl.c (build_sym): If the name has already been defined as a type, issue error and return false. 2016-02-12 David Malcolm PR other/69554 * error.c (gfc_diagnostic_start_span): New function. (gfc_diagnostics_init): Initialize global_dc's start_span. 2016-02-11 Andre Vehreschild PR fortran/69296 * gfortran.h: Added flag to gfc_association_list indicating that the rank of an associate variable has been guessed only. * parse.c (parse_associate): Set the guess flag mentioned above when guessing the rank of an expression. * resolve.c (resolve_assoc_var): When the rank has been guessed, make sure, that the guess was correct else overwrite with the actual rank. * trans-stmt.c (trans_associate_var): For subref_array_pointers in class objects, take the span from the _data component. 2016-02-07 Jerry DeLisle PR fortran/50555 * primary.c (match_actual_arg): If symbol has attribute flavor of namelist, generate an error. (gfc_match_rvalue): Likewise return MATCH_ERROR. * resolve.c (resolve_symbol): Scan arument list of procedures and generate an error if a namelist is found. 2016-02-05 Mikael Morin PR fortran/66089 * trans-expr.c (expr_is_variable, gfc_expr_is_variable): Rename the former to the latter and make it non-static. Update callers. * gfortran.h (gfc_expr_is_variable): New declaration. (struct gfc_ss_info): Add field needs_temporary. * trans-array.c (gfc_scalar_elemental_arg_saved_as_argument): Tighten the condition on aggregate expressions with a check that the expression is a variable and doesn't need a temporary. (gfc_conv_resolve_dependency): Add intermediary reference variable. Set the needs_temporary field. 2016-02-03 Andre Vehreschild PR fortran/67451 PR fortran/69418 * trans-expr.c (gfc_copy_class_to_class): For coarrays just the pointer is passed. Take it as is without trying to deref the _data component. * trans-stmt.c (gfc_trans_allocate): Take care of coarrays as argument to source=-expression. 2016-02-02 Nathan Sidwell * lang.opt (fopenacc-dim=): New option. 2016-01-31 Paul Thomas PR fortran/67564 * trans-expr.c (gfc_conv_procedure_call): For the vtable copy subroutines, add a string length argument, when the actual argument is an unlimited polymorphic class object. 2016-01-30 Paul Thomas PR fortran/69566 * trans-expr.c (gfc_conv_procedure_call): Correct expression for 'ulim_copy', which was missing a test for 'comp'. 2016-01-28 Andre Vehreschild PR fortran/62536 * decl.c (gfc_match_end): Only unnest and remove BLOCK namespaces when the END encountered does not match a BLOCK's end. 2016-01-27 Janus Weil PR fortran/69484 * invoke.texi: Fix documentation of -Wall with respect to -Wtabs. 2016-01-27 Paul Thomas PR fortran/69422 * trans-expr.c (is_scalar_reallocatable_lhs): Remove the check for allocatable components, whilst checking if the symbol is a derived or class entity.. 2016-01-26 Paul Thomas PR fortran/69385 * trans-expr.c (gfc_trans_assignment_1): Exclude initialization assignments from check on assignment of scalars to unassigned arrays and correct wrong code within the corresponding block. 2016-01-26 David Malcolm PR other/69006 * error.c (gfc_diagnostic_starter): Delete use of pp_newline. 2016-01-23 Jerry DeLisle PR fortran/69397 PR fortran/68442 * interface.c (gfc_arglist_matches_symbol): Replace assert with a return false if not a procedure. * resolve.c (resolve_generic_f): Test if we are resolving an initialization expression and adjust error message accordingly. 2016-01-24 Thomas Koenig PR fortran/66094 * frontend-passes.c (matmul_lhs_realloc): Add forgotten break statement. 2016-01-24 Dominique d'Humieres PR fortran/68283 * primary.c (gfc_variable_attr): revert revision r221955, call gfc_internal_error only if there is no error. 2016-01-24 Thomas Koenig PR fortran/66094 * frontend-passes.c (enum matrix_case): Add case A2B2T for MATMUL(A,TRANSPoSE(B)) where A and B are rank 2. (inline_limit_check): Also add A2B2T. (matmul_lhs_realloc): Handle A2B2T. (check_conjg_variable): Rename to (check_conjg_transpose_variable): and also count TRANSPOSE. (inline_matmul_assign): Handle A2B2T. 2016-01-21 Jerry DeLisle PR fortran/65996 * error.c (gfc_error): Save the state of abort_on_error and set it to false for buffered errors to allow normal processing. Restore the state before leaving. 2016-01-19 Martin Jambor * types.def (BT_FN_VOID_UINT_PTR_INT_PTR): New. (BT_FN_VOID_INT_OMPFN_SIZE_PTR_PTR_PTR_UINT_PTR_INT_INT): Removed. (BT_FN_VOID_INT_OMPFN_SIZE_PTR_PTR_PTR_UINT_PTR_PTR): New. 2016-01-15 Paul Thomas PR fortran/64324 * resolve.c (check_uop_procedure): Prevent deferred length characters from being trapped by assumed length error. PR fortran/49630 PR fortran/54070 PR fortran/60593 PR fortran/60795 PR fortran/61147 PR fortran/64324 * trans-array.c (gfc_conv_scalarized_array_ref): Pass decl for function as well as variable expressions. (gfc_array_init_size): Add 'expr' as an argument. Use this to correctly set the descriptor dtype for deferred characters. (gfc_array_allocate): Add 'expr' to the call to 'gfc_array_init_size'. * trans.c (gfc_build_array_ref): Expand logic for setting span to include indirect references to character lengths. * trans-decl.c (gfc_get_symbol_decl): Ensure that deferred result char lengths that are PARM_DECLs are indirectly referenced both for directly passed and by reference. (create_function_arglist): If the length type is a pointer type then store the length as the 'passed_length' and make the char length an indirect reference to it. (gfc_trans_deferred_vars): If a character length has escaped being set as an indirect reference, return it via the 'passed length'. * trans-expr.c (gfc_conv_procedure_call): The length of deferred character length results is set TREE_STATIC and set to zero. (gfc_trans_assignment_1): Do not fix the rse string_length if it is a variable, a parameter or an indirect reference. Add the code to trap assignment of scalars to unallocated arrays. * trans-stmt.c (gfc_trans_allocate): Remove 'def_str_len' and all references to it. Instead, replicate the code to obtain a explicitly defined string length and provide a value before array allocation so that the dtype is correctly set. trans-types.c (gfc_get_character_type): If the character length is a pointer, use the indirect reference. 2016-01-10 Thomas Koenig PR fortran/69154 * frontend-passes.c (in_where): New variable. (inline_matmul_assign): Don't try this if we are within a WHERE statement. (gfc_code_walker): Keep track of in_where. 2016-01-10 Paul Thomas PR fortran/67779 * trans_array.c (gfc_conv_scalarized_array_ref): Add missing se->use_offset from condition for calculation of 'base'. 2016-01-08 Jakub Jelinek PR fortran/69128 * trans.h (OMPWS_SCALARIZER_BODY): Define. (OMPWS_NOWAIT): Renumber. * trans-stmt.c (gfc_trans_where_3): Only set OMPWS_SCALARIZER_WS if OMPWS_SCALARIZER_BODY is not set already, and set also OMPWS_SCALARIZER_BODY until the final loop creation. * trans-expr.c (gfc_trans_assignment_1): Likewise. * trans-openmp.c (gfc_trans_omp_workshare): Also clear OMPWS_SCALARIZER_BODY. * trans-array.c (gfc_trans_scalarized_loop_end): Don't create OMP_FOR if OMPWS_SCALARIZER_BODY is set. 2016-01-04 Jakub Jelinek 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. 2016-01-01 Paul Thomas PR fortran/68864 * trans-array.c (evaluate_bound): If deferred, test that 'desc' is an array descriptor before using gfc_conv_descriptor_xxx. Copyright (C) 2016 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.