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.