2017-10-25 Bernhard Reutner-Fischer * match.c (gfc_match_type_is): Fix typo in error message. 2017-10-21 Paul Thomas PR fortran/82586 * decl.c (gfc_get_pdt_instance): Remove the error message that the parameter does not have a corresponding component since this is now taken care of when the derived type is resolved. Go straight to error return instead. (gfc_match_formal_arglist): Make the PDT relevant errors immediate so that parsing of the derived type can continue. (gfc_match_derived_decl): Do not check the match status on return from gfc_match_formal_arglist for the same reason. * resolve.c (resolve_fl_derived0): Check that each type parameter has a corresponding component. PR fortran/82587 * resolve.c (resolve_generic_f): Check that the derived type can be used before resolving the struture constructor. PR fortran/82589 * symbol.c (check_conflict): Add the conflicts involving PDT KIND and LEN attributes. 2017-10-19 Bernhard Reutner-Fischer * interface.c (check_sym_interfaces, check_uop_interfaces, gfc_check_interfaces): Base interface_name buffer off GFC_MAX_SYMBOL_LEN. 2017-10-19 Jakub Jelinek PR fortran/82568 * gfortran.h (gfc_resolve_do_iterator): Add a bool arg. (gfc_resolve_omp_local_vars): New declaration. * openmp.c (omp_current_ctx): Make static. (gfc_resolve_omp_parallel_blocks): Handle EXEC_OMP_TASKLOOP and EXEC_OMP_TASKLOOP_SIMD. (gfc_resolve_do_iterator): Add ADD_CLAUSE argument, if false, don't actually add any clause. Move omp_current_ctx test earlier. (handle_local_var, gfc_resolve_omp_local_vars): New functions. * resolve.c (gfc_resolve_code): Call gfc_resolve_omp_parallel_blocks instead of just gfc_resolve_omp_do_blocks for EXEC_OMP_TASKLOOP and EXEC_OMP_TASKLOOP_SIMD. (gfc_resolve_code): Adjust gfc_resolve_do_iterator caller. (resolve_codes): Call gfc_resolve_omp_local_vars. 2017-10-19 Bernhard Reutner-Fischer * gfortran.h (gfc_lookup_function_fuzzy): New declaration. (gfc_closest_fuzzy_match): New declaration. (vec_push): New definition. * misc.c (gfc_closest_fuzzy_match): New definition. * resolve.c: Include spellcheck.h. (lookup_function_fuzzy_find_candidates): New static function. (lookup_uop_fuzzy_find_candidates): Likewise. (lookup_uop_fuzzy): Likewise. (resolve_operator) : Call lookup_uop_fuzzy. (gfc_lookup_function_fuzzy): New definition. (resolve_unknown_f): Call gfc_lookup_function_fuzzy. * interface.c (check_interface0): Likewise. (lookup_arg_fuzzy_find_candidates): New static function. (lookup_arg_fuzzy ): Likewise. (compare_actual_formal): Call lookup_arg_fuzzy. * symbol.c: Include spellcheck.h. (lookup_symbol_fuzzy_find_candidates): New static function. (lookup_symbol_fuzzy): Likewise. (gfc_set_default_type): Call lookup_symbol_fuzzy. (lookup_component_fuzzy_find_candidates): New static function. (lookup_component_fuzzy): Likewise. (gfc_find_component): Call lookup_component_fuzzy. 2017-10-18 Thomas Koenig PR fortran/82567 * frontend-passes.c (combine_array_constructor): If an array constructor is all constants and has more elements than a small constant, don't convert a*[b,c] to [a*b,a*c] to reduce compilation times. 2017-10-18 Thomas Koenig PR fortran/79795 * resolve.c (resovle_symbol): Change gcc_assert to sensible error message. 2017-10-18 Paul Thomas PR fortran/82550 * trans_decl.c (gfc_get_symbol_decl): Procedure symbols that have the 'used_in_submodule' attribute should be processed by 'gfc_get_extern_function_decl'. 2017-10-16 Fritz Reese PR fortran/82511 * trans-io.c (transfer_expr): Treat BT_UNION as BT_DERIVED. 2017-10-15 Thomas Koenig PR fortran/82372 * fortran/scanner.c (last_error_char): New global variable. (gfc_scanner_init_1): Set last_error_char to NULL. (gfc_gobble_whitespace): If a character not printable or not newline, issue an error. 2017-10-13 Paul Thomas PR fortran/81048 * resolve.c (resolve_symbol): Ensure that derived type array results get default initialization. 2017-10-11 Nathan Sidwell * cpp.c (gfc_cpp_add_include_path): Update incpath_e names. (gfc_cpp_add_include_path_after): Likewise. 2017-10-10 Richard Sandiford * target-memory.c (gfc_interpret_logical): Use wi::to_wide when operating on trees as wide_ints. * trans-const.c (gfc_conv_tree_to_mpz): Likewise. * trans-expr.c (gfc_conv_cst_int_power): Likewise. * trans-intrinsic.c (trans_this_image): Likewise. (gfc_conv_intrinsic_bound): Likewise. (conv_intrinsic_cobound): Likewise. 2017-10-08 Steven G. Kargl * check.c (gfc_check_x): Remove function. * intrinsic.c (add_functions): Use gfc_check_fn_r. 2017-10-08 Paul Thomas PR fortran/82375 * module.c : Bump up MOD_VERSION to 15. (mio_component): Edit comment about PDT specification list. (mio_expr, mio_symbol): Include the expression and symbol PDT specification lists in the same way as in mio_component. 2017-10-08 Thomas Koenig * dump_prase_tree (show_symbol): Output list of variables in NAMELIST. (show_code_node): Add new line for ELSE and END DO for DO CONCURRENT. * invoke.texi: Document that the output of -fdump-fortran-original, -fdump-fortran-optimized and -fdump-parse-tree is unsable and may lead to ICEs. 2017-10-07 Paul Thomas PR fortran/82375 * class.c (gfc_find_derived_vtab): Return NULL for a passed pdt template to prevent bad procedures from being written. * decl.c (gfc_get_pdt_instance): Do not use the default initializer for pointer and allocatable pdt type components. If the component is allocatbale, set the 'alloc_comp' attribute of 'instance'. * module.c : Add a prototype for 'mio_actual_arglist'. Add a boolean argument 'pdt'. (mio_component): Call it for the parameter list of pdt type components with 'pdt' set to true. (mio_actual_arg): Add the boolean 'pdt' and, if it is set, call mio_integer for the 'spec_type'. (mio_actual_arglist): Add the boolean 'pdt' and use it in the call to mio_actual_arg. (mio_expr, mio_omp_udr_expr): Call mio_actual_arglist with 'pdt' set false. * resolve.c (get_pdt_spec_expr): Add the parameter name to the KIND parameter error. (get_pdt_constructor): Check that cons->expr is non-null. * trans-array.c (structure_alloc_comps): For deallocation of allocatable components, ensure that parameterized components are deallocated first. Likewise, when parameterized components are allocated, nullify allocatable components first. Do not recurse into pointer or allocatable pdt components while allocating or deallocating parameterized components. Test that parameterized arrays or strings are allocated before freeing them. (gfc_trans_pointer_assignment): Call the new function. Tidy up a minor whitespace issue. trans-decl.c (gfc_trans_deferred_vars): Set 'tmp' to NULL_TREE to prevent the expression from being used a second time. 2017-10-07 Thomas Koenig PR fortran/49232 * expr.c (gfc_check_pointer_assign): Error for non-contiguous rhs. 2017-10-07 Thomas Koenig * gfortran.h (async_io_dt): Add external reference. * io.c (async_io_dt): Add variable. (compare_to_allowed_values): Add prototyte. Add optional argument num. If present, set it to the number of the entry that was matched. (check_io_constraints): If this is for an asynchronous I/O statement, set async_io_dt and set the asynchronous flag for a SIZE tag. * resolve.c (resolve_transfer): If async_io_dt is set, set the asynchronous flag on the variable. (resolve_fl_namelist): If async_io_dt is set, set the asynchronous flag on all elements of the namelist. 2017-10-04 Paul Thomas PR fortran/60458 PR fortran/77296 * resolve.c (resolve_assoc_var): Deferred character type associate names must not receive an integer conatant length. * symbol.c (gfc_is_associate_pointer): Deferred character length functions also require an associate pointer. * trans-decl.c (gfc_get_symbol_decl): Deferred character length functions or derived type components require the assoc name to have variable string length. * trans-stmt.c (trans_associate_var): Set the string length of deferred string length associate names. The address expression is not needed for allocatable, pointer or dummy targets. Change the comment about defered string length targets. 2017-10-03 Thomas Koenig * io.c (match_wait_element): Correctly match END and EOR tags. * dump-parse-tree.c (show_code_node): Handle EXEC_WAIT. 2017-10-02 Paul Thomas PR fortran/82312 * resolve.c (gfc_resolve_code): Simplify condition for class pointer assignments becoming regular assignments by asserting that only class valued targets are permitted. * trans-expr.c (trans_class_pointer_fcn): New function using a block of code from gfc_trans_pointer_assignment. (gfc_trans_pointer_assignment): Call the new function. Tidy up a minor whitespace issue. 2017-10-01 Dominique d'Humieres PR fortran/61450 * parse.c (gfc_global_used): Replace the gfc_internal_error with an error. 2017-09-29 Dominique d'Humieres PR fortran/25071 * interface.c (compare_actual_formal): Change warnings to errors when "Actual argument contains too few elements for dummy argument", unless -std=legacy is used. 2017-09-27 Thomas Schwinge * lang.opt : End help text with a period. 2017-09-26 Thomas Koenig * frontend-passes.c (do_subscript): Don't do anything if inside an associate list. 2017-09-25 Thomas Koenig * lang.opt: Add -Wdo-subscript. * frontend-passes.c (do_t): New type. (doloop_list): Use variable of do_type. (if_level): Variable to track if levels. (select_level): Variable to track select levels. (gfc_run_passes): Initialize i_level and select_level. (doloop_code): Record current level of if + select level in doloop_list. Add seen_goto if there could be a branch outside the loop. Use different type for doloop_list. (doloop_function): Call do_intent and do_subscript; move functionality of checking INTENT to do_intent. (insert_index_t): New type, for callback_insert_index. (callback_insert_index): New function. (insert_index): New function. (do_subscript): New function. (do_intent): New function. (gfc_code_walker): Keep track of if_level and select_level. * invoke.texi: Document -Wdo-subscript. 2017-09-25 Janne Blomqvist * trans.c (gfc_unlikely): Remove unnecessary fold_convert. (gfc_likely): Likewise. 2017-09-24 Thomas Koenig Steven G. Kargl PR fortran/80118 * expr.c (gfc_get_full_arrayspec_from_expr): If there is no symtree, set array spec to NULL. 2017-09-23 Janus Weil PR fortran/82143 * lang.opt: Add the options -fdefault-real-10 and -fdefault-real-16. Rename flag_default_real to flag_default_real_8. * invoke.texi: Add documentation. * module.c (use_iso_fortran_env_module): flag_default_real is renamed. * trans-types.c (gfc_init_kinds): Implement the flags -fdefault-real-10 and -fdefault-real-16. Make -fdefault-double-8 work without -fdefault-real-8. 2017-09-21 Paul Thomas PR fortran/52832 * match.c (gfc_match_associate): Before failing the association try again, allowing a proc pointer selector. PR fortran/80120 PR fortran/81903 PR fortran/82121 * primary.c (gfc_match_varspec): Introduce 'tgt_expr', which points to the associate selector, if any. Go through selector references, after resolution for variables, to catch any full or section array references. If a class associate name does not have the same declared type as the selector, resolve the selector and copy the declared type to the associate name. Before throwing a no implicit type error, resolve all allowed selector expressions, and copy the resulting typespec. PR fortran/67543 * resolve.c (resolve_assoc_var): Selector must cannot be the NULL expression and it must have a type. PR fortran/78152 * resolve.c (resolve_symbol): Allow associate names to be coarrays. 2017-09-21 Cesar Philippidis * openmp.c (gfc_match_oacc_wait): Don't restrict wait directive arguments to constant integers. 2017-09-17 Paul Thomas PR fortran/82173 * decl.c (gfc_get_pdt_instance): Use the component initializer expression for the default, rather than the parameter value. * resolve.c (resolve_pdt): New function. (resolve_symbol): Call it. Remove false error, prohibiting deferred type parameters for dummy arguments. PR fortran/60483 * primary.c (gfc_match_varspec): If the type of an associate name is unknown and yet there is a match, try resolving the target expression and using its type. 2017-09-15 Paul Thomas PR fortran/82184 trans-decl.c (gfc_trans_deferred_vars): Do not null the 'span' field if the symbol is either implicitly or explicitly saved. 2017-09-13 Paul Thomas PR fortran/82173 * decl.c (match_char_kind): If the kind expression is parameterized, save it in saved_kind_expr and set kind = 0. (gfc_get_pdt_instance): Resolve and simplify before emitting error on expression kind. Insert a missing simplification after insertion of kind expressions. 2017-09-12 Paul Thomas PR fortran/82173 PR fortran/82168 * decl.c (variable_decl): Check pdt template components for appearance of KIND/LEN components in the type parameter name list, that components corresponding to type parameters have either KIND or LEN attributes and that KIND or LEN components are scalar. Copy the initializer to the parameter value. (gfc_get_pdt_instance): Add a label 'error_return' and follow it with repeated code, while replacing this code with a jump. Check if a parameter appears as a component in the template. Make sure that the parameter expressions are integer. Validate KIND expressions. (gfc_match_decl_type_spec): Search for pdt_types in the parent namespace since they are instantiated in the template ns. * expr.c (gfc_extract_int): Use a KIND parameter if it appears as a component expression. (gfc_check_init_expr): Allow expressions with the pdt_kind attribute. *primary.c (gfc_match_actual_arglist): Make sure that the first keyword argument is recognised when 'pdt' is set. 2017-09-10 Paul Thomas PR fortran/34640 PR fortran/40737 PR fortran/55763 PR fortran/57019 PR fortran/57116 * expr.c (is_subref_array): Add class pointer array dummies to the list of expressions that return true. * trans-array.c: Add SPAN_FIELD and update indices for subsequent fields. (gfc_conv_descriptor_span, gfc_conv_descriptor_span_get, gfc_conv_descriptor_span_set, is_pointer_array, get_array_span): New functions. (gfc_get_descriptor_offsets_for_info): New function to preserve API for access to descriptor fields for trans-types.c. (gfc_conv_scalarized_array_ref): If the expression is a subref array, make sure that info->descriptor is a descriptor type. Otherwise, if info->descriptor is a pointer array, set 'decl' and fix it if it is a component reference. (build_array_ref): Simplify handling of class array refs by passing the vptr to gfc_build_array_ref rather than generating the pointer arithmetic in this function. (gfc_conv_array_ref): As in gfc_conv_scalarized_array_ref, set 'decl'. (gfc_array_allocate): Set the span field if this is a pointer array. Use the expr3 element size if it is available, so that the dynamic type element size is used. (gfc_conv_expr_descriptor): Set the span field for pointer assignments. * trans-array.h: Prototypes for gfc_conv_descriptor_span_get gfc_conv_descriptor_span_set and gfc_get_descriptor_offsets_for_info added. trans-decl.c (gfc_get_symbol_decl): If a non-class pointer array, mark the declaration as a GFC_DECL_PTR_ARRAY_P. Remove the setting of GFC_DECL_SPAN. (gfc_trans_deferred_vars): Set the span field to zero in thge originating scope. * trans-expr.c (gfc_conv_procedure_call): Do not use copy-in/ copy-out to pass subref expressions to a pointer dummy. (gfc_trans_pointer_assignment): Remove code for setting of GFC_DECL_SPAN. Set the 'span' field for non-class pointers to class function results. Likewise for rank remap. In the case that the target is not a whole array, use the target array ref for remap and, since the 'start' indices are missing, set the lbounds to one, as required by the standard. * trans-intrinsic.c (conv_expr_ref_to_caf_ref): Pick up the 'token' offset from the field decl in the descriptor. (conv_isocbinding_subroutine): Set the 'span' field. * trans-io.c (gfc_trans_transfer): Always scalarize pointer array io. * trans-stmt.c (trans_associate_var): Set the 'span' field. * trans-types.c (gfc_get_array_descriptor_base): Add the 'span' field to the array descriptor. (gfc_get_derived_type): Pointer array components are marked as GFC_DECL_PTR_ARRAY_P. (gfc_get_array_descr_info): Replaced API breaking code for descriptor offset calling gfc_get_descriptor_offsets_for_info. * trans.c (get_array_span): New function. (gfc_build_array_ref): Simplify by calling get_array_span and obtain 'span' if 'decl' or 'vptr' present. * trans.h : Rename DECL_LANG_FLAG_6, GFC_DECL_SUBREF_ARRAY_P, as GFC_DECL_PTR_ARRAY_P. 2017-09-09 Paul Thomas * decl.c : Add decl_type_param_list, type_param_spec_list as static variables to hold PDT spec lists. (build_sym): Copy 'type_param_spec_list' to symbol spec_list. (build_struct): Copy the 'saved_kind_expr' to the component 'kind_expr'. Check that KIND or LEN components appear in the decl_type_param_list. These should appear as symbols in the f2k_derived namespace. If the component is itself a PDT type, copy the decl_type_param_list to the component param_list. (gfc_match_kind_spec): If the KIND expression is parameterized set KIND to zero and store the expression in 'saved_kind_expr'. (insert_parameter_exprs): New function. (gfc_insert_kind_parameter_exprs): New function. (gfc_insert_parameter_exprs): New function. (gfc_get_pdt_instance): New function. (gfc_match_decl_type_spec): Match the decl_type_spec_list if it is present. If it is, call 'gfc_get_pdt_instance' to obtain the specific instance of the PDT. (match_attr_spec): Match KIND and LEN attributes. Check for the standard and for type/kind of the parameter. They are also not allowed outside a derived type definition. (gfc_match_data_decl): Null the decl_type_param_list and the type_param_spec_list on entry and free them on exit. (gfc_match_formal_arglist): If 'typeparam' is true, add the formal symbol to the f2k_derived namespace. (gfc_match_derived_decl): Register the decl_type_param_list if this is a PDT. If this is a type extension, gather up all the type parameters and put them in the right order. *dump-parse-tree.c (show_attr): Signal PDT templates and the parameter attributes. (show_components): Output parameter atrributes and component parameter list. (show_symbol): Show variable parameter lists. * expr.c (expr.c): Copy the expression parameter list. (gfc_is_constant_expr): Pass on symbols representing PDT parameters. (gfc_check_init_expr): Break on PDT KIND parameters and PDT parameter expressions. (gfc_check_assign): Assigning to KIND or LEN components is an error. (derived_parameter_expr): New function. (gfc_derived_parameter_expr): New function. (gfc_spec_list_type): New function. * gfortran.h : Add enum gfc_param_spec_type. Add the PDT attrs to the structure symbol_attr. Add the 'kind_expr' and 'param_list' field to the gfc_component structure. Comment on the reuse of the gfc_actual_arglist structure as storage for type parameter spec lists. Add the new field 'spec_type' to this structure. Add 'param_list' fields to gfc_symbol and gfc_expr. Add prototypes for gfc_insert_kind_parameter_exprs, gfc_insert_parameter_exprs, gfc_add_kind, gfc_add_len, gfc_derived_parameter_expr and gfc_spec_list_type. * interface.c (gfc_compare_derived_types): Treat PDTs in the same way as sequence types. * match.c : Add variable 'type_param_spec_list'. (gfc_op2string, gfc_match_member_sep, gfc_match_label): Remove trailing whitespace. (match_derived_type_spec): Match PDTs and find specific instance. (gfc_match_type_spec): Remove more trailing whitespace. (gfc_match_allocate): Assumed or deferred parameters cannot appear here. Copy the type parameter spec list to the expr for the allocatable entity. Free 'type_param_spec_list'. (gfc_match_common, gfc_match_namelist, gfc_match_module): Still more trailing whitespace to remove. (gfc_match_type_is): Allow PDT typespecs. * match.h : Modify prototypes for gfc_match_formal_arglist and gfc_match_actual_arglist. * module.c (ab_attribute, mstring attr_bits): PDT attributes added. (mio_symbol_attribute): PDT attributes handled. (mio_component): Deal with 'kind_expr' field. (mio_full_f2k_derived): For PDT templates, transfer the formal namespace symroot to the f2k_derived namespace. *primary.c (match_keyword_arg, gfc_match_actual_arglist): Add modifications to handle PDT spec lists. These are flagged in both cases by new boolean arguments, whose prototype defaults are false. (gfc_match_structure_constructor, match_variable): Remove yet more trailing whitespace. * resolve.c (get_pdt_spec_expr, get_pdt_constructor): New functions. (resolve_structure_cons): If the constructor is a PDT template, call get_pdt_constructor to build it using the parameter lists and then get the specific instance of the PDT. (resolve_component): PDT strings need a hidden string length component like deferred characters. (resolve_symbol): Dummy PDTs cannot have deferred parameters. * symbol.c (gfc_add_kind, gfc_add_len): New functions. (free_components): Free 'kind_expr' and 'param_list' fields. (gfc_free_symbol): Free the 'param_list' field. (gfc_find_sym_tree): If the current state is a PDT template, look for the symtree in the f2k_derived namspaces. trans-array.c (structure_alloc_comps): Allocate and deallocate PDTs. Check dummy arguments for compliance of LEN parameters. Add the new functions to the preceeding enum. (gfc_allocate_pdt_comp, gfc_deallocate_pdt_comp and gfc_check_pdt_dummy): New functions calling above. * trans-array.h : Add prototypes for these functions. trans-decl.c (gfc_get_symbol_decl): Call gfc_defer_symbol_init as appropriate for PDT symbols. (gfc_trans_deferred_vars): Allocate/deallocate PDT entities as they come into and out of scope. Exclude pdt_types from being 'gcc_unreachable'. (gfc_trans_subcomponent_assign): PDT array components must be handles as if they are allocatable. * trans-stmt.c (gfc_trans_allocate): Handle initialization of PDT entities. (gfc_trans_deallocate): Likewise. * trans-types.c (gfc_get_derived_type): PDT templates must not arrive here. PDT string components are handles as if deferred. Similarly, PDT arrays are treated as if allocatable. PDT strings are pointer types. * trans.c (gfc_deferred_strlen): Handle PDT strings in the same way as deferred characters. 2017-09-01 Jakub Jelinek PR c/81887 * parse.c (decode_omp_directive): Use matchs instead of matcho for end ordered and ordered directives, except for ordered depend. For -fopenmp-simd and ordered depend, reject the stmt. * trans-openmp.c (gfc_trans_omp_ordered): For -fopenmp-simd ignore threads clause and if simd clause isn't present, just translate the body. 2017-08-30 Richard Sandiford Alan Hayward David Sherwood * trans-types.c (gfc_init_kinds): Use opt_scalar_int_mode for the mode iterator. 2017-08-30 Richard Sandiford Alan Hayward David Sherwood * target-memory.c (size_integer): Use SCALAR_INT_TYPE_MODE. (size_logical): Likewise. 2017-08-30 Richard Sandiford Alan Hayward David Sherwood * trans-types.c (gfc_type_for_mode): Use is_a . 2017-08-30 Richard Sandiford Alan Hayward David Sherwood * trans-types.c (gfc_init_kinds): Use opt_scalar_float_mode and FOR_EACH_MODE_IN_CLASS. 2017-08-30 Richard Sandiford Alan Hayward David Sherwood * target-memory.c (size_float): Use SCALAR_FLOAT_TYPE_MODE instead of TYPE_MODE. 2017-08-30 Richard Sandiford Alan Hayward David Sherwood * trans-types.c (gfc_init_kinds): Use machine_mode instead of int for "mode". 2017-08-28 Janus Weil PR fortran/81770 * expr.c (gfc_check_pointer_assign): Improve the check whether pointer may outlive pointer target. 2017-08-27 Thomas Koenig PR fortran/81974 * frontend-passes (inline_matumul_assign): Explicity set typespec for call to CONJG. 2017-08-21 Jerry DeLisle PR fortran/81296 * trans-io.c (get_dtio_proc): Add check for format label and set formatted flag accordingly. Reorganize the code a little. 2017-08-16 Thomas Koenig PR fortran/81116 * frontend-passes.c (realloc_string_callback): If expression is a concatenation, also check for dependency. (constant_string_length): Check for presence of symtree. 2017-08-13 Thomas Koenig * gfortran.texi: Document format of unformatted sequential files. 2017-08-11 Thomas Koenig * invoke.texi: Actually commit change about -Ofast. 2017-08-11 Thomas Koenig PR fortran/60355 * resolve.c (resolve_symbol): Adjust (and reformat) comment. Perform check if a BIND(C) is declared at module level regardless of whether it is typed implicitly or not. 2017-08-10 Fritz Reese * options.c (set_dec_flags): Only set legacy standards when value is not zero. 2017-08-10 Fritz Reese * options.c (set_dec_flags, gfc_post_options): Only set flag_d_lines with -fdec when not set by user. 2017-08-10 Fritz Reese * decl.c (attr_seen): New static variable. * decl.c (variable_decl): Match %FILL in STRUCTURE body. * gfortran.texi: Update documentation. 2017-08-08 Martin Liska * trans-types.c: Include header files. 2017-08-07 Thomas Koenig PR fortran/68829 PR fortran/81701 * options.c: Make -Ofast honor -fmax-stack-var-size. * invoke.texi: Document change. 2017-08-01 Thomas König PR fortran/79312 * intrisic.c (gfc_convert_type_warn): Only set typespec for empty array constructors which don't have it already. 2017-08-01 Thomas Koenig PR fortran/45435 * lang.opt (fc-prototypes): Add option. * gfortran.h (gfc_typespec): Add interop_kind to struct. (gfc_dump_c_prototypes): Add prototype. * decl.c (gfc_match_kind_spec): Copy symbol used for kind to typespec. * parse.c (gfc_parse_file): Call gfc_dump_prototypes. * dump-parse-tree.c (gfc_dump_c_prototypes): New function. (type_return): New enum. (get_c_type_name): New function. (write_decl): New function. (write_type): New function. (write_variable): New function. (write_proc): New function. (write_interop_decl): New function. * invoke.texi: Document -fc-prototypes. 2017-08-01 Dominique d'Humieres PR fortran/53542 * expr.c (gfc_check_init_expr): Use the renamed name. 2017-07-31 Jakub Jelinek * check.c (gfc_check_num_images): Fix a pasto. 2017-07-29 Jakub Jelinek * trans-decl.c (gfc_trans_use_stmts): Pass false as new argument to the imported_module_or_decl debug hook. 2017-07-28 Trevor Saunders * resolve.c (find_reachable_labels): Adjust. 2017-07-25 Jakub Jelinek * ioparm.def: Use 1U << 31 instead of 1 << 31 as flags2 mask. 2017-07-24 Thomas Koenig * dump-parse-tree.c (show_symbol): Show binding label if present. 2017-07-24 Thomas Koenig Mikael Morin PR fortran/66102 * fortran/trans-array.c (gfc_conv_resolve_dependencies): Break if dependency has been found. 2017-07-23 Alexander Monakov * interface.c (pair_cmp): Fix gfc_symbol comparison. Adjust comment. 2017-07-18 Nathan Sidwell * trans.c (gfc_build_array_ref): Use TYPE_MAX_VALUE. 2017-07-09 Dominique d'Humieres PR fortran/81341 * class.c (class_array_ref_detected): Remove a redundant condition. 2017-07-06 Harald Anlauf PR fortran/70071 * array.c (gfc_ref_dimen_size): Handle bad subscript triplets. 2017-07-03 Dominique d'Humieres PR fortran/79866 * resolve.c (resolve_symbol): Fix typo. 2017-07-03 Dominique d'Humieres PR fortran/79843 * symbol.c (check_conflict): Add missing "conflicts". 2017-06-29 Cesar Philippidis PR fortran/77765 * openmp.c (gfc_match_oacc_routine): Check if proc_name exist before comparing the routine name against it. 2017-06-27 Jerry DeLisle PR fortran/80164 * trans-stmt.c (gfc_trans_call): If no code expr, use code->loc as warning/error locus. 2017-06-24 Jerry DeLisle PR fortran/81160 * arith.c (wprecision_int_real): Set return value before mpz_clear and then return after it. 2017-06-15 Janus Weil PR fortran/80983 * trans-expr.c (gfc_conv_procedure_call): Deallocate the result of scalar allocatable procedure-pointer components. 2017-06-10 Thomas Koenig PR fortran/80988 * frontend-passes.c (traverse_io_block): Also check for variables occurring as indices multiple time in a single implied DO loop. 2017-06-05 Janus Weil PR fortran/70601 * trans-expr.c (gfc_conv_procedure_call): Fix detection of allocatable function results. 2017-06-05 Nicolas Koenig PR fortran/35339 * frontend-passes.c (traverse_io_block): New function. (simplify_io_impl_do): New function. (optimize_namespace): Invoke gfc_code_walker with simplify_io_impl_do. 2017-06-02 Jakub Jelinek PR fortran/80918 * openmp.c (resolve_omp_clauses): Fix a typo. 2017-05-30 David Malcolm * error.c (gfc_format_decoder): Update for new bool and const char ** params. 2017-05-29 Thomas Koenig PR fortran/37131 * frontend-passes.c (check_conjg_transpose_variable): Add prototype. (has_dimen_vector_ref): Likewise (matmul_temp_args): New function. Add prototype. (optimize_namespace): Call matmul_temp_args. 2017-05-28 Thomas Koenig * frontend-passes.c (matmul_lhs_realloc): Correct allocation size for case A1B2. 2017-05-25 Thomas Koenig * dump-parse-tree.c (show_expr): Also replace with dumpfile for showing values for forgotten case. 2017-05-24 Thomas Koenig * dump-parse-tree.c (show_expr): Replace stdout with dumpfile for showing values. 2017-05-24 Thomas Koenig PR fortran/66094 * frontend-passes.c (matrix_case): Add A2TB2. (inline_limit_check): Handle MATMUL(TRANSPOSE(A),B) (inline_matmul_assign): Likewise. 2017-05-23 Thomas Schwinge * openmp.c (OACC_KERNELS_CLAUSES): Add "OMP_CLAUSE_NUM_GANGS", "OMP_CLAUSE_NUM_WORKERS", "OMP_CLAUSE_VECTOR_LENGTH". 2017-05-22 Janus Weil PR fortran/80766 * resolve.c (resolve_fl_derived): Make sure that vtype symbols are properly resolved. 2017-05-19 Paul Thomas PR fortran/80333 * trans-io.c (nml_get_addr_expr): If we are dealing with class type data set tmp tree to get that address. (transfer_namelist_element): Set the array spec to point to the the class data. 2017-05-19 David Malcolm PR fortran/79852 * bbt.c (insert): Remove trailing exclamation mark from message. * decl.c (gfc_match_final_decl): Likewise. * dump-parse-tree.c (show_expr): Likewise. * module.c (gfc_use_module): Likewise. * primary.c (build_actual_constructor): Likewise. (gfc_convert_to_structure_constructor): Likewise. 2017-05-19 Thomas Schwinge * gfortran.h (enum gfc_omp_default_sharing): Add "OMP_DEFAULT_PRESENT". * dump-parse-tree.c (show_omp_clauses): Handle it. * openmp.c (gfc_match_omp_clauses): Likewise. * trans-openmp.c (gfc_trans_omp_clauses): Likewise. 2017-05-18 Fritz Reese PR fortran/79968 * decl.c (match_attr_spec, gfc_match_automatic, gfc_match_static, gfc_match_structure_decl): Unify diagnostic errors regarding -fdec options. * io.c (match_dec_etag, match_dec_vtag, match_dec_ftag): Ditto. 2017-05-17 Jerry DeLisle PR fortran/80741 * trans-io.c (transfer_namelist_element): Change check from NULL_TREE to null_pointer_node. 2017-05-17 Fritz Reese PR fortran/80668 * expr.c (component_initializer): Don't generate initializers for pointer components. * invoke.texi (-finit-derived): Document. 2017-05-16 Paul Thomas PR fortran/80554 * decl.c (build_sym): In a submodule allow overriding of host associated symbols from the ancestor module with a new declaration. 2017-05-15 Steven G. Kargl PR fortran/80674 * trans-stmt.c (gfc_trans_integer_select): Remove redundant condition. 2017-05-15 Steven G. Kargl PR fortran/80752 * expr.c (gfc_generate_initializer): If type conversion fails, check for error and return NULL. 2017-05-14 Nicolas Koenig PR fortran/80442 * array.c (gfc_ref_dimen_size): Simplify stride expression * data.c (gfc_advance_section): Simplify start, end and stride expressions (gfc_advance_section): Simplify start and end expressions (gfc_get_section_index): Simplify start expression 2017-05-13 Jerry DeLisle * io.c (gfc_resolve_dt): Fix returns to bool type. 2017-05-11 Jerry DeLisle PR fortran/78659 * io.c (dtio_procs_present): Add new function to check for DTIO procedures relative to I/O statement READ or WRITE. (gfc_resolve_dt): Add namelist checks using the new function. * resolve.c (dtio_procs_present): Remove function and related namelist checks. (resolve_fl_namelist): Add check specific to Fortran 95 restriction on namelist objects. 2017-05-11 Nathan Sidwell * trans-decl.c: Include dumpfile.h not tree-dump.h, 2017-05-09 Janus Weil PR fortran/79311 * resolve.c (gfc_resolve_finalizers): Ensure that derived-type components have a their finalizers resolved, also if the superordinate type itself has a finalizer. 2017-05-08 Thomas Koenig PR fortran/79930 * frontend-passes.c (matmul_to_var_expr): New function, add prototype. (matmul_to_var_code): Likewise. (optimize_namespace): Use them from gfc_code_walker. 2017-05-05 David Malcolm * cpp.c (cb_cpp_error): Replace report_diagnostic with diagnostic_report_diagnostic. * error.c (gfc_warning): Likewise. (gfc_warning_now_at): Likewise. (gfc_warning_now): Likewise. (gfc_warning_internal): Likewise. (gfc_error_now): Likewise. (gfc_fatal_error): Likewise. (gfc_error_opt): Likewise. (gfc_internal_error): Likewise. 2017-05-01 Thomas Koenig PR fortran/37131 * frontend-passes.c (inline_matmul_assign): Also check bounds for allocatable lhs and matrix-vector-multiplication. 2017-04-23 Jerry DeLisle PR fortran/80484 * io.c (format_lex): Check for '/' and set token to FMT_SLASH. (check_format): Move FMT_DT checking code to data_desc section. * module.c (gfc_match_use): Include the case of INTERFACE_DTIO. 2017-04-22 Janus Weil PR fortran/80121 * trans-types.c (gfc_conv_procedure_call): Deallocate the components of allocatable intent(out) arguments. 2017-04-21 Janus Weil PR fortran/80392 * trans-types.c (gfc_get_derived_type): Prevent an infinite loop when building a derived type that includes a procedure pointer component with a polymorphic result. 2017-04-17 Paul Thomas PR fortran/80440 * module.c (find_symtree_for_symbol): Delete. (read_module): Remove the call to the above. 2017-04-14 Janus Weil PR fortran/80361 * class.c (generate_finalization_wrapper): Give the finalization wrapper the recursive attribute. 2017-04-10 Nicolas Koenig Paul Thomas PR fortran/69498 * module.c (gfc_match_submodule): Add error if function is called in the wrong state. 2017-04-10 Janus Weil PR fortran/80046 * expr.c (gfc_check_pointer_assign): Check if procedure pointer components in a pointer assignment need an explicit interface. 2017-03-18 Nicolas Koenig PR fortran/69498 * symbol.c (gfc_delete_symtree): If there is a period in the name, ignore everything before it. 2017-03-28 Janus Weil PR fortran/78661 * trans-io.c (transfer_namelist_element): Perform a polymorphic call to a DTIO procedure if necessary. 2017-03-25 Paul Thomas PR fortran/80156 PR fortran/79382 * decl.c (access_attr_decl): Remove the error for an absent generic DTIO interface and ensure that symbol has the flavor FL_PROCEDURE. 2017-03-22 Dominique d'Humieres PR fortran/79838 * module.c: Remove trailing period. 2017-03-22 Dominique d'Humieres PR fortran/79602 * decl.c: Replace '%s' with %qs. * expr.c: Likewise. * interface.c: Likewise. * match.c: Likewise. * primary.c: Likewise. * resolve.c: Likewise. PR fortran/79844 PR fortran/80011 * io.c: Remove trailing spaces. * match.c: Likewise. * openmp.c: Likewise. * resolve.c: Likewise. * trans-intrinsic.c: Likewise. PR fortran/79853 * expr.c: Remove a double spaces. PR fortran/79859 * primary.c: Remove spurious quotes around %qs. 2017-03-22 Thomas Koenig PR fortran/80142 * frontend-passes.c (combine_array_constructor): Take location of new expression from constructor expression instead of constructor. 2017-03-20 Nicolas Koenig PR fortran/39239 * symbol.c (check_conflict): Report an error if an EQUIVALENCE object is BIND(C) 2017-03-18 Nicolas Koenig PR fortran/69498 * decl.c (add_hidden_procptr_result): Fixed Refs count of the created "ppr@" symbol. 2017-03-18 Paul Thomas PR fortran/79676 * module.c (mio_symbol_attribute): Remove reset of the flag 'no_module_procedures'. (check_for_module_procedures): New function. Move declaration of 'no_module_procedures' to above it. (gfc_dump_module): Traverse namespace calling new function. 2017-03-18 Paul Thomas PR fortran/71838 * symbol.c (check_conflict): A dummy procedure in a submodule, module procedure is not an error. (gfc_add_flavor): Ditto. 2017-03-17 Jerry DeLisle PR fortran/79841 * openmp.c (check_symbol_not_pointer): Adjust diagnostics. 2017-03-16 Jakub Jelinek PR fortran/80010 * parse.c (gfc_ascii_statement): Use !$ACC for ST_OACC_ATOMIC and ST_OACC_END_ATOMIC, instead of !ACC. * trans-decl.c (finish_oacc_declare): Use !$ACC instead of $!ACC. * openmp.c (gfc_match_oacc_declare, gfc_match_oacc_wait, gfc_resolve_oacc_declare): Likewise. PR fortran/79886 * error.c (gfc_format_decoder): Rename plus argument to set_locus, remove ATTRIBUTE_UNUSED from all arguments, call default_tree_printer if not a Fortran specific spec. * trans-io.c: Include options.h. (gfc_build_st_parameter): Temporarily disable -Wpadded around layout of artificial IO data structures. 2017-03-15 David Malcolm PR fortran/79860 * resolve.c (resolve_contained_fntype): Make error messages more amenable to translation. 2017-03-06 Richard Biener PR fortran/79894 * trans.c (gfc_add_modify_loc): Weaken assert. 2017-03-05 Andre Vehreschild , Alessandro Fanfarillo * check.c (positive_check): Add new function checking constant for being greater then zero. (gfc_check_image_status): Add checking of image_status arguments. (gfc_check_failed_or_stopped_images): Same but for failed_- and stopped_images function. * dump-parse-tree.c (show_code_node): Added output of FAIL IMAGE. * gfortran.h (enum gfc_statement): Added FAIL_IMAGE_ST. (enum gfc_isym_id): Added new intrinsic symbols. (enum gfc_exec_op): Added EXEC_FAIL_IMAGE. * gfortran.texi: Added description for the new API functions. Updated coverage of gfortran of TS18508. * intrinsic.c (add_functions): Added symbols to resolve new intrinsic functions. * intrinsic.h: Added prototypes. * iresolve.c (gfc_resolve_failed_images): Resolve the failed_images intrinsic. (gfc_resolve_image_status): Same for image_status. (gfc_resolve_stopped_images): Same for stopped_images. * libgfortran.h: Added prototypes. * match.c (gfc_match_if): Added matching of FAIL IMAGE statement. (gfc_match_fail_image): Match a FAIL IMAGE statement. * match.h: Added prototype. * parse.c (decode_statement): Added matching for FAIL IMAGE. (next_statement): Same. (gfc_ascii_statement): Same. * resolve.c: Same. * simplify.c (gfc_simplify_failed_or_stopped_images): For COARRAY= single a constant result can be returne.d (gfc_simplify_image_status): For COARRAY=single the result is constant. * st.c (gfc_free_statement): Added FAIL_IMAGE handling. * trans-decl.c (gfc_build_builtin_function_decls): Added decls of the new intrinsics. * trans-expr.c (gfc_conv_procedure_call): This is first time all arguments of a function are optional, which is now handled here correctly. * trans-intrinsic.c (conv_intrinsic_image_status): Translate image_status. (gfc_conv_intrinsic_function): Add support for image_status. (gfc_is_intrinsic_libcall): Add support for the remaining new intrinsics. * trans-stmt.c (gfc_trans_fail_image): Trans a fail image. * trans-stmt.h: Add the prototype for the above. * trans.c (trans_code): Dispatch for fail_image. * trans.h: Add the trees for the new intrinsics. 2017-03-03 Jerry DeLisle PR fortran/79841 * openmp.c (check_symbol_not_pointer): Adjust diagnostic. 2017-02-28 Paul Thomas PR fortran/79739 * resolve.c (resolve_fl_procedure): Deal with the case where 'submodule_name' is NULL so that gfc_error does not ICE. Reformat the error message to make it more consistent. 2017-02-28 Jakub Jelinek * parse.c (parse_critical_block): Use cond ? G_("...") : G_("...") instead of just cond ? "..." : "...". * scanner.c (gfc_next_char_literal): Likewise. * match.c (match_exit_cycle): Likewise. 2017-02-26 Thomas Koenig PR fortran/51119 * options.c (gfc_post_options): Set default limit for matmul inlining to 30. * invoke.texi: Document change. 2017-02-25 Dominique d'Humieres PR fortran/79601 * interface.c (check_dtio_arg_TKR_intent): Change 'intent' to 'INTENT'. 2017-02-25 Dominique d'Humieres PR fortran/79597 * interface.c (gfc_match_end_interface): Remove spurious comma and space, replace 'got %s' with 'got %qs'. 2017-02-20 Paul Thomas PR fortran/79599 * interface.c (check_dtio_arg_TKR_intent): Supply 'must' missing from error message. 2017-02-20 Paul Thomas PR fortran/79523 * interface.c (gfc_find_typebound_dtio_proc): Guard test for flavor attribute by checking that symbol is resolved. 2017-02-16 Paul Thomas PR fortran/79382 * decl.c (access_attr_decl): Test for presence of generic DTIO interface and emit error if not present. 2017-02-20 Paul Thomas PR fortran/79434 * parse.c (check_component, parse_union): Whitespace. (set_syms_host_assoc): For a derived type, check if the module in which it was declared is one of the submodule ancestors. If it is, make the components public. Otherwise, reset attribute 'host_assoc' and set 'use-assoc' so that encapsulation is preserved. 2017-02-19 Paul Thomas PR fortran/79447 * decl.c (gfc_set_constant_character_len): Whitespace. (gfc_match_end): Catch case where a procedure is contained in a module procedure and ensure that 'end procedure' is the correct termination. 2017-02-19 Paul Thomas PR fortran/79402 * resolve.c (fixup_unique_dummy): New function. (gfc_resolve_expr): Call it for dummy variables with a unique symtree name. 2017-02-19 Andre Vehreschild PR fortran/79229 * trans-expr.c (gfc_trans_assignment_1): Deref indirect refs when compiling with -fcheck=mem to check the pointer and not the data. 2017-02-19 Andre Vehreschild PR fortran/79335 * trans-array.c (duplicate_allocatable_coarray): Ensure attributes passed are properly initialized. (structure_alloc_comps): Same. * trans-expr.c (gfc_trans_structure_assign): Same. 2017-02-13 Jakub Jelinek * trans-expr.c (gfc_conv_substring): Add missing space in diagnostics. 2017-02-12 Thomas Koenig PR fortran/65542 * intrinsic.c (gfc_intrinsic_func_interface): Return an error for -std=f95 for disallowed transformational functions in initialization expressions. 2017-02-09 Cesar Philippidis Joseph Myers * openmp.c (resolve_omp_clauses): Error on directives containing both tile and collapse clauses. (resolve_oacc_loop_blocks): Represent '*' tile arguments as zero. * trans-openmp.c (gfc_trans_omp_do): Lower tiled loops like collapsed loops. 2017-02-07 Steven G. Kargl * trans-types.c (gfc_get_int_kind_from_width_isofortranen): Choose REAL type with the widest precision if two (or more) have the same storage size. 2017-02-05 Andre Vehreschild PR fortran/79344 * trans-stmt.c (gfc_trans_allocate): Only deallocate the components of the temporary, when a new object was created for the temporary. Not when it is just an alias to an existing object. 2017-02-05 Andre Vehreschild PR fortran/79335 * trans-decl.c (generate_coarray_sym_init): Retrieve the symbol's attributes before using them. 2017-02-05 Andre Vehreschild PR fortran/78958 * trans-stmt.c (gfc_trans_allocate): Add the multiplying the _len component of unlimited polymorphic objects when source-allocating. 2017-02-05 Andre Vehreschild PR fortran/79230 * trans-array.c (structure_alloc_comps): Ignore pointer components when freeing structures. 2017-01-25 Maxim Ostapenko PR lto/79061 * f95-lang.c (gfc_create_decls): Include stringpool.h. Pass main_input_filename to build_translation_unit_decl. 2017-01-23 Thomas Koenig * arith.c (arith_power): If simplifying integer power expression to zero, warn if -Winteger-division is given. 2017-01-22 Jakub Jelinek PR fortran/79154 * parse.c (matchs, matcho, matchds, matchdo): Replace return st; with { ret = st; goto finish; }. (decode_omp_directive): Allow declare simd, declare target and simd directives in PURE/ELEMENTAL procedures. Only call gfc_unset_implicit_pure on successful match of other procedures. 2017-01-21 Gerald Pfeifer * gfc-internals.texi (Symbol Versioning): Change references to www.akkadia.org to https. 2017-01-21 Jakub Jelinek * gfortran.h (gfc_extract_int): Change return type to bool. Add int argument with = 0. * decl.c (gfc_match_kind_spec): Adjust gfc_extract_int caller, pass 1 as new last argument to it, don't emit gfc_error. (match_char_kind): Likewise. (gfc_match_decl_type_spec): Use gfc_get_string ("%s", x) instead of gfc_get_string (x). (gfc_match_derived_decl, match_binding_attributes): Likewise. (gfc_match_structure_decl): Don't sprintf back to name, call get_struct_decl directly with gfc_dt_upper_string (name) result. * trans-stmt.c (gfc_trans_allocate): Use gfc_get_string ("%s", x) instead of gfc_get_string (x). * module.c (gfc_dt_lower_string, gfc_dt_upper_string, gfc_match_use, gfc_match_submodule, find_true_name, mio_pool_string, mio_symtree_ref, mio_expr, mio_omp_udr_expr, load_generic_interfaces, load_omp_udrs, load_needed, read_module, dump_module, create_intrinsic_function, import_iso_c_binding_module, create_int_parameter, create_int_parameter_array, create_derived_type, use_iso_fortran_env_module): Likewise. * error.c (gfc_diagnostic_starter, gfc_diagnostic_start_span): Use pp_verbatim (context->printer, "%s", x) instead of pp_verbatim (context->printer, x). * match.c (gfc_match_small_int): Adjust gfc_extract_int caller, pass 1 as new last argument to it, don't emit gfc_error. (gfc_match_small_int_expr): Likewise. * iresolve.c (gfc_get_string): Optimize format "%s" case. (resolve_bound): Use gfc_get_string ("%s", x) instead of gfc_get_string (x). (resolve_transformational): Formatting fix. (gfc_resolve_char_achar): Change name argument to bool is_achar, use a single format string and if is_achar add "a" before "char". (gfc_resolve_achar, gfc_resolve_char): Adjust callers. * expr.c (gfc_extract_int): Change return type to bool, return true if some error occurred. Add REPORT_ERROR argument, if non-zero call either gfc_error or gfc_error_now depending on its sign. * arith.c (arith_power): Adjust gfc_extract_int caller. * symbol.c (gfc_add_component): Use gfc_get_string ("%s", x) instead of gfc_get_string (x). (gfc_new_symtree, gfc_delete_symtree, gfc_get_uop, gfc_new_symbol, gfc_get_gsymbol, generate_isocbinding_symbol): Likewise. * openmp.c (gfc_match_omp_clauses): Adjust gfc_extract_int caller, pass -1 as new last argument to it, don't emit gfc_error_now. (gfc_match_omp_declare_reduction): Use gfc_get_string ("%s", x) instead of gfc_get_string (x). * check.c (kind_check): Adjust gfc_extract_int caller. * intrinsic.c (add_sym, find_sym, make_alias): Use gfc_get_string ("%s", x) instead of gfc_get_string (x). * simplify.c (get_kind, gfc_simplify_btest, gfc_simplify_maskr, gfc_simplify_maskl, gfc_simplify_poppar, gfc_simplify_repeat, gfc_simplify_selected_int_kind, gfc_simplify_selected_real_kind): Adjust gfc_extract_int callers. * trans-decl.c (gfc_find_module): Use gfc_get_string ("%s", x) instead of gfc_get_string (x). * matchexp.c (expression_syntax): Add const. * primary.c (match_kind_param, match_hollerith_constant, match_string_constant): Adjust gfc_extract_int callers. (match_keyword_arg): Use gfc_get_string ("%s", x) instead of gfc_get_string (x). * frontend-passes.c (optimize_minmaxloc): Likewise. 2017-01-19 Andre Vehreschild PR fortran/70696 * trans-decl.c (gfc_build_qualified_array): Add static decl to parent function only, when the decl-context is not the translation unit. 2017-01-18 Louis Krupp PR fortran/50069 PR fortran/55086 * trans-expr.c (gfc_conv_variable): Don't treat temporary variables as function arguments. * trans-stmt.c (forall_make_variable_temp, generate_loop_for_temp_to_lhs, gfc_trans_assign_need_temp, gfc_trans_forall_1): Don't adjust offset of forall temporary for array sections, make forall temporaries work for substring expressions, improve test coverage by adding -ftest-forall-temp option to request usage of temporary array in forall code. * lang.opt: Add -ftest-forall-temp option. * invoke.texi: Add -ftest-forall-temp option. 2017-01-18 Andre Vehreschild * primary.c (caf_variable_attr): Improve figuring whether the current component is the last one refed. * trans-stmt.c (gfc_trans_allocate): Do not generate sync_all calls when allocating pointer or allocatable components. 2017-01-18 Andre Vehreschild * gfortran.texi: Add missing parameters to caf-API functions. Correct typos and clarify some descriptions. 2017-01-18 Andre Vehreschild PR fortran/70696 Missed some cases, here they are: * trans-decl.c (gfc_build_qualified_array): Add static tokens to the parent function's scope. * trans-expr.c (gfc_get_tree_for_caf_expr): Shorten code. Remove unnecessary assert. 2017-01-13 Andre Vehreschild PR fortran/70697 * resolve.c (resolve_lock_unlock_event): Resolve the expression for event's until_count. 2017-01-13 Andre Vehreschild PR fortran/70696 * trans-expr.c (gfc_get_tree_for_caf_expr): Ensure the backend_decl is valid before accessing it. 2017-01-09 Jakub Jelinek PR translation/79019 PR translation/79020 * decl.c (attr_decl1): Fix spelling in translatable string. * intrinsic.texi: Fix spelling - invokation -> invocation. * lang.opt (faggressive-function-elimination, gfc_convert): Fix typos in descriptions. * openmp.c (resolve_omp_clauses): Add missing whitespace to translatable strings. 2017-01-08 Martin Sebor PR tree-optimization/78913 PR middle-end/77708 * trans-common.c (build_equiv_decl): Increase buffer size to avoid truncation for any argument. * trans-types.c (gfc_build_logical_type): Same. 2017-01-07 Andre Vehreschild PR fortran/78781 PR fortran/78935 * expr.c (gfc_check_pointer_assign): Return the same error message for rewritten coarray pointer assignments like for plain ones. * gfortran.h: Change prototype. * primary.c (caf_variable_attr): Set attributes used ones only only ones. Add setting of pointer_comp attribute. (gfc_caf_attr): Add setting of pointer_comp attribute. * trans-array.c (gfc_array_allocate): Add flag that the component to allocate is not an ultimate coarray component. Add allocation of pointer arrays. (structure_alloc_comps): Extend nullify to treat pointer components in coarrays correctly. Restructure nullify to remove redundant code. (gfc_nullify_alloc_comp): Allow setting caf_mode flags. * trans-array.h: Change prototype of gfc_nullify_alloc_comp (). * trans-decl.c (generate_coarray_sym_init): Call nullify_alloc_comp for derived type coarrays with pointer components. * trans-expr.c (gfc_trans_structure_assign): Also treat pointer components. (trans_caf_token_assign): Handle assignment of token of scalar pointer components. (gfc_trans_pointer_assignment): Call above routine. * trans-intrinsic.c (conv_expr_ref_to_caf_ref): Add treating pointer components. (gfc_conv_intrinsic_caf_get): Likewise. (conv_caf_send): Likewise. * trans-stmt.c (gfc_trans_allocate): After allocating a derived type in a coarray pre-register the tokens. (gfc_trans_deallocate): Simply determining the coarray type (scalar or array) and deregistering it correctly. * trans-types.c (gfc_typenode_for_spec): Replace in_coarray flag by the actual codim to allow lookup of array types in the cache. (gfc_build_array_type): Likewise. (gfc_get_array_descriptor_base): Likewise. (gfc_get_array_type_bounds): Likewise. (gfc_get_derived_type): Likewise. * trans-types.h: Likewise. * trans.c (gfc_deallocate_with_status): Enable deregistering of all kind of coarray components. (gfc_deallocate_scalar_with_status): Use free() in fcoarray_single mode instead of caf_deregister. 2017-01-06 Jakub Jelinek * simplify.c (simplify_transformation_to_array): Use GCC_DIAGNOSTIC_PUSH_IGNORED and GCC_DIAGNOSTIC_POP instead of #pragma GCC diagnostic {push,ignored,pop}. 2017-01-06 Alexandre Oliva * simplify.c (simplify_transformation_to_array): Silence array bounds warning. Fix whitespace. 2017-01-04 Alexandre Oliva * module.c (load_omp_udrs): Initialize name. 2017-01-02 Janne Blomqvist PR fortran/78534 * trans-expr.c (gfc_trans_string_copy): Rework string copy algorithm to avoid -Wstringop-overflow warning. 2017-01-01 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. Copyright (C) 2017 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.