2011-07-23 Tobias Burnus * resolve.c (resolve_symbol): Fix coarray var decl check. 2011-07-21 Daniel Carrera * trans.c (gfc_allocate_with_status): Split into two functions gfc_allocate_using_malloc and gfc_allocate_usig_lib. (gfc_allocate_using_malloc): The status parameter is now the actual status rather than a pointer. Code cleanup. (gfc_allocate_using_lib): Ditto. Add new parametrs errmsg and errlen. Pass these to the coarray lib. * trans-openmp.c (gfc_omp_clause_default_ctor): Update calls to gfc_allocate_allocatable. (gfc_omp_clause_copy_ctor): Ditto. (gfc_trans_omp_array_reduction): Ditto. * trans-stmt.c (gfc_trans_allocate): Ditto. Update call to gfc_allocate_using_malloc. Pass stat rather than pstat to the allocate fuctions. If using coarray lib, pass errmsg and errlen to the allocate functions. Move error checking outside the if (!gfc_array_allocate) block so that it also affects trees produced by gfc_array_allocate. * trans-array.c (gfc_array_allocate): Add new parameters errmsg and errlen. Replace parameter pstat by status. Code cleanup. Update calls to gfc_allocate_allocatable and gfc_allocate_using_malloc. * trans-array.h (gfc_array_allocate): Update signature of gfc_array_allocate. 2011-07-21 Steven G. Kargl * gfortran.texi: Remove a duplicate word. 2011-07-21 Tobias Burnus * check.c (gfc_check_present): Allow coarrays. * trans-array.c (gfc_conv_array_ref): Avoid casting when a pointer is wanted. * trans-decl.c (create_function_arglist): For -fcoarray=lib, handle hidden token and offset arguments for nondescriptor coarrays. * trans-expr.c (get_tree_for_caf_expr): New function. (gfc_conv_procedure_call): For -fcoarray=lib pass the token and offset for nondescriptor coarray dummies. * trans.h (lang_type): Add caf_offset tree. (GFC_TYPE_ARRAY_CAF_OFFSET): New macro. 2011-07-19 Tobias Burnus * expr.c (gfc_is_coarray): New function. * gfortran.h (gfc_is_coarray): New prototype. * interface.c (compare_parameter): Use it. 2011-07-19 Richard Guenther * trans-expr.c (fill_with_spaces): Use fold_build_pointer_plus. (gfc_trans_string_copy): Likewise. * trans-intrinsic.c (gfc_conv_intrinsic_repeat): Likewise. * trans-types.c (gfc_get_array_descr_info): Likewise. * trans.c (gfc_build_array_ref): Likewise. 2011-07-19 Janus Weil PR fortran/49708 * resolve.c (resolve_allocate_expr): Fix diagnostics for pointers. 2011-07-18 Tobias Burnus * trans-decl.c (gfc_build_qualified_array): Make coarray's token TYPE_QUAL_RESTRICT. 2011-07-18 Tobias Burnus * resolve.c (resolve_transfer): Mention defined I/O in the diagnostic for alloc_comp/pointer_comp. 2011-07-17 Tobias Burnus PR fortran/34657 * module.c (check_for_ambiguous): Check whether the name is matches the current program unit. 2011-07-17 Tobias Burnus PR fortran/49624 * expr.c (gfc_check_pointer_assign): Fix checking for invalid pointer bounds. 2011-07-16 Tobias Burnus * expr.c (gfc_ref_this_image): New function. (gfc_is_coindexed): Use it. * gfortran.h (gfc_ref_this_image): New prototype. * resolve.c (resolve_deallocate_expr, resolve_allocate_expr): Support alloc scalar coarrays. * trans-array.c (gfc_conv_array_ref, gfc_array_init_size, gfc_conv_descriptor_cosize, gfc_array_allocate, gfc_trans_deferred_array): Ditto. * trans-expr.c (gfc_conv_variable) Ditto.: * trans-stmt.c (gfc_trans_deallocate): Ditto. * trans-types.c (gfc_get_element_type, gfc_get_array_type_bounds gfc_get_array_descr_info): Ditto. * trans-decl.c (gfc_get_symbol_decl): Ditto. 2011-07-11 Jakub Jelinek PR fortran/49698 * trans-stmt.c (gfc_trans_pointer_assign_need_temp): Initialize inner_size to gfc_index_one_node instead of integer_one_node. 2011-07-10 Tobias Burnus PR fortran/49690 * intrinsic.c (add_functions): Use BT_VOID for 2nd argument of SIGNAL. 2011-07-09 Uros Bizjak PR fortran/48926 * expr.c (gfc_get_corank): Change return value to int. * gfortran.h (gfc_get_corank): Update function prototype. 2011-07-07 Mikael Morin PR fortran/49648 * resolve.c (resolve_symbol): Force resolution of function result's array specification. 2011-07-07 Tobias Burnus * trans.c (gfc_allocate_with_status): Call _gfortran_caf_register with NULL arguments for (new) stat=/errmsg= arguments. 2011-07-06 Daniel Carrera * trans-array.c (gfc_array_allocate): Rename allocatable_array to allocatable. Rename function gfc_allocate_array_with_status to gfc_allocate_allocatable_with_status. Update function call for gfc_allocate_with_status. * trans-opemp.c (gfc_omp_clause_default_ctor): Rename function gfc_allocate_array_with_status to gfc_allocate_allocatable_with_status. * trans-stmt.c (gfc_trans_allocate): Update function call for gfc_allocate_with_status. Rename function gfc_allocate_array_with_status to gfc_allocate_allocatable_with_status. * trans.c (gfc_call_malloc): Add new parameter gfc_allocate_with_status so it uses the library for memory allocation when -fcoarray=lib. (gfc_allocate_allocatable_with_status): Renamed from gfc_allocate_array_with_status. (gfc_allocate_allocatable_with_status): Update function call for gfc_allocate_with_status. * trans.h (gfc_coarray_type): New enum. (gfc_allocate_with_status): Update prototype. (gfc_allocate_allocatable_with_status): Renamed from gfc_allocate_array_with_status. * trans-decl.c (generate_coarray_sym_init): Use the new constant GFC_CAF_COARRAY_ALLOC in the call to gfor_fndecl_caf_register. 2011-07-06 Richard Guenther * f95-lang.c (gfc_init_decl_processing): Merge calls to build_common_tree_nodes and build_common_tree_nodes_2. 2011-07-04 Jakub Jelinek PR fortran/49623 * gfortranspec.c (lang_specific_driver): Ignore options with CL_ERR_MISSING_ARG errors. 2011-07-02 Janus Weil PR fortran/49562 * expr.c (gfc_check_vardef_context): Handle type-bound procedures. 2011-06-30 Jakub Jelinek PR fortran/49540 * gfortran.h (gfc_constructor): Add repeat field. * trans-array.c (gfc_conv_array_initializer): Handle repeat > 1. * array.c (current_expand): Add repeat field. (expand_constructor): Copy repeat. * constructor.c (node_free, node_copy, gfc_constructor_get, gfc_constructor_lookup): Handle repeat field. (gfc_constructor_lookup_next, gfc_constructor_remove): New functions. * data.h (gfc_assign_data_value): Add mpz_t * argument. (gfc_assign_data_value_range): Removed. * constructor.h (gfc_constructor_advance): Removed. (gfc_constructor_lookup_next, gfc_constructor_remove): New prototypes. * data.c (gfc_assign_data_value): Add REPEAT argument, handle it and also handle overwriting a range with a single entry. (gfc_assign_data_value_range): Removed. * resolve.c (check_data_variable): Adjust gfc_assign_data_value call. Use gfc_assign_data_value instead of gfc_assign_data_value_expr. 2011-06-27 Janus Weil PR fortran/49466 * trans-array.c (structure_alloc_comps): Make sure sub-components and extended types are correctly deallocated. 2011-06-21 Andrew MacLeod * trans-openmp.c: Add sync_ or SYNC__ to builtin names. * trans-stmt.c: Add sync_ or SYNC__ to builtin names. * trans-decl.c: Add sync_ or SYNC__ to builtin names. 2011-06-21 Janus Weil PR fortran/49112 * class.c (gfc_find_derived_vtab): Make vtab and default initialization symbols SAVE_IMPLICIT. 2011-06-20 Tobias Burnus PR fortran/18918 * gfortran.h (gfc_check_vardef_context): Update prototype. (iso_fortran_env_symbol): Handle derived types. (symbol_attribute): Add lock_comp. * expr.c (gfc_check_vardef_context): Add LOCK_TYPE check. * interface.c (compare_parameter, gfc_procedure_use): Handle LOCK_TYPE. (compare_actual_formal): Update gfc_check_vardef_context call. * check.c (gfc_check_atomic_def, gfc_check_atomic_ref): Ditto. * intrinsic.c (check_arglist): Ditto. * io.c (resolve_tag, gfc_resolve_dt, gfc_resolve_inquire): Ditto. * iso-fortran-env.def (ISOFORTRAN_LOCK_TYPE): Add. * intrinsic.texi (ISO_FORTRAN_ENV): Document LOCK_TYPE. * module.c (mio_symbol_attribute): Handle lock_comp. (create_derived_type): New function. (use_iso_fortran_env_module): Call it to handle LOCK_TYPE. * parse.c (parse_derived): Add constraint check for LOCK_TYPE. * resolve.c (resolve_symbol, resolve_lock_unlock): Add constraint checks for LOCK_TYPE. (gfc_resolve_iterator, resolve_deallocate_expr, resolve_allocate_expr, resolve_code, resolve_transfer): Update gfc_check_vardef_context call. * trans-stmt.h (gfc_trans_lock_unlock): New prototype. * trans-stmt.c (gfc_trans_lock_unlock): New function. * trans.c (trans_code): Handle LOCK and UNLOCK. 2011-06-18 Janus Weil PR fortran/49400 * decl.c (gfc_match_procedure): Allow PROCEDURE declarations inside BLOCK constructs. 2011-06-17 Janus Weil PR fortran/48699 * check.c (gfc_check_move_alloc): If 'TO' argument is polymorphic, make sure the vtab is present. 2011-06-16 Janus Weil PR fortran/49074 * interface.c (gfc_extend_assign): Propagate the locus from the assignment to the type-bound procedure call. 2011-06-16 Janus Weil PR fortran/49417 * module.c (mio_component): Make sure the 'class_ok' attribute is set for use-associated CLASS components. * parse.c (parse_derived): Check for 'class_ok' attribute. * resolve.c (resolve_fl_derived): Ditto. 2011-06-13 Thomas Koenig * frontend-passes.c (remove_trim): New function. (optimize_assignment): Use it. (optimize_comparison): Likewise. Return correct status for previous change. 2011-06-12 Tobias Burnus PR fortran/49324 * trans-expr.c (gfc_trans_assignment_1): Tell gfc_trans_scalar_assign to also deep-copy RHS nonvariables with allocatable components. * trans-array.c (gfc_conv_expr_descriptor): Ditto. 2011-05-11 Thomas Koenig * frontend-passes.c (optimize_assignment): Follow chains of concatenation operators to the end for removing trailing TRIMS for assignments. 2011-06-10 Daniel Carrera * trans-decl.c (gfc_build_builtin_function_decls): Updated declaration of caf_sync_all and caf_sync_images. * trans-stmt.c (gfc_trans_sync): Function can now handle a "stat" variable that has an integer type different from integer_type_node. 2011-06-09 Richard Guenther * trans.c (gfc_allocate_array_with_status): Mark error path as unlikely. 2011-06-08 Tobias Burnus PR fortran/18918 * gfortran.h (gfc_statement): Add ST_LOCK and ST_UNLOCK. (gfc_exec_op): Add EXEC_LOCK and EXEC_UNLOCK. (gfc_code): Add expr4. * match.h (gfc_match_lock, gfc_match_unlock): New prototypes. * match.c (gfc_match_lock, gfc_match_unlock, lock_unlock_statement): New functions. (sync_statement): Bug fix, avoiding double freeing. (gfc_match_if): Handle LOCK/UNLOCK statement. * parse.c (decode_statement, next_statement, gfc_ascii_statement): Ditto. * st.c (gfc_free_statement): Handle LOCK and UNLOCK. * resolve.c (resolve_lock_unlock): New function. (resolve_code): Call it. * dump-parse-tree.c (show_code_node): Handle LOCK/UNLOCK. 2011-06-07 Richard Guenther * f95-lang.c (gfc_init_decl_processing): Do not set size_type_node or call set_sizetype. 2011-06-05 Tobias Burnus PR fortran/49255 * trans-expr.c (gfc_conv_procedure_call): Fix -fcheck=pointer for F2008. 2011-06-05 Andreas Schmidt Thomas Koenig * dump-parse-tree.c (show_symbol): Don't dump namespace for ENTRY to avoid infinite recursion. 2011-06-02 Asher Langton PR fortran/49268 * trans-decl.c (gfc_trans_deferred_vars): Treat assumed-size Cray pointees as AS_EXPLICIT. 2011-06-02 Asher Langton PR fortran/37039 * decl.c (variable_decl): Merge current_as before copying to cp_as. 2011-06-02 Steven G. Kargl PR fortran/49265 * decl.c (gfc_match_modproc): Allow for a double colon in a module procedure statement. * parse.c ( decode_statement): Deal with whitespace around :: in gfc_match_modproc. 2011-05-31 Tobias Burnus PR fortran/18918 * intrinsic.c (klass): Add CLASS_ATOMIC. (add_subroutines): Add atomic_ref/atomic_define. * intrinsic.texi (ATOMIC_REF, ATOMIC_DEFINE): Document. * intrinsic.h (gfc_check_atomic_def, gfc_check_atomic_ref, gfc_resolve_atomic_def, gfc_resolve_atomic_ref): New prototypes. * gfortran.h (gfc_isym_id): Add GFC_ISYM_ATOMIC_DEF and GFC_ISYM_ATOMIC_REF. (gfc_atomic_int_kind, gfc_atomic_logical_kind): New global vars. * iresolve.c (gfc_resolve_atomic_def, gfc_resolve_atomic_ref): New functions. * check.c (gfc_check_atomic, gfc_check_atomic_def, gfc_check_atomic_ref): New functions. * iso-fortran-env.def (ISOFORTRANENV_FILE_ATOMIC_INT_KIND, ISOFORTRANENV_FILE_ATOMIC_LOGICAL_KIND): Change kind value. * trans-intrinsic.c (conv_intrinsic_atomic_def, conv_intrinsic_atomic_ref, gfc_conv_intrinsic_subroutine): New functions. (conv_intrinsic_move_alloc) Renamed from gfc_conv_intrinsic_move_alloc - and made static. * trans.h (gfc_conv_intrinsic_move_alloc): Remove. (gfc_conv_intrinsic_subroutine) Add prototype. * trans.c (trans_code): Call gfc_conv_intrinsic_subroutine. * trans-types (gfc_atomic_int_kind, gfc_atomic_logical_kind): New global vars. (gfc_init_kinds): Set them. 2011-05-31 Tobias Burnus PR fortran/18918 * trans-array.c (gfc_trans_dummy_array_bias): Handle cobounds of assumed-shape arrays. 2011-05-31 Tobias Burnus PR fortran/18918 * resolve.c (resolve_fl_variable): Handle static coarrays with non-constant cobounds. 2011-05-29 Janus Weil PR fortran/47601 * module.c (mio_component_ref): Handle components of extended types. * symbol.c (gfc_find_component): Return is sym is NULL. 2011-05-29 Tobias Burnus PR fortran/18918 * interface.c (compare_parameter): Add check for passing coarray to allocatable noncoarray dummy. 2011-05-29 Tobias Burnus Richard Guenther PR fortran/18918 * trans-types.c (gfc_get_nodesc_array_type): Don't mess with the type's TREE_TYPE. * trans-array.c (gfc_conv_array_ref): Use TYPE_MAIN_VARIANT. * trans.c (gfc_build_array_ref): Ditto. 2011-05-27 Tobias Burnus PR fortran/18918 * check.c (gfc_check_associated, gfc_check_null): Add coindexed check. * match.c (gfc_match_nullify): Ditto. * resolve.c (resolve_deallocate_expr): Ditto. * trans-types.c (gfc_get_nodesc_array_type): Don't set restricted for nonpointers. 2011-05-27 Tobias Burnus PR fortran/48820 * gfortran.h (gfc_isym_id): Add GFC_ISYM_RANK. * intrinsic.c (add_functions): Add rank intrinsic. (gfc_check_intrinsic_standard): Handle GFC_STD_F2008_TR. * intrinsic.h (gfc_simplify_rank, gfc_check_rank): Add prototypes. * simplify.c (gfc_simplify_rank): New function. * intrinsic.texi (RANK): Add description for rank intrinsic. * check.c (gfc_check_rank): New function. 2011-05-26 Paul Thomas Thomas Koenig PR fortran/48955 * trans-expr.c (gfc_trans_assignment_1): GFC_REVERSE_NOT_SET changed to GFC_ENABLE_REVERSE. * trans-array.c (gfc_init_loopinfo): GFC_CANNOT_REVERSE changed to GFC_INHIBIT_REVERSE. * gfortran.h : Enum gfc_reverse is now GFC_ENABLE_REVERSE, GFC_FORWARD_SET, GFC_REVERSE_SET and GFC_INHIBIT_REVERSE. * dependency.c (gfc_dep_resolver): Change names for elements of gfc_reverse as necessary. Change the logic so that forward dependences are remembered as well as backward ones. When both have appeared, force a temporary. 2011-05-26 Tobias Burnus PR fortran/18918 * trans-array.c (gfc_conv_array_ref): Handle pointer coarrays. * trans-decl.c (has_coarray_vars, caf_init_block, gfor_fndecl_caf_register): New file-global variables. (gfc_finish_var_decl): Make sure that coarrays in main are static. (gfc_build_qualified_array): Generate coarray token variable. (gfc_get_symbol_decl): Don't use a static initializer for coarrays. (gfc_build_builtin_function_decls): Set gfor_fndecl_caf_register. (gfc_trans_deferred_vars, gfc_emit_parameter_debug_info): Skip for static coarrays. (generate_local_decl): Check for local coarrays. (create_main_function): SYNC ALL before calling MAIN. (generate_coarray_sym_init): Register static coarray. (generate_coarray_init): Generate CAF registering constructor function. (gfc_generate_function_code): Call it, if needed, do not create cgraph twice. (gfc_generate_module_vars, gfc_process_block_locals): Call generate_coarray_init. * trans-types.c (gfc_get_nodesc_array_type): Generate pointers for -fcoarray=lib. * trans.h (gfor_fndecl_caf_register): New variable. (lang_type): New element caf_token. (GFC_TYPE_ARRAY_CAF_TOKEN): New macro. 2011-05-24 Joseph Myers * Make-lang.in (GFORTRAN_D_OBJS): Remove prefix.o. (gfortran$(exeext)): Use libcommon-target.a. 2011-05-22 Thomas Koenig * frontend-passes.c (cfe_register_funcs): Also register character functions if their charlens are known and constant. Also register allocatable functions. 2011-05-21 Janus Weil PR fortran/48699 * match.c (select_type_set_tmp): Make the temporary ALLOCATABLE if the selector is ALLOCATABLE. 2011-05-20 Janus Weil PR fortran/48706 * module.c (write_dt_extensions): Do not write extended types which are local to a subroutine. 2011-05-20 Joseph Myers * Make-lang.in (GFORTRAN_D_OBJS): Remove version.o and intl.o. 2011-05-20 Janne Blomqvist * gfortran.texi (set_fpe): Update documentation. * invoke.texi (-ffpe-trap): Likewise. * libgfortran.h (GFC_FPE_PRECISION): Rename to GFC_FPE_INEXACT. * options.c (gfc_handle_fpe_trap_option): Handle inexact and make precision an alias for it. 2011-05-19 Tobias Burnus PR fortran/18918 * trans-types.c (gfc_get_element_type): Handle scalar coarrays. (gfc_get_nodesc_array_type): Make a variant-type copy for scalar coarrays. * trans.c (gfc_build_array_ref): Return original type not variant copy for scalar coarrays. * trans-array.c (gfc_conv_array_ref): Ditto. 2011-05-18 Janus Weil PR fortran/48700 * trans-intrinsic.c (gfc_conv_intrinsic_move_alloc): Deallocate 'TO' argument to avoid memory leaks. 2011-05-16 Tobias Burnus * gfortran.texi (_gfortran_set_options): Add GFC_STD_F2008_TR. (Fortran 2008 status): Multi-image support for coarrays. (TR 19113 status): New section. 2011-05-15 Tobias Burnus PR fortran/18918 actual argument is not an array; rank mismatch is diagnosted later. * trans-decl.c (gfc_get_symbol_decl, gfc_trans_deferred_vars): Handle scalar coarrays. * trans-types.c (gfc_get_array_type_bounds): Ditto. 2011-05-15 Joern Rennecke PR middle-end/46500 * trans-types.c: Include "tm.h". [0] (c_size_t_size): Remove. 2011-05-15 Janne Blomqvist PR libfortran/48915 * gfortran.texi (_gfortran_set_options): Even though -fbacktrace is now the default, the library defaults to backtracing disabled. 2011-05-14 Tobias Burnus * lang.opt (fdump-core): Re-add as ignored option for backward compatibility. 2011-05-14 Janne Blomqvist PR libfortran/48915 * gfortran.texi: Update mixed-language programming section reflecting the removal of the fdump-core option, and that -fbacktrace is now enabled by default. 2011-05-14 Thomas Koenig PR fortran/22572 * frontend-passes.c (cfe_register_funcs): Also register functions for potential elimination if the rank is > 0, the shape is unknown and reallocate on assignment is active. (create_var): For rank > 0 functions with unknown shape, create an allocatable temporary. 2011-05-14 Tobias Burnus PR fortran/18918 * interface.c (compare_parameter): Skip diagnostic if actual argument is not an array; rank mismatch is diagnosted later. 2011-05-14 Tobias Burnus * options.c (gfc_init_options, gfc_post_options): Enable -fstack-arrays by default if -Ofast is used. * invoke.texi (-fstack-arrays): Document this. 2011-05-14 Janne Blomqvist PR libfortran/48915 * gfortran.h (gfc_option_t): Remove flag_dump_core. * gfortran.texi (GFORTRAN_ERROR_DUMPCORE): Remove section. (GFORTRAN_ERROR_BACKTRACE): Document that it's enabled by default. * intrinsic.texi (ABORT): Remove explanation of -fdump-core. * invoke.texi: Remove -fdump-core, document that -fbacktrace is enabled by default. * lang.opt: Remove -fdump-core. * options.c (gfc_init_options): Make backtrace default to enabled, remove dump_core. (gfc_handle_option): Remove OPT_fdump-core. * trans-decl.c: Pass a 0 to preserve ABI. 2011-05-14 Janne Blomqvist * gfortran.texi: Remove GFORTRAN_USE_STDERR documentation. 2011-05-13 Tobias Burnus PR fortran/48972 * io.c (resolve_tag_format, resolve_tag): Make sure that the string is of default kind. (gfc_resolve_inquire): Also resolve decimal tag. 2011-05-12 Tobias Burnus PR fortran/48972 * resolve.c (resolve_intrinsic): Don't resolve module intrinsics multiple times. 2011-05-11 Tobias Burnus PR fortran/48889 * expr.c (gfc_is_constant_expr): Use e->value.function.esym instead of e->symtree->n.sym, if available. 2011-05-07 Eric Botcazou * f95-lang.c (global_bindings_p): Return bool and simplify. 2011-05-07 Tobias Burnus PR fortran/18918 PR fortran/48919 * trans.h: Move gfc_init_coarray_decl prototype ... * gfortran.h: ... to here. * parse.c (translate_all_program_units): Call gfc_init_coarray_decl. (gfc_parse_file): Update translate_all_program_units call. * trans-decl.c (gfc_init_coarray_decl): Fix variable declaration, new argument whether DECL_EXTERNAL should be used. (create_main_function): Update gfc_init_coarray_decl call. * trans-intrinsic.c (trans_this_image, trans_image_index, conv_intrinsic_cobound): Ditto. 2011-05-06 Tobias Burnus PR fortran/18918 * trans-array.c (gfc_walk_variable_expr): Continue walking for scalar coarrays. * trans-intrinsic.c (convert_element_to_coarray_ref): New function. (trans_this_image, trans_image_index, conv_intrinsic_cobound): Use it. (trans_this_image): Fix algorithm. * trans-types.c (gfc_get_element_type, gfc_get_array_descriptor_base, gfc_sym_type): Handle scalar coarrays. 2011-05-06 Tobias Burnus PR fortran/48858 PR fortran/48820 * lang.opt (std=f2008tr): New. * libgfortran.h (GFC_STD_F2008_TR): New macro constant. * decl.c (verify_c_interop_param): Allow OPTIONAL in BIND(C) procedures for -std=f2008tr/gnu/legacy. (gfc_match_import): Set sym to NULL. * options.c (set_default_std_flags,gfc_handle_option): Handle -std=f2008tr. * invoke.texi (-std=): Document -std=f2008tr. 2011-05-05 Nathan Froyd * trans-decl.c (gfc_trans_entry_master_switch): Call build_case_label. * trans-io.c (add_case): Likewise. * trans-stmt.c (gfc_trans_integer_select): Likewise. (gfc_trans_character_select): Likewise. 2011-05-05 Eric Botcazou * trans-decl.c (trans_function_start): Do not set dont_save_pending_sizes_p. 2011-05-04 Nathan Froyd * trans.h (gfc_chainon_list): Delete. * trans.c (gfc_chainon_list): Delete. 2011-05-04 Tobias Burnus PR fortran/48864 * invoke.texi (fno-protect-parens): Document that -Ofast implies -fno-protect-parens. * options.c (gfc_init_options, gfc_post_options): Make -Ofast imply -fno-protect-parens. 2011-05-04 Nathan Froyd * trans-decl.c (build_library_function_decl_1): Call build_function_type_vec. Adjust argument list building accordingly. * trans-intrinsic.c (gfc_get_intrinsic_lib_fndecl): Likewise. * trans-types.c (gfc_get_function_type): Likewise. 2011-05-04 Richard Guenther * trans-array.c (gfc_trans_array_constructor_value): Use size_int for bounds of range types. (gfc_trans_array_constructor_value): Use size_type_node for memcpy argument. * trans-common.c (build_field): Use gfc_charlen_type_node for lengths. * trans-openmp.c (gfc_trans_omp_clauses): Do not pass NULL as type to build_int_cst. * trans-const.c (gfc_build_string_const): Use size_int for bounds of range types. (gfc_build_wide_string_const): Likewise. * trans-stmt.c (gfc_trans_label_assign): Use gfc_charlen_type_node for lengths. (gfc_trans_character_select): Likewise. (gfc_trans_character_select): Do not pass NULL as type to build_int_cst. (gfc_trans_character_select): Use size_int for bounds of range types. * trans-io.c (gfc_build_io_library_fndecls): Likewise. (add_case): Do not pass NULL as type to build_int_cst. (transfer_expr): Likewise. (transfer_array_desc): Likewise. * trans-decl.c (gfc_add_assign_aux_vars): Use gfc_charlen_type_node for lengths. (gfc_trans_assign_aux_var): Likewise. (create_main_function): Use size_int for bounds of range types. * trans-intrinsic.c (gfc_conv_intrinsic_minmax_char): Do not pass NULL as type to build_int_cst. (gfc_conv_intrinsic_spacing): Likewise. (gfc_conv_intrinsic_rrspacing): Likewise. (gfc_conv_intrinsic_len): Use gfc_charlen_type_node for lengths. 2011-05-04 Richard Guenther * trans-types.c (gfc_get_array_type_bounds): Remove zero notrunc argument to int_const_binop. 2011-05-03 Tobias Burnus PR fortran/18918 * trans-intrinsic.c (trans_this_image): Implement version with coarray argument. (conv_intrinsic_cobound): Simplify code. (gfc_conv_intrinsic_function): Call trans_this_image for this_image(coarray) except for -fcoarray=single. 2011-05-02 Steven G. Kargl PR fortran/48720 * gfortran.texi: Document the 'Q' exponent-letter extension. * invoke.texi: Document -Wreal-q-constant. * lang.opt: Add -Wreal-q-constant option. * gfortran.h: Add warn_real_q_constant to option struct. * primary.c (match_real_constant): Use it. Accept 'Q' as exponent-letter for REAL(16) real-literal-constant with a fallback to REAL(10) or error if REAL(10) is not available. * options.c (gfc_init_options, set_Wall) Set it. (gfc_handle_option): Handle new option. 2011-04-30 Thomas Koenig * dump-prase-tree.c (show_code_node): Set the current namespace to the BLOCK before displaying it; restore afterwards. 2011-04-30 Tobias Burnus PR fortran/48821 * decl.c (gfc_match_import): Don't try to find the symbol if already found. 2011-04-30 Paul Thomas PR fortran/48746 * trans-expr.c (fcncall_realloc_result): Set the bounds and the offset so that the lbounds are one. (gfc_trans_arrayfunc_assign): Add rank to arguments of above. 2011-04-29 Paul Thomas PR fortran/48462 * trans-expr.c (arrayfunc_assign_needs_temporary): Deal with automatic reallocation when the lhs is a target. PR fortran/48746 * trans-expr.c (fcncall_realloc_result): Make sure that the result dtype field is set before the function call. 2011-04-29 Tobias Burnus PR fortran/48810 * resolve.c (resolve_typebound_generic_call): Don't check access flags of the specific function. PR fortran/48800 * resolve.c (resolve_formal_arglist): Don't change AS_DEFERRED to AS_ASSUMED_SHAPE for function results. (resolve_fl_var_and_proc): Print also for function results with AS_DEFERRED an error, if they are not a pointer or allocatable. (resolve_types): Make sure arguments of procedures in interface blocks are resolved. 2011-04-29 Michael Matz * options.c (options.c): Set warn_maybe_uninitialized. 2011-04-28 Tobias Burnus PR fortran/48112 * resolve.c (resolve_fl_var_and_proc): Print diagnostic of function results only once. (resolve_symbol): Always resolve function results. PR fortran/48279 * expr.c (gfc_check_vardef_context): Fix handling of generic EXPR_FUNCTION. * interface.c (check_interface0): Reject internal functions in generic interfaces, unless -std=gnu. 2011-04-27 Tobias Burnus PR fortran/48788 * resolve.c (resolve_global_procedure): Error recovery - avoid segfault for (non)character-returning functions. 2011-04-26 Thomas Koenig * decl.c (gfc_match_end): Check that the block name starts with "block@". * parse.c (gfc_build_block_ns): Make block names unique by numbering them. 2011-04-26 Thomas Koenig * frontend-passes.c (inserted_block): New variable. (changed_statement): Likewise. (create_var): Encase statement to be operated on in a BLOCK. Adjust code insertion for BLOCK. (cfe_code): Set inserted_block and changed_statement to NULL. 2011-04-23 Tobias Burnus PR fortran/18918 * module.c (mio_array_spec): Set as->cotype on reading. * resolve.c (resolve_allocate_expr): Fix allocating coarray components. 2011-04-21 Thomas Koenig PR fortran/48405 * frontend_passes (cfe_register_funcs): Remove workaround for DO loops. (gfc_code_walker): Make sure the pointer to the current statement doen't change when other statements are inserted. 2011-04-21 Tobias Burnus PR fortran/18918 * array.c (gfc_match_array_spec): Fix maximal rank(+corank) check. 2011-04-20 Jim Meyering * expr.c (free_expr0): Remove useless if-before-free. * gfortranspec.c (lang_specific_pre_link): Likewise. * interface.c (gfc_extend_expr): Likewise. * trans-openmp.c (gfc_trans_omp_array_reduction): Likewise. 2011-04-19 Tobias Burnus PR fortran/48588 PR fortran/48692 * module.c (fix_mio_expr): Commit created symbol. 2011-04-19 Janne Blomqvist * scanner.c (load_file): Use XCNEWVAR instead of xcalloc. 2011-04-19 Janne Blomqvist * frontend-passes.c (gfc_run_passes): Use XDELETEVEC instead of free. 2011-04-19 Janne Blomqvist * misc.c (gfc_getmem): Remove function. * gfortran.h: Remove gfc_getmem prototype. Replace gfc_getmem usage with XCNEW or XCNEWVEC. * expr.c (gfc_check_assign_symbol): Replace gfc_getmem usage with XCNEW or XCNEWVEC. * options.c (gfc_handle_module_path_options) (gfc_get_option_string): Likewise. * resolve.c (gfc_resolve_forall): Likewise. * simplify.c (simplify_transformation_to_array): Likewise. * target-memory.c (gfc_target_interpret_expr): Likewise. * trans-common.c (get_segment_info, copy_equiv_list_to_ns) (get_init_field): Likewise. * trans-expr.c (gfc_conv_statement_function): Likewise. * trans-io.c (nml_full_name): Likewise. * trans-stmt.c (gfc_trans_forall_1): Likewise. * scanner.c (load_file): Replace gfc_getmem usage with xcalloc. 2011-04-19 Tobias Burnus PR fortran/48588 * parse.c (resolve_all_program_units): Skip modules. (translate_all_program_units): Handle modules. (gfc_parse_file): Defer code generation for modules. 2011-04-19 Martin Jambor * trans-decl.c (gfc_generate_function_code): Call cgraph_create_node instead of cgraph_get_create_node. 2011-04-18 Jim Meyering remove now-unused definition of gfc_free * misc.c (gfc_free): Remove function. * gfortran.h (gfc_free): Remove its prototype. 2011-04-18 Jim Meyering convert each use of gfc_free (p) to free (p) Do that by running this command: perl -pi -e 's/\bgfc_free ?\(/free (/' \ $(git grep -El '\bgfc_free ?\(') which also corrects the few uses that lacked a space between the function name and the open parenthesis. Manually undo the change to the function definition itself and its prototype. They'll be removed next. * array.c (gfc_free_array_spec, gfc_set_array_spec): s/gfc_free/free/ * constructor.c (node_free): Likewise. * cpp.c (dump_queued_macros): Likewise. * data.c (gfc_assign_data_value): Likewise. * decl.c (free_variable, free_value, gfc_free_data): Likewise. (gfc_free_data_all, match_old_style_init): Likewise. (gfc_set_constant_character_len, gfc_free_enum_history, NUM_DECL): Likewise. (gfc_match_modproc): Likewise. * dependency.c (check_section_vs_section): Likewise. * error.c (gfc_pop_error, gfc_free_error): Likewise. * expr.c (free_expr0, gfc_free_expr, gfc_free_actual_arglist): Likewise. (gfc_free_ref_list, gfc_replace_expr, gfc_copy_ref): Likewise. (find_substring_ref, gfc_simplify_expr, gfc_check_assign_symbol): Likewise. * frontend-passes.c (gfc_run_passes, cfe_expr_0): Likewise. (strip_function_call, optimize_comparison): Likewise. * interface.c (gfc_free_interface, arginfo, check_interface0): Likewise. (CHECK_OS_COMPARISON, gfc_extend_assign, gfc_free_formal_arglist): Likewise. * intrinsic.c (gfc_intrinsic_done_1, gfc_convert_type_warn): Likewise. (gfc_convert_chartype): Likewise. * io.c (gfc_free_open, compare_to_allowed_values, gfc_free_close): Likewise. (gfc_free_filepos, gfc_free_dt, gfc_free_inquire): Likewise. * match.c (gfc_free_iterator, gfc_match_associate): Likewise. (gfc_free_alloc_list, gfc_free_namelist, gfc_free_equiv_until): Likewise. (free_case, gfc_free_forall_iterator): Likewise. * misc.c: Likewise. * module.c (free_pi_tree, resolve_fixups, free_rename): Likewise. (free_true_name, peek_atom, mio_allocated_wide_string): Likewise. (mio_pool_string, mio_internal_string, mio_gmp_integer): Likewise. (mio_gmp_real, mio_expr, mio_typebound_proc): Likewise. (mio_full_typebound_tree, skip_list, load_equiv): Likewise. (free_written_common, gfc_use_module, gfc_free_use_stmts): Likewise. * openmp.c (gfc_free_omp_clauses): Likewise. * options.c (gfc_post_options): Likewise. * parse.c (select_type_pop, parse_omp_structured_block): Likewise. * primary.c (gfc_free_structure_ctor_component): Likewise. * resolve.c (resolve_structure_cons, check_host_association): Likewise. (gfc_resolve_forall, resolve_equivalence): Likewise. * scanner.c (gfc_scanner_done_1, gfc_release_include_path): Likewise. (gfc_define_undef_line, preprocessor_line, include_line): Likewise. (load_file, gfc_read_orig_filename): Likewise. * simplify.c (simplify_transformation_to_array): Likewise. (gfc_simplify_ibits, simplify_shift, gfc_simplify_ishftc, STRING): Likewise. (gfc_simplify_compiler_options): Likewise. * st.c (gfc_free_statement, gfc_free_statements): Likewise. (gfc_free_association_list): Likewise. * symbol.c (free_components, gfc_free_st_label, free_st_labels): Likewise. (gfc_delete_symtree, gfc_free_symbol, gfc_undo_symbols): Likewise. (free_old_symbol, gfc_commit_symbols, free_tb_tree): Likewise. (free_common_tree, free_uop_tree, free_sym_tree): Likewise. (gfc_free_dt_list, gfc_free_equiv_infos, gfc_free_equiv_lists): Likewise. (gfc_free_finalizer, gfc_free_charlen, free_entry_list): Likewise. (gfc_free_namespace): Likewise. * trans-array.c (gfc_free_ss, gfc_trans_array_bound_check): Likewise. (gfc_conv_array_ref, gfc_conv_ss_startstride): Likewise. (gfc_trans_dummy_array_bias, gfc_conv_array_parameter): Likewise. * trans-common.c (get_init_field, create_common): Likewise. * trans-const.c (gfc_build_wide_string_const): Likewise. (gfc_conv_string_init): Likewise. * trans-decl.c (gfc_generate_function_code): Likewise. * trans-expr.c (gfc_conv_substring, gfc_free_interface_mapping): Likewise. (SCALAR_POINTER, gfc_conv_statement_function): Likewise. (gfc_trans_subarray_assign): Likewise. * trans-intrinsic.c (conv_generic_with_optional_char_arg): Likewise. * trans-io.c (gfc_trans_io_runtime_check, set_string): Likewise. (transfer_namelist_element, transfer_array_component): Likewise. * trans-openmp.c (gfc_trans_omp_array_reduction): Likewise. * trans-stmt.c (cleanup_forall_symtrees, gfc_trans_forall_1): Likewise. * trans.c (trans_runtime_error_vararg, gfc_restore_backend_locus): Likewise. 2011-04-15 Jim Meyering gfortran: remove cpp definition of free, ... in preparation for the s/gfc_free/free/ transformation. * gfortran.h (free): Remove macro definition that would otherwise prevent direct use of the function. 2011-04-18 Tobias Burnus PR fortran/18918 * array.c (gfc_match_array_ref): Check for too many codimensions. * check.c (gfc_check_image_index): Check number of elements in SUB argument. * simplify.c (gfc_simplify_image_index): Remove unreachable checks. 2011-04-18 Tobias Burnus PR fortran/18918 * iresolve.c (gfc_resolve_image_index): Set ts.type. * simplify.c (gfc_simplify_image_index): Don't abort if the bounds are not known at compile time and handle -fcoarray=lib. * trans-intrinsics.c (gfc_conv_intrinsic_function): Handle IMAGE_INDEX. (conv_intrinsic_cobound): Fix comment typo. (trans_this_image): New function. * trans-array.c (gfc_unlikely): Move to trans.c. * trans.c (gfc_unlikely): Function moved from trans-array.c. (gfc_trans_runtime_check): Use it. * trans-io.c (gfc_trans_io_runtime_check): Ditto. * trans.h (gfc_unlikely): Add prototype. 2011-04-18 Paul Thomas PR fortran/48462 * trans-expr.c (fcncall_realloc_result): Renamed version of realloc_lhs_bounds_for_intrinsic_call that does not touch the descriptor bounds anymore but makes a temporary descriptor to hold the result. (gfc_trans_arrayfunc_assign): Modify the reference to above renamed function. 2011-05-17 Tobias Burnus PR fortran/48624 * trans-decl.c (gfc_get_extern_function_decl): Fix decl for external procedures with proc arguments. 2011-04-15 Michael Matz * trans-array.c (toplevel): Include gimple.h. (gfc_trans_allocate_array_storage): Check flag_stack_arrays, properly expand variable length arrays. (gfc_trans_auto_array_allocation): If flag_stack_arrays create variable length decls and associate them with their scope. * gfortran.h (gfc_option_t): Add flag_stack_arrays member. * options.c (gfc_init_options): Handle -fstack_arrays option. * lang.opt (fstack-arrays): Add option. * invoke.texi (Code Gen Options): Document it. * Make-lang.in (trans-array.o): Depend on GIMPLE_H. 2011-04-15 Tobias Burnus PR fortran/18918 * trans-intrinsic.c (conv_intrinsic_cobound): Remove unused code which is also causing an ICE. 2011-04-14 Nathan Froyd * f95-lang.c (poplevel): Use BLOCK_CHAIN and block_chainon. 2011-04-12 Nathan Froyd * f95-lang.c (union lang_tree_node): Check for TS_COMMON before calling TREE_CHAIN. 2011-04-12 Paul Thomas PR fortran/48360 PR fortran/48456 * trans-array.c (get_std_lbound): For derived type variables return array valued component lbound. 2011-04-12 Martin Jambor * trans-decl.c (gfc_generate_function_code): Call cgraph_get_create_node instead of cgraph_node. 2011-04-11 Tobias Burnus PR fortran/18918 * simplify.c (simplify_bound_dim): Exit for ucobound's last dimension unless -fcoarray=single. * trans-array (gfc_conv_descriptor_size_1): Renamed from gfc_conv_descriptor_size, made static, has now from_dim and to_dim arguments. (gfc_conv_descriptor_size): Call gfc_conv_descriptor_size. (gfc_conv_descriptor_cosize): New function. * trans-array.h (gfc_conv_descriptor_cosize): New prototype. * trans-intrinsic.c (conv_intrinsic_cobound): Add input_location and handle last codim of ucobound for when -fcoarray is not "single". 2011-04-08 Thomas Koenig PR fortran/48448 * gfortran.h (gfc_option_t): Add warn_function_elimination and flag_frontend_optimize. * lang.opt (Wfunction-elimination): Add. (ffrontend-optimize): Add. * invoke.texi: Add documentation for -Wfunction-elimination and -ffrontend-optimize. Add -faggressive-function-elimination to list of code generation options. * frontend-passes.c (gfc_run_passes): Run optimizations if flag_frontend_optimize is set. (warn_function_elimination): New function. (cfe_expr_0): Call it if requested to do so. * options.c (gfc_init_options): Initiate warn_function_elimination and flag_frontend_optimize. (gfc_post_options): Set flag_frontend_optimize if not specified by user, depending on the optimization level. (gfc_handle_option): Handle -Wfunction-elimination and -ffrontend-optimize. 2011-04-06 Tobias Burnus PR fortran/18918 * trans-intrinsic.c (gfc_conv_intrinsic_function): Fix call for this_image. 2011-04-05 Nathan Froyd * trans-intrinsic.c (gfc_build_intrinsic_lib_fndecls): Use build_function_type_list instead of build_function_type. Correct argument order for func_frexp and func_scalbn. 2011-04-05 Duncan Sands * f95-lang.c (build_builtin_fntypes): Swap frexp parameter types. 2011-04-04 Thomas Koenig * frontend-passes: (optimize_lexical_comparison): New function. (optimize_expr): Call it. (optimize_comparison): Also handle lexical comparison functions. Return false instad of -2 for unequal comparison. 2011-04-04 Thomas Koenig PR fortran/48412 * frontend-passes (cfe_expr_0): Reverse the order of going through the loops. 2011-04-04 Tobias Burnus Mikael Morin PR fortran/18918 * check.c (is_coarray): Update - because of DIMEN_THIS_IMAGE. * expr.c (gfc_is_coindexed): Ditto. * gfortran.h (gfc_array_ref_dimen_type): Add DIMEN_THIS_IMAGE. * interface.c (compare_parameter): Use gfc_expr_attr and gfc_is_coindexed. * resolve.c (check_dimension, compare_spec_to_ref, resolve_allocate_expr, check_data_variable): Update for DIMEN_THIS_IMAGE. * simplify.c (gfc_simplify_lcobound, gfc_simplify_this_image, gfc_simplify_ucobound): Allow non-constant bounds. * trans-array.c (gfc_set_loop_bounds_from_array_spec, gfc_trans_create_temp_array, gfc_trans_constant_array_constructor, gfc_set_vector_loop_bounds, gfc_conv_array_index_offset, gfc_start_scalarized_body, gfc_trans_scalarizing_loops, gfc_trans_scalarized_loop_boundary, gfc_conv_section_startstride, gfc_conv_ss_startstride, gfc_conv_loop_setup, gfc_trans_array_bounds, gfc_conv_expr_descriptor, gfc_walk_variable_expr): Handle codimen. * trans-decl.c (gfc_build_qualified_array): Save cobounds. * trans-intrinsic.c (gfc_conv_intrinsic_bound): Use arg2. (conv_intrinsic_cobound): New function. (gfc_conv_intrinsic_function): Call it. (gfc_walk_intrinsic_function, gfc_add_intrinsic_ss_code): Handle ucobound, lcobound, this_image. * fortran/trans-types.c (gfc_build_array_type): Save cobounds. (gfc_get_dtype): Honour corank. (gfc_get_nodesc_array_type): Save corank and codimensions. (gfc_get_array_type_bounds): Save cobound. * fortran/trans.h (gfc_ss_info,gfc_loopinfo): Add codimen item. (gfc_array_kind): Add corank item. (GFC_TYPE_ARRAY_CORANK): New macro. 2011-04-03 Kai Tietz PR middle-end/48422 * Make-lang.in (f95-lang.o): Add some missing dependencies. 2011-04-01 Thomas Koenig PR fortran/48352 * frontend-passes (cfe_register_funcs): Don't register functions if they appear as iterators in DO loops. 2011-03-30 Michael Matz PR fortran/47516 * trans-expr.c (realloc_lhs_loop_for_fcn_call): Take loop as parameter, don't use local variable. (gfc_trans_arrayfunc_assign): Adjust caller. 2011-03-29 Janus Weil PR fortran/48095 * decl.c (match_procedure_decl,match_ppc_decl): Set flavor of interface. * module.c (MOD_VERSION): Bump. (mio_typespec): Read/write 'interface' field. * primary.c (match_string_constant,match_logical_constant): Remove unneeded code. (match_complex_constant): Make sure to clear the typespec. 2011-03-29 Thomas Koenig * frontend-passes.c (create_var): Warn about creating an array temporary if requested. 2011-03-27 Thomas Koenig PR fortran/47065 * frontend-passes.c (optimize_trim): Also follow references, except when they are substring references or array references. 2011-03-27 Tobias Burnus PR fortran/18918 * gfortran.h (gfc_isym_id): Rename GFC_ISYM_NUMIMAGES to GFC_ISYM_NUM_IMAGES. (gfc_fcoarray): Add GFC_FCOARRAY_LIB. * intrinsic.c (add_functions): Update due to GFC_ISYM_NUM_IMAGES rename. * invoke.texi (-fcoarray=): Document "lib" argument. * iresolve.c (gfc_resolve_this_image): Fix THIS IMAGE(). * libgfortran.h (libgfortran_stat_codes): Add comments. * options.c (gfc_handle_coarray_option): Add -fcoarray=lib. * simplify.c (gfc_simplify_num_images, gfc_simplify_this_image): Handle GFC_FCOARRAY_LIB. * trans.h (gfc_init_coarray_decl): New prototype. (gfor_fndecl_caf_init, gfor_fndecl_caf_finalize, gfor_fndecl_caf_critical, gfor_fndecl_caf_end_critical, gfor_fndecl_caf_sync_all, gfor_fndecl_caf_sync_images, gfor_fndecl_caf_error_stop, gfor_fndecl_caf_error_stop_str, gfort_gvar_caf_num_images, gfort_gvar_caf_this_image): New global variables. * trans-decl.c: Declare several CAF functions (cf. above). (gfc_build_builtin_function_decls): Initialize those. (gfc_init_coarray_decl): New function. (create_main_function): Call CAF init/finalize functions. * trans-intrinsic.c (trans_this_image, trans_num_images): New. (gfc_conv_intrinsic_function): Call those. * trans-stmt.c (gfc_trans_stop, gfc_trans_sync, gfc_trans_critical): Add code for GFC_FCOARRAY_LIB. 2011-03-26 Janus Weil PR fortran/48291 * class.c (get_unique_hashed_string): Adjust maximum allowable length for unique type string. 2011-03-25 Kai Tietz * scanner.c (preprocessor_line): Use filename_cmp instead of strcmp. 2011-03-25 Tobias Burnus PR fortran/48174 PR fortran/45304 * trans-types.c (gfc_get_function_type): Don't use varargs if the procedure is known to have no arguments. 2011-03-21 Thomas Koenig PR fortran/22572 * gfortran.h (gfc_option_t) : Add flag_aggressive_function_elimination. (gfc_dep_compare_functions): Add prototype. * lang.opt: Add faggressive-function-elimination. * invoke.texi: Document -faggressive-function-elimination. * frontend_passes (expr_array): New static variable. (expr_size): Likewise. (expr_count): Likewise. (current_code): Likewise. (current_ns): Likewise. (gfc_run_passes): Allocate and free space for expressions. (cfe_register_funcs): New function. (create_var): New function. (cfc_expr_0): New function. (cfe_code): New function. (optimize_namespace): Invoke gfc_code_walker with cfe_code and cfe_expr_0. * dependency.c (gfc_dep_compare_functions): New function. (gfc_dep_compare_expr): Use it. * options.c (gfc_init_options): Handle flag_aggressive_function_elimination. (gfc_handle_option): Likewise. 2011-03-15 Francois-Xavier Coudert * arith.c (arith_power): Plug memory leak. 2011-03-12 Janus Weil PR fortran/48059 * trans-expr.c (gfc_apply_interface_mapping_to_expr): Replace base type for polymorphic arguments. 2011-03-12 Francois-Xavier Coudert PR fortran/48054 * intrinsic.texi: Clarify doc of logarithm functions. 2011-03-12 Francois-Xavier Coudert PR fortran/47552 * trans-intrinsic.c (gfc_conv_intrinsic_ctime): Fix type of the string length variable. 2011-03-11 Janus Weil PR fortran/47768 * module.c (ab_attribute,attr_bits): Add AB_PROC_POINTER_COMP. (mio_symbol_attribute): Handle attribute 'proc_pointer_comp'. 2011-03-06 Paul Thomas Jerry DeLisle PR fortran/47850 * expr.c (gfc_is_constant_expr): Only use gfc_constant_ac if the expression has an iterator. Otherwise, iterate through the array, checking for constant expressions for each element. 2011-03-04 Janne Blomqvist PR libfortran/47802 * intrinsic.texi: Update CTIME and FDATE documentation. 2011-03-03 Ralf Wildenhues * invoke.texi (Option Summary, Fortran Dialect Options) (Preprocessing Options, Runtime Options, Code Gen Options): Fix vertical list spacing by using @itemx for additinoal items, empty line before @table. Fix typos. 2011-02-28 Francois-Xavier Coudert PR fortran/47894 * intrinsic.texi: Fix doc of the VERIFY intrinsic. 2011-02-26 Tobias Burnus PR fortran/47846 * trans-stmt.c (gfc_trans_allocate): Fix allocation with type-spec of deferred-length strings. 2011-02-26 Tobias Burnus PR fortran/47886 * openmp.c (gfc_resolve_omp_directive): Resolve if() condition of OpenMP's task. 2011-02-26 Francois-Xavier Coudert PR fortran/47894 * intrinsic.texi: Fix doc of the VERIFY intrinsic. 2011-02-24 Tobias Burnus PR fortran/47872 * intrinsic.texi (ALLOCATED, ATAN, BESSEL_JN, BESSEL_YN): Add multitable for linebreak between different syntax variants. 2011-02-24 Richard Guenther PR fortran/47839 * f95-lang.c (pushdecl): For externs in non-global scope push a copy of the decl into the BLOCK. 2011-02-23 Mikael Morin PR fortran/40850 * trans.c (gfc_prepend_expr_to_block): New function. * trans.h (gfc_prepend_expr_to_block): Declare. * trans-array.c (gfc_conv_array_parameter): Replace gfc_add_expr_to_block with gfc_prepend_expr_to_block. 2011-02-22 Paul Thomas PR fortran/45743 * trans-decl.c (gfc_get_extern_function_decl): Don't use the gsymbol backend_decl if the procedure has a formal argument that is a procedure. 2011-02-22 Tobias Burnus PR fortran/41359 * trans-stmt.c (gfc_trans_if_1): Use correct line for expressions in the if condition. 2011-02-20 Tobias Burnus PR fortran/47797 * trans-decl.c (gfc_trans_deferred_vars): Use gfc_set_backend_locus and gfc_restore_backend_locus to have better debug locations. * trans-array.c (gfc_trans_deferred_array): Ditto. 2011-02-20 Paul Thomas PR fortran/45077 PR fortran/44945 * trans-types.c (gfc_get_derived_type): Remove code that looks for decls in gsym and add call to gfc_get_module_backend_decl. * trans.h : Add prototype for gfc_get_module_backend_decl. * trans-decl.c (gfc_get_module_backend_decl): New function. (gfc_get_symbol_decl): Call it. 2011-02-19 Paul Thomas PR fortran/47348 * trans-array.c (get_array_ctor_all_strlen): Move up in file. (get_array_ctor_var_strlen): Add block dummy and add call to get_array_ctor_all_strlen instead of giving up on substrings. Call gcc_unreachable for default case. (get_array_ctor_strlen): Add extra argument to in call to get_array_ctor_var_strlen. 2011-02-18 Janus Weil PR fortran/47789 * primary.c (gfc_match_structure_constructor): Handle empty parent types. 2011-02-18 Tobias Burnus PR fortran/47775 * trans-expr.c (arrayfunc_assign_needs_temporary): Use esym to check whether the specific procedure returns an allocatable or pointer. 2011-02-18 Michael Matz PR fortran/45586 * gfortran.h (struct gfc_component): Add norestrict_decl member. * trans.h (struct lang_type): Add nonrestricted_type member. * trans-expr.c (gfc_conv_component_ref): Search fields with correct parent type. * trans-types.c (mirror_fields, gfc_nonrestricted_type): New. (gfc_sym_type): Use it. 2011-02-18 Janus Weil PR fortran/47768 * resolve.c (resolve_transfer): Reject variables with procedure pointer components. 2011-02-18 Janus Weil PR fortran/47767 * gfortran.h (gfc_check_access): Removed prototype. (gfc_check_symbol_access): Added prototype. * module.c (gfc_check_access): Renamed to 'check_access', made static. (gfc_check_symbol_access): New function, basically a shortcut for 'check_access'. (write_dt_extensions,write_symbol0,write_generic,write_symtree): Use 'gfc_check_symbol_access'. (write_operator,write_module): Renamed 'gfc_check_access'. * resolve.c (resolve_fl_procedure,resolve_fl_derived, resolve_fl_namelist,resolve_symbol,resolve_fntype): Use 'gfc_check_symbol_access'. 2011-02-16 Janus Weil PR fortran/47745 * class.c (gfc_build_class_symbol): Set 'class_ok' attribute. * decl.c (build_sym,attr_decl1): Move setting of 'class_ok' into 'gfc_build_class_symbol'. (gfc_match_decl_type_spec): Reject unlimited polymorphism. * interface.c (matching_typebound_op): Check for 'class_ok' attribute. * match.c (select_type_set_tmp): Move setting of 'class_ok' into 'gfc_build_class_symbol'. * primary.c (gfc_variable_attr): Check for 'class_ok' attribute. 2011-02-15 Steven G. Kargl PR fortran/47633 . simplify.c (gfc_simplify_compiler_version): Fix off-by-one issue. 2011-02-14 Janus Weil PR fortran/47730 * parse.c (gfc_build_block_ns): Commit 'block@' symbol. 2011-02-14 Janus Weil PR fortran/47728 * class.c (gfc_build_class_symbol): Give a fatal error on polymorphic arrays. * primary.c (gfc_match_varspec): Avoid ICE for invalid class declaration. 2011-02-14 Janus Weil PR fortran/47349 * interface.c (get_expr_storage_size): Handle derived-type components. 2011-02-13 Tobias Burnus PR fortran/47569 * interface.c (compare_parameter): Avoid ICE with character components. 2011-02-12 Janus Weil * class.c (gfc_build_class_symbol): Reject polymorphic arrays. * decl.c (build_sym,build_struct,attr_decl1): Use return value of 'gfc_build_class_symbol'. 2011-02-12 Michael Matz Janus Weil Tobias Burnus PR fortran/45586 * trans-expr.c (conv_parent_component_references): Avoid unintendent skipping of parent compounds. 2011-02-11 Tobias Burnus PR fortran/47550 * resolve.c (resolve_formal_arglist): PURE with VALUE and no INTENT: Add -std= diagnostics. 2011-02-09 Janus Weil PR fortran/47352 * resolve.c (resolve_procedure_interface): If interface has a result variable, copy the typespec and set result pointer to self. 2011-02-09 Janus Weil PR fortran/47463 * resolve.c (resolve_typebound_subroutine): Remove erroneous line. 2011-02-09 Janus Weil PR fortran/47637 * trans-decl.c (init_intent_out_dt): Handle CLASS arguments. 2011-02-08 Jerry DeLisle * io.c (match_io_element): Do not set dt if not inquire. 2011-02-08 Janus Weil PR fortran/45290 * expr.c (gfc_check_assign_symbol): Reject pointers as pointer initialization target. 2011-02-07 Janne Blomqvist Ralf Wildenhues * gfortran.texi (Thread-safety): texinfo styling fixes. * intrinsic.texi: Likewise. 2011-02-06 Janne Blomqvist * gfortran.texi (Compiler Characteristics): Add reference to thread-safety section. 2011-02-06 Janne Blomqvist * gfortran.texi (Thread-safety): New section. * intrinsic.texi (EXECUTE_COMMAND_LINE): Mention thread-safety. (GETENV): Likewise. (GET_ENVIRONMENT_VARIABLE): Likewise. (SYSTEM): Likewise. 2011-02-06 Paul Thomas PR fortran/47592 * trans-stmt.c (gfc_trans_allocate): For deferred character length allocations with SOURCE, store to the values and string length to avoid calculating twice. Replace gfc_start_block with gfc_init_block to avoid unnecessary contexts and to keep declarations of temporaries where they should be. Tidy up the code a bit. 2011-02-05 Janne Blomqvist PR fortran/42434 * intrinsic.texi (SYSTEM_CLOCK): Update documentation. 2011-02-02 Janus Weil Paul Thomas PR fortran/47082 * trans-expr.c (gfc_trans_class_init_assign): Add call to gfc_get_derived_type. * module.c (read_cleanup): Do not use unique_symtrees for vtabs or vtypes. 2011-02-02 Janus Weil PR fortran/47572 * resolve.c (resolve_fl_variable): Handle polymorphic allocatables. 2011-02-01 Janus Weil PR fortran/47565 * trans-expr.c (gfc_conv_structure): Handle constructors for procedure pointer components with allocatable result. 2011-01-31 Janus Weil PR fortran/47455 * trans-expr.c (gfc_conv_procedure_call): Handle procedure pointers with pointer or allocatable result. 2011-01-31 Paul Thomas PR fortran/47519 * trans-stmt.c (gfc_trans_allocate): Improve handling of deferred character lengths with SOURCE. * iresolve.c (gfc_resolve_repeat): Calculate character length from source length and ncopies. * dump-parse-tree.c (show_code_node): Show MOLD and SOURCE expressions for ALLOCATE. 2011-01-31 Janus Weil PR fortran/47463 * resolve.c (resolve_typebound_subroutine): Bug fix for the case of an argument of a typebound assignment being a component. 2011-01-31 Rainer Orth * gfortranspec.c (add_arg_libgfortran) [HAVE_LD_STATIC_DYNAMIC] Use LD_STATIC_OPTION, LD_DYNAMIC_OPTION. 2011-01-31 Tobias Burnus PR fortran/47042 * resolve.c (resolve_fl_procedure): Reject stmt functions with pointer/allocatable attribute. 2011-01-31 Tobias Burnus PR fortran/47042 * interface.c (gfc_procedure_use): Add explicit interface check for pointer/allocatable functions. 2011-01-30 Paul Thomas PR fortran/47523 * trans-expr.c (gfc_trans_assignment_1): If the rhs is an op expr and is assigned to a deferred character length scalar, make sure that the function is called before reallocation, so that the length is available. Include procedure pointer and procedure pointer component rhs as well. PR fortran/45170 PR fortran/35810 PR fortran/47350 * gfortran.dg/allocatable_function_5.f90: New test not added by mistake on 2011-01-28. 2011-01-29 Tobias Burnus PR fortran/47531 * check.c (gfc_check_shape): Support kind argument in SHAPE. * intrinsic.c (add_functions): Ditto. * resolve.c (gfc_resolve_shape): Ditto. * simplify.c (gfc_simplify_shape): Ditto. * intrinsic.h (gfc_check_shape, gfc_resolve_shape, gfc_simplify_shape): Update prototypes. * intrinisc.text (SHAPE): Document kind argument. 2011-01-28 Tobias Burnus PR fortran/47507 * resolve.c (resolve_formal_arglist): Allow arguments with VALUE attribute also without INTENT. 2011-01-28 Tobias Burnus * gfortran.texi (Fortran 2003 status): Mention support for nonconstant namelist variables. 2011-01-28 Paul Thomas Tobias Burnus PR fortran/45170 PR fortran/35810 PR fortran/47350 * interface.c (compare_actual_formal): An allocatable or pointer deferred length actual is only allowed if the formal argument is also deferred length. Clean up whitespace. * trans-expr.c (gfc_conv_procedure_call): Pass string length for deferred character length formal arguments by reference. Do the same for function results. (gfc_trans_pointer_assignment): Do not do runtime check of lhs and rhs character lengths, if deferred length lhs. In this case set the lhs character length to that of the rhs. (gfc_conv_string_parameter): Remove assert that string length is an integer type. (is_scalar_reallocatable_lhs): New function. (alloc_scalar_allocatable_for_assignment): New function. (gfc_trans_assignment_1): Call above new function. If the rhs is a deferred character length itself, makes ure that the function is called before reallocation, so that the length is available. (gfc_trans_asssignment): Remove error about assignment to deferred length character variables. * gfortran.texi : Update entry about (re)allocation on assignment. * trans-stmt.c (gfc_trans_allocate): Add code to handle deferred length character variables. * module.c (mio_typespec): Transfer deferred characteristic. * trans-types.c (gfc_get_function_type): New code to generate hidden typelist, so that those character lengths that are passed by reference get the right type. * resolve.c (resolve_contained_fntype): Supress error for deferred character length functions. (resolve_function, resolve_fl_procedure) The same. (check_symbols): Remove the error that support for entity with deferred type parameter is not yet implemented. (resolve_fl_derived): The same. match.c (alloc_opt_list): Allow MOLD for deferred length object. * trans-decl.c (gfc_get_symbol_decl): For deferred character length dummies, generate a local variable for string length. (create_function_arglist): Hidden length can be a pointer. (gfc_trans_deferred_vars): For deferred character length results and dummies, assign the string length to the local variable from the hidden argument on entry and the other way round on exit, as appropriate. 2011-01-27 Tobias Burnus PR fortran/47474 * trans-decl.c (gfc_generate_function_code): Fix init of allocatable result variable with allocatable components. 2011-01-27 Tobias Burnus PR fortran/47472 * options.c (gfc_handle_module_path_options): Save module path without trailing slash as include path. 2011-01-25 Tobias Burnus PR fortran/47448 * interface.c (gfc_check_operator_interface): Fix defined-assignment check. 2011-01-23 Tobias Burnus PR fortran/47421 * trans-decl.c (gfc_trans_deferred_vars): Do not nullify scalar allocatable dummy arguments. 2011-01-22 Thomas Koenig PR fortran/38536 * resolve.c (gfc_iso_c_func_interface): For C_LOC, check for array sections followed by component references which are illegal. Also check for coindexed arguments. 2011-01-22 Tobias Burnus PR fortran/47399 * primary.c (gfc_match_varspec): Relax gcc_assert to allow for PARAMETER TBP. 2011-01-21 Tobias Burnus PR fortran/47394 * error.c (gfc_error_now, gfc_fatal_error, gfc_error_check): Use defined instead of magic number exit status codes. * scanner.c (include_line, gfc_new_file): Ditto. 2011-01-21 Tobias Burnus PR fortran/47377 * expr.c (gfc_check_pointer_assign): Reject expr data-targets without pointer attribute. 2011-01-18 Janus Weil PR fortran/47240 * resolve.c (expression_rank): Fix rank of procedure poiner components. * trans-expr.c (gfc_conv_procedure_call): Take care of procedure pointer components as actual arguments. 2011-01-17 Jakub Jelinek PR fortran/47331 * gfortran.h (struct gfc_omp_saved_state): New type. (gfc_omp_save_and_clear_state, gfc_omp_restore_state): New prototypes. * resolve.c (resolve_global_procedure): Call it around gfc_resolve call. * openmp.c (gfc_omp_save_and_clear_state, gfc_omp_restore_state): New functions. 2011-01-17 Tobias Burnus PR fortran/47327 * invoke.texi (Options to request or suppress errors and warnings): Fix cross link. 2011-01-15 Tobias Burnus * gfortran.texi: Update Fortran 2003 Status section. PR fortran/47177 * invoke.texi: Add missing "-E" to the -dM example. 2011-01-13 Tobias Burnus PR fortran/47268 * intrinsic.texi (get_command_argument, get_environment_variable): Mark arguments as optional in the Arguments section. 2011-01-13 Kai Tietz Tobias Burnus PR fortran/47260 * trans-decl.c (gfc_get_extern_function_decl, build_function_decl): Set TREE_PUBLIC/TREE_EXTERNAL before calling decl_attributes. 2011-01-13 Tobias Burnus Mikael Morin PR fortran/45848 PR fortran/47204 * gfortran.h (gfc_code): Move union ext's case_list into the struct block. * dump-parse-tree.c (show_code_node): Adapt by prefixing case_list by "block.". * frontend-passes.c (gfc_code_walker): Ditto. * match.c (gfc_match_goto, gfc_match_call, gfc_match_case, gfc_match_type_is, gfc_match_class_is): Ditto. * resolve.c (resolve_select, resolve_select_type): Ditto. * st.c (gfc_free_statement): Ditto. * trans-stmt.c (gfc_trans_integer_select, gfc_trans_logical_select, gfc_trans_character_select): Ditto. * parse.c (resolve_all_program_units): For error recovery, avoid segfault is proc_name is NULL. 2011-01-11 Paul Thomas PR fortran/47051 * trans-array.c (gfc_alloc_allocatable_for_assignment): Change to be standard compliant by testing for shape rather than size before skipping reallocation. Improve comments. 2011-01-09 Janus Weil PR fortran/47224 * resolve.c (resolve_actual_arglist): Remove unneeded and buggy piece of code. 2011-01-09 Thomas Koenig PR fortran/38536 * resolve.c (is_scalar_expr_ptr): For a substring reference, use gfc_dep_compare_expr to compare start and end expession. Add FIXME for using gfc_deb_compare_expr elsewhere. 2011-01-09 Janus Weil PR fortran/46313 * class.c (get_unique_type_string): Make type name start with upper case letter. 2011-01-08 Thomas Koenig PR fortran/46405 * invoke.texi: Mention -ffree-line-length-none and -ffixed-line-length-none for preprocessing. 2011-01-08 Paul Thomas PR fortran/46896 * trans-expr.c (gfc_conv_procedure_call): With a non-copying procedure argument (eg TRANSPOSE) use a temporary if there is any chance of aliasing due to host or use association. (arrayfunc_assign_needs_temporary): Correct logic for function results and do not use a temporary for implicitly PURE variables. Use a temporary for Cray pointees. * symbol.c (gfc_add_save): Explicit SAVE not compatible with implicit pureness of containing procedure. * decl.c (match_old_style_init, gfc_match_data): Where decl would fail in PURE procedure, set implicit_pure to zero. * gfortran.h : Add implicit_pure to structure symbol_attr and add prototype for function gfc_implicit_pure. * expr.c (gfc_check_pointer_assign, gfc_check_vardef_context): Where decl would fail in PURE procedure, reset implicit_pure. * io.c (match_vtag, gfc_match_open, gfc_match_close, gfc_match_print, gfc_match_inquire, gfc_match_wait): The same. * match.c (gfc_match_critical, gfc_match_stopcode, sync_statement, gfc_match_allocate, gfc_match_deallocate): The same. * parse.c (decode_omp_directive): The same. (parse_contained): If not PURE, set implicit pure attribute. * resolve.c (resolve_formal_arglist, resolve_structure_cons, resolve_function, resolve_ordinary_assign) : The same. (gfc_implicit_pure): New function. * module.c (mio_symbol_attribute): Introduce AB_IMPLICIT_PURE to ab_attribute enum and use it in this function. 2011-01-08 Thomas Koenig PR fortran/45777 * symbol.c (gfc_symbols_could_alias): Strip gfc_ prefix, make static and move in front of its only caller, to ... * trans-array.c (symbols_could_alias): ... here. Pass information about pointer and target status as arguments. Allocatable arrays don't alias anything unless they have the POINTER attribute. (gfc_could_be_alias): Keep track of pointer and target status when following references. Also check if typespecs of components match those of other components or symbols. 2011-01-07 Tobias Burnus PR fortran/41580 * class.c (gfc_build_class_symbol): Mark __vtab as attr.vtab. * intrinsic.c (add_functions): Use simplify functions for EXTENDS_TYPE_OF and SAME_TYPE_AS. * intrinsic.h (gfc_simplify_extends_type_of, gfc_simplify_same_type_as): New prototypes. * simplify.c (is_last_ref_vtab, gfc_simplify_extends_type_of, gfc_simplify_same_type_as): New functions. 2011-01-07 Janus Weil PR fortran/47189 PR fortran/47194 * gfortran.h (gfc_lval_expr_from_sym): Moved prototype. * class.c (gfc_class_null_initializer): Initialize _vptr to declared type. * expr.c (gfc_lval_expr_from_sym): Moved here from symbol.c. * resolve.c (resolve_deallocate_expr): _data component will be added at translation stage. * symbol.c (gfc_lval_expr_from_sym): Moved to expr.c. * trans-stmt.c (gfc_trans_deallocate): Reset _vptr to declared type. 2011-01-06 Daniel Franke PR fortran/33117 PR fortran/46478 * parse.c (parse_interface): Remove check for procedure types. * interface.c (check_interface0): Verify that procedures are either all SUBROUTINEs or all FUNCTIONs. 2011-01-05 Janus Weil PR fortran/47180 * trans-expr.c (gfc_trans_class_assign): Bugfix for r168524 (make sure 'vtab' is initialized). 2011-01-05 Janus Weil PR fortran/47180 * trans-expr.c (gfc_trans_class_assign): For a polymorphic NULL pointer assignment, set the _vptr component to the declared type. 2011-01-05 Thomas Koenig PR fortran/46017 * resolve.c (resolve_allocate_deallocate): Follow references to check for duplicate occurence of allocation/deallocation objects. 2011-01-05 Janus Weil PR fortran/47024 * trans-decl.c (gfc_trans_deferred_vars): Initialize the _vpr component of polymorphic allocatables according to their declared type. 2011-01-04 Janus Weil PR fortran/46448 * class.c (gfc_find_derived_vtab): Set the module field for the copying routine to make sure it receives module name mangling. 2011-01-03 Jakub Jelinek * gfortranspec.c (lang_specific_driver): Update copyright notice dates. 2011-01-03 Janus Weil * intrinsic.texi (LEADZ): Fix example. 2011-01-02 Janus Weil PR fortran/46408 * class.c (gfc_find_derived_vtab): Use EXEC_INIT_ASSIGN for __copy_ routine. Copyright (C) 2011 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.