From: Janus Weil Date: Thu, 2 Jan 2014 17:27:11 +0000 (+0100) Subject: re PR fortran/59654 ([OOP] Broken function table with complex OO use case) X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=d0f33855c98870e23ffd927f0f3d7647903fbe98;p=gcc.git re PR fortran/59654 ([OOP] Broken function table with complex OO use case) 2014-01-02 Janus Weil PR fortran/59654 * resolve.c (resolve_typebound_procedures): No need to create the vtab here. 2014-01-02 Janus Weil PR fortran/59654 * gfortran.dg/dynamic_dispatch_12.f90: New. From-SVN: r206281 --- diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog index 6c7cea7c4a4..e78d6b65f67 100644 --- a/gcc/fortran/ChangeLog +++ b/gcc/fortran/ChangeLog @@ -1,2082 +1,10 @@ -2013-12-30 Janus Weil +2014-01-02 Janus Weil - PR fortran/58998 - * resolve.c (resolve_symbol): Check that symbol is not only flavorless - but also untyped. - -2013-12-29 Janus Weil - - PR fortran/59612 - * dump-parse-tree.c (show_typespec): Check for charlen. - * invoke.texi: Fix documentation of -fdump-fortran-optimized and - -fdump-parse-tree. - -2013-12-18 Janus Weil - - PR fortran/59493 - * gfortran.h (gfc_find_intrinsic_vtab): Removed prototype. - (gfc_find_vtab): New prototype. - * class.c (gfc_find_intrinsic_vtab): Rename to 'find_intrinsic_vtab' and - make static. Minor modifications. - (gfc_find_vtab): New function. - (gfc_class_initializer): Use new function 'gfc_find_vtab'. - * check.c (gfc_check_move_alloc): Ditto. - * expr.c (gfc_check_pointer_assign): Ditto. - * interface.c (compare_actual_formal): Ditto. - * resolve.c (resolve_allocate_expr, resolve_select_type): Ditto. - * trans-expr.c (gfc_conv_intrinsic_to_class, gfc_trans_class_assign): - Ditto. - * trans-intrinsic.c (conv_intrinsic_move_alloc): Ditto. - * trans-stmt.c (gfc_trans_allocate): Ditto. - -2013-12-16 Janus Weil - - PR fortran/54949 - * symbol.c (check_conflict): Forbid abstract procedure pointers. - (gfc_add_abstract): Check for attribute conflicts. - -2013-12-16 Jakub Jelinek - - PR libgomp/59337 - * openmp.c (resolve_omp_atomic): Adjust error message. - -2013-12-15 Janus Weil - - PR fortran/59493 - * class.c (gfc_find_intrinsic_vtab): Handle BT_CLASS. - -2013-12-14 Janus Weil - - PR fortran/59502 - * primary.c (gfc_match_varspec): Check for 'class_ok'. - -2013-12-14 Janus Weil - - PR fortran/59450 - * module.c (mio_expr): Handle type-bound function expressions. - -2013-12-12 Tobias Burnus - - PR fortran/59440 - * trans-decl.c (generate_namelist_decl): Ensure debug DIE - is created by setting DECL_IGNORED_P to 0. - -2013-12-11 Janus Weil - - PR fortran/58916 - * resolve.c (conformable_arrays): Treat scalar 'e2'. - (resolve_allocate_expr): Check rank also for unlimited-polymorphic - variables. - -2013-12-10 Janus Weil - - PR fortran/35831 - * interface.c (check_dummy_characteristics): Add checks for several - attributes. - -2013-12-10 Janus Weil - - * gfortran.texi: Add possible kind values (and default) for - DOUBLE PRECISION. - * invoke.texi: Correct documentation of -fdefault-integer-8, - -fdefault-real-8 and -fdefault-double-8. - -2013-12-10 Janus Weil - - * gfortran.texi: Modify documentation of kind type parameters. - * invoke.texi: Extend documentation of -fdefault-integer-8 and - -fdefault-real-8. - -2013-12-10 Janus Weil - - * invoke.texi: Add -freal-4-real-16. Rearrange kind promotion options. - -2013-12-08 Tobias Burnus - Janus Weil - - PR fortran/58099 - PR fortran/58676 - PR fortran/41724 - * resolve.c (gfc_resolve_intrinsic): Set elemental/pure. - (resolve_fl_procedure): Reject pure dummy procedures/procedure - pointers. - (gfc_explicit_interface_required): Don't require a - match of ELEMENTAL for intrinsics. - -2013-12-07 Janus Weil - - PR fortran/59414 - * resolve.c (resolve_specific_f0): Handle CLASS-valued functions. - -2013-12-04 Tobias Burnus - - PR debug/37132 - * trans-decl.c (generate_namelist_decl, create_module_nml_decl): - New static functions. - (gfc_generate_module_vars, generate_local_vars): Call them. - (gfc_trans_use_stmts): Handle namelists for debug genertion. - -2013-12-01 Paul Thomas - - PR fortran/57354 - * trans-array.c (gfc_conv_resolve_dependencies): For other than - SS_SECTION, do a dependency check if the lhs is liable to be - reallocated. - -2013-12-01 Paul Thomas - - PR fortran/58410 - * trans-array.c (gfc_alloc_allocatable_for_assignment): Do not - use the array bounds of an unallocated array but set its size - to zero instead. - -2013-12-01 Paul Thomas - - PR fortran/34547 - * resolve.c (resolve_transfer): EXPR_NULL is always in an - invalid context in a transfer statement. - -2013-11-28 Sergey Ostanevich - - * lang.opt (Wopenmp-simd): New. - -2013-11-25 Janus Weil - - PR fortran/59143 - * interface.c (get_expr_storage_size): Handle array-valued type-bound - procedures. - -2013-11-24 Francois-Xavier Coudert - - * scanner.c (gfc_open_intrinsic_module): Remove function. - * gfortran.h (gfc_open_intrinsic_module): Remove prototype. - -2013-11-23 Janus Weil - - PR fortran/59228 - * interface.c (compare_parameter): Check for array spec. - -2013-11-22 Andrew MacLeod - - * trans.c: Add required include files from gimple.h. - * trans-expr.c: Likewise - * trans-openmp.c: Likewise - -2013-11-22 David Malcolm - - * trans.c (trans_runtime_error_vararg): Remove use of input_line - macro. - -2013-11-17 Andrew MacLeod - - * fortran/trans-intrinsic.c: Include tree-nested.h. - -2013-11-14 Andrew MacLeod - - * trans-expr.c: Include only gimplify.h and gimple.h as needed. - * trans-openmp.c: Likewise. - -2013-11-14 Diego Novillo - - * decl.c: Include stringpool.h. - * iresolve.c: Include stringpool.h. - * match.c: Include stringpool.h. - * module.c: Include stringpool.h. - * target-memory.c: Include stor-layout.h. - * trans-common.c: Include stringpool.h. - Include stor-layout.h. - Include varasm.h. - * trans-const.c: Include stor-layout.h. - * trans-decl.c: Include stringpool.h. - Include stor-layout.h. - Include varasm.h. - Include attribs.h. - * trans-expr.c: Include stringpool.h. - * trans-intrinsic.c: Include stringpool.h. - Include tree-nested.h. - Include stor-layout.h. - * trans-io.c: Include stringpool.h. - Include stor-layout.h. - * trans-openmp.c: Include stringpool.h. - * trans-stmt.c: Include stringpool.h. - * trans-types.c: Include stor-layout.h. - Include stringpool.h. - * trans.c: Include stringpool.h. - -2013-11-12 Andrew MacLeod - - * f95-lang.c: Don't include gimple.h. - * trans-array.c: Include gimple-expr.h instead of gimple.h. - * trans.c: Likewise. - * trans-decl.c: Likewise. - * trans-expr.c: Include gimplify.h. - * trans-openmp.c: Likewise. - -2013-11-07 Janus Weil - - PR fortran/58471 - * primary.c (gfc_expr_attr): Check for result symbol. - -2013-11-06 Francois-Xavier Coudert - - * gfortran.texi: Fix typo. - -2013-11-05 Tobias Burnus - - * lang.opt (-Wdate-time): New option - * cpp.c (gfc_cpp_option_data): Add warn_date_time. - (gfc_cpp_init_options, gfc_cpp_handle_option, - gfc_cpp_post_options): Handle it and pass on to libcpp. - -2013-11-05 Steven G. Kargl - - PR fortran/58989 - * check.c (gfc_check_reshape): ensure that shape is a constant - expression. - -2013-11-05 Tobias Burnus - - * lang.opt (fopenmp-simd): New option. - * gfortran.h (gfc_option_t): Add gfc_flag_openmp_simd. - * options.c (gfc_handle_option): Handle it. - -2013-11-04 Ian Lance Taylor - - * f95-lang.c (ATTR_LEAF_LIST): Define. - -2013-11-04 Paul Thomas - - PR fortran/58771 - * trans-io.c (transfer_expr): If the backend_decl for a derived - type is missing, build it with gfc_typenode_for_spec. - -2013-11-04 Paul Thomas - - PR fortran/57445 - * trans-expr.c (gfc_conv_class_to_class): Remove spurious - assert. - -2013-10-29 Tobias Burnus - - PR fortran/44350 - * parse.c (parse_spec): Add C1116 constraint - check for BLOCK DATA. - -2013-10-29 Paul Thomas - - PR fortran/58793 - * trans-types.c (gfc_typenode_for_spec): Add typenode for - BT_HOLLERITH. Note that the length is incorrect but unusable. - - PR fortran/58858 - * target-memory.c (gfc_element_size): Add element sizes for - BT_VOID and BT_ASSUMED, using gfc_typenode_for_spec. - -2013-10-24 Tobias Burnus - - PR fortran/44646 - * trans-stmt.c (struct forall_info): Add do_concurrent field. - (gfc_trans_forall_1): Set it for do concurrent. - (gfc_trans_forall_loop): Mark those as annot_expr_ivdep_kind. - -2013-10-23 Tobias Burnus - - PR fortran/58793 - * interface.c (compare_parameter): Reject passing TYPE(*) - to CLASS(*). - -2013-10-22 Paul Thomas - - PR fortran 57893 - * class.c : Include target-memory.h. - (gfc_find_intrinsic_vtab) Build a minimal expression so that - gfc_element_size can be used to obtain the storage size, rather - that the kind value. - -2013-10-21 Tobias Burnus - - PR fortran/58803 - * decl.c (match_ppc_decl): Prevent later - double free. - -2013-10-17 Andrew MacLeod - - * trans-openmp.c: Include omp-low.h. - -2013-10-16 Tobias Burnus - - PR fortran/58652 - * interface.c (compare_parameter): Accept passing CLASS(*) - to CLASS(*). - -2013-10-16 Tobias Burnus - - * intrinsic.texi (OpenMP Modules): Update to OpenMPv4. - Document omp_proc_bind_kind. - -2013-10-15 Tobias Burnus - - PR fortran/58652 - * trans-intrinsic.c (conv_intrinsic_move_alloc): Fix handling - of CLASS(*) variables. - -2013-10-14 Tobias Burnus - - PR fortran/58658 - * expr.c (gfc_check_vardef_context): Fix pointer diagnostic - for CLASS(*). - -2013-10-11 Jakub Jelinek - - * trans-openmp.c (gfc_omp_clause_default_ctor, - gfc_omp_clause_dtor): Return NULL for OMP_CLAUSE_REDUCTION. - * f95-lang.c (ATTR_NULL, DEF_FUNCTION_TYPE_8): Define. - * types.def (DEF_FUNCTION_TYPE_8): Document. - (BT_FN_VOID_OMPFN_PTR_UINT, - BT_FN_VOID_OMPFN_PTR_UINT_LONG_LONG_LONG, - BT_FN_VOID_OMPFN_PTR_UINT_LONG_LONG_LONG_LONG, - BT_FN_VOID_OMPFN_PTR_OMPCPYFN_LONG_LONG_BOOL_UINT): Remove. - (BT_FN_VOID_OMPFN_PTR_UINT_UINT_UINT, - BT_FN_VOID_OMPFN_PTR_UINT_LONG_LONG_LONG_UINT, - BT_FN_VOID_OMPFN_PTR_UINT_LONG_LONG_LONG_LONG_UINT, - BT_FN_BOOL_INT, BT_FN_BOOL_INT_BOOL, BT_FN_VOID_UINT_UINT, - BT_FN_VOID_INT_PTR_SIZE_PTR_PTR_PTR, - BT_FN_VOID_INT_OMPFN_PTR_SIZE_PTR_PTR_PTR, - BT_FN_VOID_OMPFN_PTR_OMPCPYFN_LONG_LONG_BOOL_UINT_PTR): New. - -2013-10-10 Tobias Burnus - - PR fortran/58226 - * options.c (gfc_get_option_string): Handle zero arg case. - -2013-10-02 Tobias Burnus - - PR fortran/58593 - * trans-expr.c (gfc_conv_string_tmp): Fix obtaining - the byte size of a single character. - -2013-10-01 Tobias Burnus - - PR fortran/58579 - * trans-expr.c (gfc_conv_string_tmp): Correctly obtain - the byte size of a single character. - -2013-09-27 Janne Blomqvist - - * intrinsic.texi (DATE_AND_TIME): Fix example. - -2013-09-25 Tobias Burnus - - PR fortran/58436 - * class.c (generate_finalization_wrapper): Handle CLASS(*). - -2013-09-25 Tobias Burnus - - PR fortran/57697 - PR fortran/58469 - * resolve.c (generate_component_assignments): Avoid double free - at runtime and freeing a still-being used expr. - -2013-09-25 Tom Tromey - - * Make-lang.in (fortran_OBJS): Use fortran/gfortranspec.o. - (gfortranspec.o): Remove. - (CFLAGS-fortran/gfortranspec.o): New variable. - (GFORTRAN_D_OBJS): Update. - ($(F95_PARSER_OBJS), fortran/openmp.o, GFORTRAN_TRANS_DEPS) - (fortran/f95-lang.o, fortran/scanner.o, fortran/convert.o) - (fortran/frontend-passes.o, fortran/trans.o, fortran/trans-decl.o) - (fortran/trans-types, fortran/trans-const.o, fortran/trans-expr.o) - (fortran/trans-stmt.o, fortran/trans-openmp.o, fortran/trans-io.o) - (fortran/trans-array.o, fortran/trans-intrinsic.o) - (fortran/dependency.o, fortran/trans-common.o, fortran/resolve.o) - (fortran/data.o, fortran/options.o, fortran/cpp.o) - (fortran/scanner.o, fortran/module.o): Remove. - -2013-09-25 Tom Tromey - - * Make-lang.in (gfortranspec.o): Don't use subshell. - -2013-09-23 Janus Weil - - PR fortran/58355 - * decl.c (check_extended_derived_type): Prevent segfault, modify error - message. - -2013-09-20 Janus Weil - - PR fortran/58099 - * expr.c (gfc_check_pointer_assign): Remove second call to - 'gfc_compare_interfaces' with swapped arguments. - * interface.c (gfc_compare_interfaces): Symmetrize the call to - 'check_result_characteristics' by calling it with swapped arguments. - -2013-09-18 Tobias Burnus - - * expr.c (gfc_check_assign_symbol): Free lvalue.ref. - -2013-09-18 Tobias Burnus - - PR fortran/43366 - * primary.c (gfc_variable_attr): Also handle codimension. - * resolve.c (resolve_ordinary_assign): Add invalid-diagnostic for - polymorphic assignment. - -2013-09-16 Tobias Burnus - - PR fortran/58356 - * class.c (generate_finalization_wrapper): Init proc_tree if - not yet resolved. - -2013-09-16 Tobias Burnus - - PR fortran/57697 - * resolve.c (generate_component_assignments): Correctly handle the - case that the LHS is not allocated. - -2013-09-15 Tobias Burnus - - PR fortran/57697 - * resolve.c (generate_component_assignments): Handle unallocated - LHS with defined assignment of components. - -2013-09-12 Brooks Moses - - PR driver/42955 - * Make-lang.in: Do not install driver binaries in $(target)/bin. - -2013-09-09 Tobias Burnus - - * invoke.texi (Error and Warning Options): Add hyphen. - -2013-09-02 Thomas Koenig - - PR fortran/PR56519 - * gfortran.h: Declare gfc_do_concurrent_flag as extern. - * resolve.c: Rename do_concurrent_flag to gfc_do_concurrent_flag - and make non-static. - (resolve_function): Use gfc_do_concurrent_flag instead of - do_concurrent_flag. - (pure_subroutine): Likewise. - (resolve_code): Likewise. - (resolve_types): Likewise. - * intrinsic.c (gfc_intrinsic_sub_interface): Raise error for - non-pure intrinsic subroutines within DO CONCURRENT. - -2013-08-29 Thomas Koenig - - PR fortran/52243 - * trans-expr.c (is_runtime_conformable): New function. - * gfc_trans_assignment_1: Use it. - -2013-08-26 Thomas Koenig - - PR fortran/58146 - * array.c (gfc_ref_dimen_size): If possible, use - gfc_dep_difference to calculate array refrence - sizes. Fall back to integer code otherwise. - * dependency.c (discard_nops). Move up. - Also discarde widening integer conversions. - (gfc_dep_compare_expr): Use discard_nops. - -2013-08-23 Mikael Morin - - PR fortran/57798 - * trans-array.c (gfc_conv_ss_startstride, set_loop_bounds, - gfc_set_delta): Generate preliminary code before the outermost loop. - -2013-08-23 Janus Weil - - PR fortran/57843 - * interface.c (gfc_extend_assign): Look for type-bound assignment - procedures before non-typebound. - -2013-08-23 Mikael Morin - - * trans-array.c (gfc_conv_section_startstride): Move &loop->pre access - to the callers. - (gfc_conv_ss_startstride, gfc_conv_expr_descriptor): Update callers. - -2013-08-22 Janus Weil - - PR fortran/58185 - * match.c (copy_ts_from_selector_to_associate): Only build class - container for polymorphic selector. Some cleanup. - -2013-08-20 Janus Weil - - PR fortran/53655 - * trans-decl.c (generate_local_decl): Check if type has any components. - -2013-08-19 Janus Weil - - PR fortran/46271 - * openmp.c (resolve_omp_clauses): Bugfix for procedure pointers. - -2013-08-12 Thomas Koenig - - PR fortran/56666 - * gfortran.h (gfc_option_t): Add warn_zerotrip. - * invoke.texi (-Wzerotrip): Document option. - * lang.opt (Wzerotrip): Add. - * options.c (gfc_init_options): Initialize warn_zerotrip. - (set_Wall): Add handling of warn_zerotrip. - (gfc_handle_option): Handle OPT_Wzerotrip. - * resolve.c (gfc_resolve_iterator): Honor - gfc_option.warn_zerotrip; update error message to show - how to suppress the warning. - -2013-08-09 Janus Weil - - * gfortran.h (gfc_get_code): Modified prototype. - * class.c (finalize_component, finalization_scalarizer, - finalization_get_offset, finalizer_insert_packed_call, - generate_finalization_wrapper, gfc_find_derived_vtab, - gfc_find_intrinsic_vtab): Use 'gfc_get_code'. - * io.c (match_io_iterator, match_io_element, terminate_io, get_io_list, - gfc_match_inquire): Call 'gfc_get_code' with argument. - * match.c (match_simple_forall, gfc_match_forall, gfc_match_goto, - gfc_match_nullify, gfc_match_call, match_simple_where, gfc_match_where): - Ditto. - * parse.c (new_level): Ditto. - (add_statement): Use XCNEW. - * resolve.c (resolve_entries, resolve_allocate_expr, - resolve_select_type, build_assignment, build_init_assign): Call - 'gfc_get_code' with argument. - * st.c (gfc_get_code): Add argument 'op'. - * trans-expr.c (gfc_trans_class_array_init_assign): Call 'gfc_get_code' - with argument. - * trans-stmt.c (gfc_trans_allocate): Ditto. - -2013-08-09 Janus Weil - - PR fortran/58058 - * trans-intrinsic.c (gfc_conv_intrinsic_transfer): Free the temporary - string, if necessary. - -2013-08-06 Martin Jambor - - PR fortran/57987 - * trans-decl.c (gfc_generate_function_code): Never call - cgraph_finalize_function on nested functions. - -2013-08-06 Janus Weil - - PR fortran/57306 - * class.c (gfc_class_null_initializer): Rename to - 'gfc_class_initializer'. Treat non-NULL init-exprs. - * gfortran.h (gfc_class_null_initializer): Update prototype. - * trans-decl.c (gfc_get_symbol_decl): Treat class variables. - * trans-expr.c (gfc_conv_initializer): Ditto. - (gfc_trans_subcomponent_assign): Renamed gfc_class_null_initializer. - -2013-07-30 Tobias Burnus - - PR fortran/57530 - * symbol.c (gfc_type_compatible): A type is type compatible with - a class if both have the same declared type. - * interface.c (compare_type): Reject CLASS/TYPE even if they - are type compatible. - -2013-07-30 Tobias Burnus - - PR fortran/57530 - * trans-expr.c (gfc_trans_class_assign): Handle CLASS array - functions. - (gfc_trans_pointer_assign): Ditto and support pointer assignment of - a polymorphic var to a nonpolymorphic var. - -2013-07-22 Po Chang - - * match.c (gfc_match_call): Exit loop after setting i. - - * resolve.c (resolve_variable): Exit loop after setting seen. - - * expr.c (gfc_check_pointer_assign): Exit loop after setting warn. - - * trans-array.c (set_loop_bounds): Exit loop after setting - nonoptional_arr. - - * trans-io.c (gfc_trans_transfer): Exit loop after setting seen_vector. - -2013-07-28 Thomas Koenig - - PR fortran/58009 - * expr.c (gfc_check_vardef_context): Check for same values in - vector expression subscripts. - -2013-07-27 Tobias Burnus - - PR fortran/57991 - * interface.c (check_some_aliasing): Also warn for intent OUT/OUT. - -2013-07-27 Janus Weil - - PR fortran/57285 - * check.c (dim_rank_check): Re-enable this check for CLASS arrays. - -2013-07-25 Janus Weil - - PR fortran/57966 - * resolve.c (resolve_typebound_function): Make sure the declared type, - including its type-bound procedures, is resolved before resolving the - actual type-bound call. - -2013-07-25 Janus Weil - - PR fortran/57639 - * interface.c (compare_parameter): Check for class_ok. - * simplify.c (gfc_simplify_same_type_as): Ditto. - -2013-07-23 Ondřej Bílka - - * decl.c: Fix comment typos. - * interface.c: Likewise. - * trans-array.c: Likewise. - * trans.c: Likewise. - -2013-07-22 Tobias Burnus - - PR fortran/57906 - PR fortran/52052 - * class.c (gfc_build_class_symbol): Set coarray_comp. - * trans-array.c (structure_alloc_comps): For coarrays, - directly use the data pointer address. - -2013-07-22 Chang - - * trans-decl.c (gfc_build_dummy_array_decl): Exit loop after - setting PACKED_PARTIAL. - -2013-07-22 Tobias Burnus - - * trans-array.c (gfc_array_allocate): Correct memory-leak patch. - -2013-07-22 Tobias Burnus - - * trans-array.c (gfc_array_allocate, - gfc_trans_deferred_array): Plug memory leak. - -2013-07-21 Ondřej Bílka - - * trans-decl.c: Fix comment typos. - * trans-expr.c: Ditto. - -2013-07-21 Thomas Koenig - - PR fortran/56937 - * dependency.c (gfc_dep_resolver): Treat identical - array subscripts as identical; don't unconditionally - return a dependency if an array subscript is found. - -2013-07-21 Tobias Burnus - - PR fortran/35862 - * libgfortran.h (GFC_FPE_DOWNWARD, GFC_FPE_TONEAREST, - GFC_FPE_TOWARDZERO, GFC_FPE_UPWARD): New defines. - -2013-07-21 Tobias Burnus - - PR fortran/57894 - * check.c (min_max_args): Add keyword= check. - -2013-07-17 Mikael Morin - Tobias Burnus - - PR fortran/57895 - * match.c (gfc_match_name): Ensure that the error - message regarding -fdollar-ok gets printed. - (gfc_match_common): Avoid multiple freeing. - -2013-07-16 Tobias Burnus - - PR fortran/57912 - * trans-expr.c (gfc_trans_scalar_assign): Correct if - condition for caf realloc. - -2013-07-15 Tobias Burnus - - * trans-array.h (gfc_deallocate_alloc_comp_no_caf, - gfc_reassign_alloc_comp_caf): New prototype. - * trans-array.c (enum): Add DEALLOCATE_ALLOC_COMP_NO_CAF - and COPY_ALLOC_COMP_CAF. - (structure_alloc_comps): Handle it. - (gfc_reassign_alloc_comp_caf, - gfc_deallocate_alloc_comp_no_caf): New function. - (gfc_alloc_allocatable_for_assignment): Call it. - * trans-expr.c (gfc_trans_scalar_assign, - gfc_trans_arrayfunc_assign, gfc_trans_assignment_1): Ditto. - * parse.c (parse_derived): Correctly set coarray_comp. - * resolve.c (resolve_symbol): Improve error wording. - -2013-07-15 Tobias Burnus - - PR fortran/37336 - * trans.c (gfc_add_comp_finalizer_call): New function. - * trans.h (gfc_add_comp_finalizer_call): New prototype. - * trans-array.c (structure_alloc_comps): Call it. - -2013-07-14 Thomas Koenig - Tobias Burnus - - PR fortran/52669 - * trans-decl.c (gfc_finish_var_decl): Move setting of - PRIVATE for a module variable if the module has a private - default or -fmodule-private is given to... - (gfc_create_module_variable): here. Optionally - warn about private module variable which is not used. - -2013-07-08 Tobias Burnus - - PR fortran/57834 - * check.c (is_c_interoperable): Add special case for c_f_pointer. - (explicit-size, gfc_check_c_f_pointer, gfc_check_c_loc): Update - call. - -2013-07-08 Tobias Burnus - - PR fortran/50554 - * io.c (match_inquire_element): Add missing do-var check. - -2013-07-08 Tobias Burnus - - PR fortran/57785 - * simplify.c (compute_dot_product): Complex conjugate for - dot_product. - (gfc_simplify_dot_product, gfc_simplify_matmul): Update call. - -2013-07-08 Tobias Burnus - - PR fortran/57469 - * trans-decl.c (generate_local_decl): Don't warn that - a dummy is unused, when it is in a namelist. - -2013-07-01 Dominique d'Humieres - - PR fortran/54788 - * array.c (spec_size): handle the case as==NULL. - -2013-06-26 Tobias Burnus - - PR fortran/29800 - * trans-array.c (gfc_conv_array_ref): Improve out-of-bounds - diagnostic message. - * trans-array.c (gfc_conv_array_ref): Update prototype. - * trans-expr.c (gfc_conv_variable): Update call. - -2013-06-24 Steven G. Kargl - Francois-Xavier Coudert - Dominique d'Humieres - - PR fortran/52413 - * simplify.c (gfc_simplify_fraction): Fix the sign of negative values. - -2013-06-21 Tobias Burnus - - PR fortran/37336 - * trans-array.c (gfc_trans_deferred_array): Call the - finalizer for nonallocatable local variables. - * trans-decl.c (gfc_get_symbol_decl): Add local - finalizable vars to the deferred list. - (gfc_trans_deferred_vars): Call gfc_trans_deferred_array - for those. - -2013-06-21 Tobias Burnus - - * trans-array.c (gfc_alloc_allocatable_for_assignment): Allocate - at least one byte. - * trans-expr.c (alloc_scalar_allocatable_for_assignment): Ditto. - -2013-06-20 Tobias Burnus - - * resolve.c (get_temp_from_expr): Don't set FL_VARIABLE twice. - -2013-06-17 Tobias Burnus - - * gfortran.h (gfc_option_t): Add fpe_summary. - * gfortran.texi (_gfortran_set_options): Update. - * invoke.texi (-ffpe-summary): Add doc. - * lang.opt (ffpe-summary): Add flag. - * options.c (gfc_init_options, gfc_handle_option): Handle it. - (gfc_handle_fpe_option): Renamed from gfc_handle_fpe_trap_option, - also handle fpe_summary. - * trans-decl.c (create_main_function): Update - _gfortran_set_options call. - -2013-06-15 Mikael Morin - - PR fortran/49074 - PR fortran/56136 - * dependency.c (gfc_check_argument_var_dependency): Return 0 in the - array constructor case. - -2013-06-14 Tobias Burnus - - PR fortran/57508 - * resolve.c (get_temp_from_expr): Don't copy function - result attributes to temporary. - -2013-06-14 Tobias Burnus - - PR fortran/57596 - * trans-decl.c (gfc_trans_deferred_vars): Honor OPTIONAL - for nullify and deferred-strings' length variable. - -2013-06-13 Mikael Morin - - PR fortran/49074 - * trans-expr.c (gfc_conv_variable): Don't walk the reference chain. - Handle NULL array references. - (gfc_conv_procedure_call): Remove code handling NULL array references. - -2013-06-11 Tobias Burnus - - PR fortran/57535 - * trans-array.c (build_class_array_ref): Fix ICE for - function result variables. - -2013-06-08 Tobias Burnus - - PR fortran/37336 - * trans-decl.c (init_intent_out_dt): Call finalizer - when appropriate. - -2013-06-08 Tobias Burnus - - PR fortran/57553 - * simplify.c (gfc_simplify_storage_size): Handle literal - strings. - * trans-intrinsic.c (gfc_conv_intrinsic_storage_size): - Add missing fold_convert. - -2013-06-07 Tobias Burnus - - PR fortran/57549 - * array.c (gfc_match_array_constructor): Call - gfc_match_type_spec instead of gfc_match_decl_type_spec. - * match.c (gfc_match_type_spec): Renamed from match_type_spec. - (gfc_match_type_is, gfc_match_allocate): Update call. - * match.h (gfc_match_type_spec): Add prototype. - -2013-06-07 Tobias Burnus - - PR fortran/57556 - * trans.c (gfc_build_final_call): Init block before use. - -2013-06-06 Tobias Burnus - - PR fortran/57542 - * trans.c (gfc_build_final_call): Add se.pre to the block - and modify the assert. - -2013-06-04 Tobias Burnus - - PR fortran/37336 - * trans.h (gfc_build_final_call): Remove prototype. - (gfc_add_finalizer_call): Add prototype. - * trans-array.c (gfc_trans_dealloc_allocated): Support finalization. - (structure_alloc_comps): Update caller. - (gfc_trans_deferred_array): Call finalizer. - * trans-array.h (gfc_trans_dealloc_allocated): Update prototype. - * trans-decl.c (gfc_trans_deferred_vars): Don't deallocate/finalize - variables of the main program. - * trans-expr.c (gfc_conv_procedure_call): Support finalization. - * trans-openmp.c (gfc_omp_clause_dtor, - gfc_trans_omp_array_reduction): Update calls. - * trans-stmt.c (gfc_trans_deallocate): Avoid double deallocation - of alloc components. - * trans.c (gfc_add_finalizer_call): New function. - (gfc_deallocate_with_status, - gfc_deallocate_scalar_with_status): Call it - (gfc_build_final_call): Fix handling of scalar coarrays, - move up in the file and make static. - -2013-06-01 Janus Weil - Mikael Morin - - * error.c (get_terminal_width): Only limit the width if we're - outputting to a terminal. Try to determine width via ioctl. - -2013-06-01 Tobias Burnus - - * decl.c (add_global_entry): Take locus. - (gfc_match_entry): Update call. - (gfc_match_end): Better error location. - * parse.c (parse_block_data, parse_module, add_global_procedure, - add_global_program): Use better locus data. - -2013-05-31 Tobias Burnus - - PR fortran/57456 - * trans-array.c (gfc_array_init_size): Use passed type spec, - when available. - (gfc_array_allocate): Pass typespec on. - * trans-array.h (gfc_array_allocate): Update prototype. - * trans-stmt.c (gfc_trans_allocate): Pass typespec on. - -2013-05-31 Janus Weil - - PR fortran/54190 - PR fortran/57217 - * gfortran.h (gfc_terminal_width): Remove prototype. - * error.c (get_terminal_width): Moved here from misc.c. Renamed. - Try to determine terminal width from environment variable. - * interface.c (compare_type, compare_rank): New functions. Fix assumed - type/rank handling. - (compare_type_rank, check_dummy_characteristics, - check_result_characteristics, gfc_compare_interfaces): Use them. - (symbol_rank): Slightly modified and moved. - * misc.c (gfc_terminal_width): Moved to error.c. - -2013-05-30 Janus Weil - - PR fortran/54189 - * resolve.c (check_assumed_size_reference): Check for e->ref. - -2013-05-30 Tobias Burnus - - PR fortran/57458 - * interface.c (compare_parameter): Update C1239/C1240 constraint - check for assumed-rank/TS29113. - -2013-05-29 Tobias Burnus - - PR fortran/37336 - * class.c (finalize_component): Fix coarray array refs. - (generate_finalization_wrapper): Only gfc_convert_type_warn - when the kind value is different. - (gfc_find_intrinsic_vtab): _copy's dst is now intent(inout). - (gfc_find_derived_vtab): Ditto. Enable finalization-wrapper - generation. - * module.c (MOD_VERSION): Bump. - (gfc_dump_module, gfc_use_module): Remove empty line in .mod. - * trans-array.c (gfc_conv_descriptor_token): Accept nonrestricted - void pointer. - (gfc_array_allocate, structure_alloc_comps): Don't nullify for - BT_CLASS allocations. - * trans-stmt.c (gfc_trans_allocate): Ditto. - -2013-05-29 Tobias Burnus - - PR fortran/37336 - * resolve.c (gfc_resolve_finalizers): Remove not implemented error. - -2013-05-28 Tobias Burnus - - * trans-expr.c (gfc_conv_procedure_call): Deallocate - polymorphic arrays for allocatable intent(out) dummies. - (gfc_reset_vptr): New function, moved from trans-stmt.c - and extended. - * trans-stmt.c (reset_vptr): Remove. - (gfc_trans_deallocate): Update calls. - * trans.h (gfc_reset_vptr): New prototype. - -2013-05-28 Dominique d'Humieres - - PR fortran/57435 - * module.c (check_for_ambiguous): Avoid null pointer deref. - -2013-05-28 Janus Weil - Tobias Burnus - - PR fortran/57217 - * interface.c (check_dummy_characteristics): Symmetrize type check. - -2013-05-27 Bud Davis - - PR fortran/50405 - * resolve.c (resolve_formal_arglist): Detect error when an argument - has the same name as the function. - -2013-05-27 Tobias Burnus - - * expr.c (gfc_build_intrinsic_call): Make symbol as attr.artificial. - * intrinsic.c (gfc_is_intrinsic): Disable std check for those. - -2013-05-22 Tobias Burnus - - * resolve.c (get_temp_from_expr): Change mangling to - start always with a _. - -2013-05-22 Tobias Burnus - - * resolve.c (get_temp_from_expr): Fix temp var mangling. - -2013-05-22 Tobias Burnus - - PR fortran/57364 - * resolve.c (get_temp_from_expr): Commit created sym. - -2013-05-22 Tobias Burnus - - PR fortran/57338 - * intrinsic.c (do_check): Move some checks to ... - (do_ts29113_check): ... this new function. - (check_specific, gfc_intrinsic_sub_interface): Call it. - -2013-05-22 Janne Blomqvist - - * intrinsic.texi (RANDOM_SEED): Improve example. - -2013-05-21 Tobias Burnus - - PR fortran/57035 - * intrinsic.c (do_check): Add constraint check for - NO_ARG_CHECK, assumed rank and assumed type. - * gfortran.texi (NO_ARG_CHECK): Minor wording change, - allow PRESENT intrinsic. - -2013-05-20 Tobias Burnus - - PR fortran/48858 - PR fortran/55465 - * decl.c (add_global_entry): Add sym_name. - * parse.c (add_global_procedure): Ditto. - * resolve.c (resolve_bind_c_derived_types): Handle multiple decl for - a procedure. - (resolve_global_procedure): Handle gsym->ns pointing to a module. - * trans-decl.c (gfc_get_extern_function_decl): Ditto. - -2013-05-20 Tobias Burnus - - PR fortran/48858 - * decl.c (add_global_entry): Use nonbinding name - only for F2003 or if no binding label exists. - (gfc_match_entry): Update calls. - * parse.c (gfc_global_used): Improve error message. - (add_global_procedure): Use nonbinding name - only for F2003 or if no binding label exists. - (gfc_parse_file): Update call. - * resolve.c (resolve_global_procedure): Use binding - name when available. - * trans-decl.c (gfc_get_extern_function_decl): Ditto. - -2013-05-20 Tobias Burnus - - PR fortran/48858 - * decl.c (gfc_match_bind_c_stmt): Add gfc_notify_std. - * match.c (gfc_match_common): Don't add commons to gsym. - * resolve.c (resolve_common_blocks): Add to gsym and - add checks. - (resolve_bind_c_comms): Remove. - (resolve_types): Remove call to the latter. - * trans-common.c (gfc_common_ns): Remove static var. - (gfc_map_of_all_commons): Add static var. - (build_common_decl): Correctly handle binding label. - -2013-05-16 Jason Merrill - - * Make-lang.in (f951$(exeext)): Use link mutex. - -2013-05-05 Tobias Burnus - - * resolve.c (conformable_arrays): Avoid segfault - when ar.start[i] == NULL. - -2013-05-05 Tobias Burnus - - PR fortran/57141 - * decl.c (gfc_match_null): Permit use-associated - NULL intrinsic. - -2013-05-04 Tobias Burnus - - * decl.c (gfc_verify_c_interop_param): Permit allocatable - and pointer with -std=f2008ts. - -2013-05-02 Tobias Burnus - - PR fortran/57142 - * simplify.c (gfc_simplify_size): Renamed from - simplify_size; fix kind=8 handling. - (gfc_simplify_size): New function. - (gfc_simplify_shape): Add range check. - * resolve.c (resolve_function): Fix handling - for ISYM_SIZE. - -2013-05-01 Thomas Koenig - - * frontend-passes.c (optimize_power): Fix typo - in comment. - -2013-04-30 Thomas Koenig - - PR fortran/57071 - * frontend-passes.c (optimize_power): Simplify - 1**k to 1. - -2013-04-28 Tobias Burnus - - PR fortran/57114 - * intrinsic.texi (RANK): Correct syntax description and - expected result. - -2013-04-28 Tobias Burnus - - PR fortran/57093 - * trans-types.c (gfc_get_element_type): Fix handling - of scalar coarrays of type character. - * intrinsic.texi (PACK): Add missing ")". - -2013-04-28 Thomas Koenig - - PR fortran/57071 - * frontend-passes (optimize_power): New function. - (optimize_op): Use it. - -2013-04-25 Janne Blomqvist - - PR bootstrap/57028 - * Make-lang.in (f951): Link in ZLIB. - (CFLAGS-fortran/module.o): Add zlib include directory. - -2013-04-22 Janus Weil - - PR fortran/53685 - PR fortran/57022 - * check.c (gfc_calculate_transfer_sizes): Fix for array-valued SOURCE - expressions. - * simplify.c (gfc_simplify_sizeof,gfc_simplify_storage_size): Get rid - of special treatment for EXPR_ARRAY. - * target-memory.h (gfc_element_size): New prototype. - * target-memory.c (size_array): Remove. - (gfc_element_size): New function. - (gfc_target_expr_size): Modified to always return the full size of the - expression. - -2013-04-20 Tobias Burnus - - PR fortran/56907 - * trans-intrinsic.c (conv_isocbinding_function): Don't pack array - passed to C_LOC - -2013-04-19 Thomas Koenig - Mikael Morin - - PR fortran/56872 - * frontend-passes.c (copy_walk_reduction_arg): Change argument type - to gfc_constructor. If it has an iterator, wrap the copy of its - expression in an array constructor with that iterator. Don't special - case function expressions. - (callback_reduction): Update caller. Don't return early if there is - an iterator. - -2013-04-18 Tobias Burnus - - * expr.c (find_array_element): Don't copy expr. - * data.c (create_character_initializer): Free expr. - * frontend-passes.c (combine_array_constructor): Ditto. - * match.c (match_typebound_call, gfc_match_select_type): Ditto. - * resolve.c (resolve_typebound_function): Free gfc_ref. - -2013-04-18 Tobias Burnus - - PR fortran/56994 - * invoke.texi (NEAREST): S argument is not optional. - -2013-04-17 Janus Weil - - PR fortran/56814 - * interface.c (check_result_characteristics): Get result from interface - if present. - -2013-04-17 Janne Blomqvist - - PR fortran/40958 - * scanner.h: New file. - * Make-lang.in: Dependencies on scanner.h. - * scanner.c (gfc_directorylist): Move to scanner.h. - * module.c: Don't include md5.h, include scanner.h and zlib.h. - (MOD_VERSION): Add comment about backwards compatibility. - (module_fp): Change type to gzFile. - (ctx): Remove. - (gzopen_included_file_1): New function. - (gzopen_included_file): New function. - (gzopen_intrinsic_module): New function. - (write_char): Use gzputc. - (read_crc32_from_module_file): New function. - (read_md5_from_module_file): Remove. - (gfc_dump_module): Use gz* functions instead of stdio, check gzip - crc32 instead of md5. - (read_module_to_tmpbuf): Use gz* functions instead of stdio. - (gfc_use_module): Use gz* functions. - -2013-04-16 Tobias Burnus - - PR fortran/39505 - * decl.c (ext_attr_list): Add EXT_ATTR_NO_ARG_CHECK. - * gfortran.h (ext_attr_id_t): Ditto. - * gfortran.texi (GNU Fortran Compiler Directives): - Document it. - * interface.c (compare_type_rank): Ignore rank for NO_ARG_CHECK. - (compare_parameter): Ditto - and regard as unlimited polymorphic. - * resolve.c (resolve_symbol, resolve_variable): Add same constraint - checks as for TYPE(*); turn dummy to TYPE(*),dimension(*). - (gfc_explicit_interface_required): Require explicit interface - for NO_ARG_CHECK. - -2013-04-16 Janus Weil - - PR fortran/56968 - * expr.c (gfc_check_pointer_assign): Handle generic functions returning - procedure pointers. - -2013-04-16 Tobias Burnus - - PR fortran/56969 - * intrinsic.c (gfc_intrinsic_func_interface): Don't set - module name to "(intrinsic)" for intrinsics from intrinsic - modules. - -2013-04-15 Tobias Burnus - - * intrinsic.texi (SYSTEM_CLOCK): Recommend kind=8. - -2013-04-15 Janne Blomqvist - - PR fortran/56919 - * intrinsics.texi (SYSTEM_CLOCK): Update documentation. - -2013-04-15 Tobias Burnus - - * class.c (gfc_find_intrinsic_vtab): Removed unused var. - * dependency.c (check_data_pointer_types): Fix check. - * frontend-passes.c (check_data_pointer_types): Remove - superfluous statement. - * parse.c (decode_omp_directive): Add missing break. - * resolve.c (resolve_typebound_subroutine: Free variable. - * trans-decl.c (create_function_arglist): Correct condition. - -2013-04-14 Mikael Morin - - PR fortran/56816 - * match.c (gfc_match_select_type): Add syntax error. Move namespace - allocation and cleanup... - * parse.c (decode_statement): ... here. - -2013-04-13 Janus Weil - - PR fortran/55959 - * expr.c (gfc_simplify_expr): Branch is not unreachable. - -2013-04-12 Janus Weil - - PR fortran/56266 - * primary.c (gfc_match_varspec): Turn gcc_assert into MATCH_ERROR. - -2013-04-12 Tobias Burnus - - PR fortran/56929 - * trans-array.c (duplicate_allocatable): Fix handling - of scalar coarrays. - -2013-04-12 Janus Weil - - PR fortran/56261 - * gfortran.h (gfc_explicit_interface_required): New prototype. - * expr.c (gfc_check_pointer_assign): Check if an explicit interface is - required in a proc-ptr assignment. - * interface.c (check_result_characteristics): Extra check. - * resolve.c (gfc_explicit_interface_required): New function. - (resolve_global_procedure): Use new function - 'gfc_explicit_interface_required'. Do a full interface check. - -2013-04-12 Tobias Burnus - - PR fortran/56845 - * trans-decl.c (gfc_trans_deferred_vars): Restrict - static CLASS init to SAVE and -fno-automatic. - -2013-04-12 Tobias Burnus - - PR fortran/56845 - * trans-decl.c (gfc_trans_deferred_vars): Set _vptr for - allocatable static BT_CLASS. - * trans-expr.c (gfc_class_set_static_fields): New function. - * trans.h (gfc_class_set_static_fields): New prototype. - -2013-04-11 Janne Blomqvist - - * gfortran.h: Remove enum gfc_try, replace gfc_try with bool type. - * arith.c: Replace gfc_try with bool type. - * array.c: Likewise. - * check.c: Likewise. - * class.c: Likewise. - * cpp.c: Likewise. - * cpp.h: Likewise. - * data.c: Likewise. - * data.h: Likewise. - * decl.c: Likewise. - * error.c: Likewise. - * expr.c: Likewise. - * f95-lang.c: Likewise. - * interface.c: Likewise. - * intrinsic.c: Likewise. - * intrinsic.h: Likewise. - * io.c: Likewise. - * match.c: Likewise. - * match.h: Likewise. - * module.c: Likewise. - * openmp.c: Likewise. - * parse.c: Likewise. - * parse.h: Likewise. - * primary.c: Likewise. - * resolve.c: Likewise. - * scanner.c: Likewise. - * simplify.c: Likewise. - * symbol.c: Likewise. - * trans-intrinsic.c: Likewise. - * trans-openmp.c: Likewise. - * trans-stmt.c: Likewise. - * trans-types.c: Likewise. - -2013-04-09 Tobias Burnus - - * gfortran.texi (KIND Type Parameters, - Internal representation of LOGICAL variables): Add crossrefs. - (Intrinsic Types): Mention issues with _Bool interop. - (Naming and argument-passing conventions): New section. - -2013-04-08 Thomas Koenig - - PR fortran/56782 - * frontend-passes.c (callback_reduction): Don't do - any simplification if there is only a single element - which has an iterator. - -2013-04-07 Tobias Burnus - - PR fortran/56849 - * iresolve.c (gfc_resolve_reshape): Set shape also - with order=. - -2013-04-04 Janus Weil - - PR fortran/40881 - * match.c (gfc_match_return): Remove standard notification. - * primary.c (gfc_match_actual_arglist): Add standard notification. - -2013-04-04 Tobias Burnus - - PR fortran/50269 - * gcc/fortran/check.c (is_c_interoperable, - gfc_check_c_loc): Correct c_loc array checking - for Fortran 2003 and Fortran 2008. - -2013-04-03 Janus Weil - - PR fortran/56284 - PR fortran/40881 - * decl.c (gfc_match_formal_arglist): Warn about alternate-return - arguments. - * interface.c (check_dummy_characteristics): Return if symbols are NULL. - -2013-04-01 Janus Weil - - PR fortran/56500 - * symbol.c (gfc_set_default_type): Build class container for - IMPLICIT CLASS. - -2013-03-31 Tobias Burnus - - * class.c (finalization_scalarizer, finalizer_insert_packed_call, - generate_finalization_wrapper): Avoid segfault with absent SIZE= - argument to TRANSFER and use correct result kind for SIZE. - * intrinsic.c (gfc_isym_id_by_intmod): Also handle ids of - nonmodules. - * trans.c (gfc_build_final_call): Handle coarrays. - -2013-03-30 Thomas Koenig - - * trans-expr.c (build_memcmp_call): New function. - (gfc_build_compare_string): If the strings - compared have constant and equal lengths and - the strings are kind=1, or, for kind=4 strings, - the test is for (in)equality, use memcmp(). - -2013-03-29 Tobias Burnus - - PR fortran/35203 - * trans-decl.c (create_function_arglist): Pass hidden argument - for passed-by-value optional+value dummies. - * trans-expr.c (gfc_conv_expr_present, - gfc_conv_procedure_call): Handle those. - -2013-03-28 Thomas Koenig - - PR fortran/45159 - * gfortran.h (gfc_dep_difference): Add prototype. - * dependency.c (discard_nops): New function. - (gfc_dep_difference): New function. - (check_section_vs_section): Use gfc_dep_difference - to calculate the difference of starting indices. - * trans-expr.c (gfc_conv_substring): Use - gfc_dep_difference to calculate the length of - substrings where possible. - -2013-03-28 Thomas Koenig - - PR fortran/55806 - * frontend-passes.c (optimize_code): Keep track of - current code to make code insertion possible. - (combine_array_constructor): New function. - (optimize_op): Call it. - -2013-03-27 Tobias Burnus - - PR fortran/56650 - PR fortran/36437 - * check.c (gfc_check_sizeof, gfc_check_c_sizeof, - gfc_check_storage_size): Update checks. - * intrinsic.texi (SIZEOF): Correct class. - * intrinsic.h (gfc_simplify_sizeof, - gfc_simplify_storage_size): New prototypes. - * intrinsic.c (add_functions): Use them. - * simplify.c (gfc_simplify_sizeof, - gfc_simplify_storage_size): New functions. - -2013-03-27 Janne Blomqvist - - PR fortran/25708 - * module.c (module_locus): Use long for position. - (module_content): New variable. - (module_pos): Likewise. - (prev_character): Remove. - (bad_module): Free data instead of closing mod file. - (set_module_locus): Use module_pos. - (get_module_locus): Likewise. - (module_char): use buffer rather than stdio file. - (module_unget_char): Likewise. - (read_module_to_tmpbuf): New function. - (gfc_use_module): Call read_module_to_tmpbuf. - -2013-03-26 Tobias Burnus - - PR fortran/56649 - * simplify.c (gfc_simplify_merge): Simplify more. - -2013-03-25 Tobias Burnus - - PR fortran/38536 - PR fortran/38813 - PR fortran/38894 - PR fortran/39288 - PR fortran/40963 - PR fortran/45824 - PR fortran/47023 - PR fortran/47034 - PR fortran/49023 - PR fortran/50269 - PR fortran/50612 - PR fortran/52426 - PR fortran/54263 - PR fortran/55343 - PR fortran/55444 - PR fortran/55574 - PR fortran/56079 - PR fortran/56378 - * check.c (gfc_var_strlen): Properly handle 0-sized string. - (gfc_check_c_sizeof): Use is_c_interoperable, add checks. - (is_c_interoperable, gfc_check_c_associated, gfc_check_c_f_pointer, - gfc_check_c_f_procpointer, gfc_check_c_funloc, gfc_check_c_loc): New - functions. - * expr.c (check_inquiry): Add c_sizeof, compiler_version and - compiler_options. - (gfc_check_pointer_assign): Refine function result check. - gfortran.h (gfc_isym_id): Add GFC_ISYM_C_ASSOCIATED, - GFC_ISYM_C_F_POINTER, GFC_ISYM_C_F_PROCPOINTER, GFC_ISYM_C_FUNLOC, - GFC_ISYM_C_LOC. - (iso_fortran_env_symbol, iso_c_binding_symbol): Handle - NAMED_SUBROUTINE. - (generate_isocbinding_symbol): Update prototype. - (get_iso_c_sym): Remove. - (gfc_isym_id_by_intmod, gfc_isym_id_by_intmod_sym): New prototypes. - * intrinsic.c (gfc_intrinsic_subroutine_by_id): New function. - (gfc_intrinsic_sub_interface): Use it. - (add_functions, add_subroutines): Add missing C-binding intrinsics. - (gfc_intrinsic_func_interface): Add special case for c_loc. - gfc_isym_id_by_intmod, gfc_isym_id_by_intmod_sym): New functions. - (gfc_intrinsic_func_interface, gfc_intrinsic_sub_interface): Use them. - * intrinsic.h (gfc_check_c_associated, gfc_check_c_f_pointer, - gfc_check_c_f_procpointer, gfc_check_c_funloc, gfc_check_c_loc, - gfc_resolve_c_loc, gfc_resolve_c_funloc): New prototypes. - * iresolve.c (gfc_resolve_c_loc, gfc_resolve_c_funloc): New - functions. - * iso-c-binding.def: Split PROCEDURE into NAMED_SUBROUTINE and - NAMED_FUNCTION. - * iso-fortran-env.def: Add NAMED_SUBROUTINE for completeness. - * module.c (create_intrinsic_function): Support subroutines and - derived-type results. - (use_iso_fortran_env_module): Update calls. - (import_iso_c_binding_module): Ditto; update calls to - generate_isocbinding_symbol. - * resolve.c (find_arglists): Skip for intrinsic symbols. - (gfc_resolve_intrinsic): Find intrinsic subs via id. - (is_scalar_expr_ptr, gfc_iso_c_func_interface, - set_name_and_label, gfc_iso_c_sub_interface): Remove. - (resolve_function, resolve_specific_s0): Remove calls to those. - (resolve_structure_cons): Fix handling. - * symbol.c (gen_special_c_interop_ptr): Update c_ptr/c_funptr - generation. - (gen_cptr_param, gen_fptr_param, gen_shape_param, - build_formal_args, get_iso_c_sym): Remove. - (std_for_isocbinding_symbol): Handle NAMED_SUBROUTINE. - (generate_isocbinding_symbol): Support hidden symbols and - using c_ptr/c_funptr symtrees for nullptr defs. - * target-memory.c (gfc_target_encode_expr): Fix handling - of c_ptr/c_funptr. - * trans-expr.c (conv_isocbinding_procedure): Remove. - (gfc_conv_procedure_call): Remove call to it. - (gfc_trans_subcomponent_assign, gfc_conv_expr): Update handling - of c_ptr/c_funptr. - * trans-intrinsic.c (conv_isocbinding_function, - conv_isocbinding_subroutine): New. - (gfc_conv_intrinsic_function, gfc_conv_intrinsic_subroutine): - Call them. - * trans-io.c (transfer_expr): Fix handling of c_ptr/c_funptr. - * trans-types.c (gfc_typenode_for_spec, - gfc_get_derived_type): Ditto. - (gfc_init_c_interop_kinds): Handle NAMED_SUBROUTINE. - -2013-03-18 Tobias Burnus - - * gfortran.h (gfc_option_t): Remove flag_whole_file. - * invoke.texi (-fno-whole-file): Remove. - * lang.opt (fwhole-file): Change to Ignore. - * options.c (gfc_init_options, gfc_post_options, - gfc_handle_option): Remove !flag_whole_file handling - * parse.c (resolve_all_program_units, translate_all_program_units, - gfc_parse_file): Ditto. - * resolve.c (resolve_global_procedure): Ditto. - * trans-decl.c (gfc_get_symbol_decl, gfc_get_extern_function_decl, - gfc_create_module_variable): Ditto. - * trans-types.c (gfc_get_derived_type): Ditto. - -2013-03-15 Tobias Burnus - - PR fortran/56615 - * trans-intrinsic.c (gfc_conv_intrinsic_transfer): Pack arrays - if they are not simply contiguous. - -2013-03-11 Tobias Burnus - - * gfortran.texi (STRUCTURE and RECORD): State more clearly how - to convert them into derived types. - -2013-03-10 Paul Thomas - - PR fortran/56575 - * expr.c (gfc_default_initializer): Check that a class declared - type has any components. - * resolve.c (resolve_fl_derived0): On failing the test for C437 - set the type to BT_UNKNOWN to prevent repeat error messages. - -2013-03-03 Mikael Morin - - PR fortran/56477 - * expr.c (gfc_check_pointer_assign): Avoid NULL pointer dereference. - -2013-03-03 Mikael Morin - - PR fortran/54730 - * array.c (gfc_match_array_constructor): Set a checkpoint before - matching a typespec. Drop it on success, restore it otherwise. - -2013-03-03 Mikael Morin - - PR fortran/54730 - * gfortran.h (struct gfc_undo_change_set): New field 'previous'. - (gfc_new_undo_checkpoint, gfc_drop_last_undo_checkpoint, - gfc_restore_last_undo_checkpoint): New prototypes. - * symbol.c (default_undo_chgset_var): Update initialization. - (single_undo_checkpoint_p, gfc_new_undo_checkpoint, - free_undo_change_set_data, pop_undo_change_set, - gfc_drop_last_undo_checkpoint, enforce_single_undo_checkpoint): - New functions. - (save_symbol_data): Handle multiple change sets. Make sure old_symbol - field's previous value is not overwritten. Clear gfc_new field. - (restore_old_symbol): Restore previous old_symbol field. - (gfc_restore_last_undo_checkpoint): New function, using body renamed - from gfc_undo_symbols. Restore the previous change set as current one. - (gfc_undo_symbols): New body. - (gfc_commit_symbols, gfc_commit_symbol, gfc_enforce_clean_symbol_state): - Call enforce_single_undo_checkpoint. - (gfc_symbol_done_2): Ditto. Free change set data. - -2013-03-03 Mikael Morin - - * symbol.c (restore_old_symbol): Fix thinko. - -2013-03-03 Mikael Morin - - * symbol.c (gfc_undo_symbols): Move code... - (restore_old_symbol): ... here as a new function. - -2013-03-03 Mikael Morin - - * Make-lang.in (F95_PARSER_OBJS): Add dependency to vec.h. - * gfortran.h: Include vec.h. - (gfc_undo_change_set): New struct. - * symbol.c (tentative_tbp): Remove struct. - (changed_syms, tentative_tbp_list): Remove variables. - (default_undo_chgset_var, latest_undo_chgset): New variables. - (save_symbol_data, gfc_get_sym_tree, gfc_undo_symbols, - gfc_commit_symbols, gfc_commit_symbol, - gfc_enforce_clean_symbol_state, gfc_get_typebound_proc): - Use latest_undo_chgset instead of changed_syms and tentative_tbp_list. - -2013-03-01 Tobias Burnus - - PR fortran/56491 - * iresolve.c (resolve_bound): Use gfc_get_string instead of xstrdup. - * symbol.c (free_components): Free proc-pointer components. - -2013-03-01 Tobias Burnus - - * trans-decl.c (gfc_trans_deferred_vars): Free expr after use. - * trans-io.c (build_dt): Ditto. - -2013-02-24 Joseph Myers - - * resolve.c (generate_component_assignments): Don't use UTF-8 - ligature in diagnostic. - -2013-02-21 Janus Weil - - PR fortran/56385 - * trans-array.c (structure_alloc_comps): Handle procedure-pointer - components with allocatable result. - -2013-02-21 Tobias Burnus - - PR fortran/56416 - * gfortran.texi (Part II: Language Reference, Extensions, - Non-Fortran Main Program): Sort @menu to match actual section order. - * intrinsic.texi (Intrinsic Procedures): Ditto. - (C_F_POINTER, PRECISION): Move to the alphabetically correct place. - -2013-02-15 Tobias Burnus - Mikael Morin - - PR fortran/56318 - * simplify.c (gfc_simplify_matmul): Fix result shape - and matmul result. - -2013-02-15 Tobias Burnus - - PR fortran/53818 - * resolve.c (apply_default_init_local): Don't create an - initializer for a result variable. - -2013-02-14 Thomas Koenig - - PR fortran/56224 - * gfortran.h (gfc_add_include_path): Add boolean argument - for warn. - * scanner.c (gfc_add_include_path): Pass along warn argument - to add_path_to_list. - * options.c (gfc_post_options): Add true warn argument to - gfc_add_include_path. - (gfc_handle_module_path_options): Likewise. - (gfc_handle_option): Also gfc_add_include_path for intrinsic - modules, without warning. - -2013-02-14 Paul Thomas - Tobias Burnus - - PR testsuite/56138 - * trans-decl.c (gfc_get_symbol_decl): Fix deferred-length - results for functions without extra result variable. - - Revert: - 2013-01-30 Tobias Burnus - - PR fortran/56138 - * trans-decl.c (gfc_trans_deferred_vars): Fix deferred-length - results for functions without extra result variable. - -2013-02-12 Janus Weil - - PR fortran/46952 - * resolve.c (resolve_call): Do not check deferred procedures for - recursiveness. - -2013-02-09 Paul Thomas - - PR fortran/55362 - * check.c (array_check): It is an error if a procedure is - passed. - -2013-02-08 Mikael Morin - - PR fortran/54107 - * trans-types.c (gfc_get_function_type): Change a NULL backend_decl - to error_mark_node on entry. Detect recursive types. Build a variadic - procedure type if the type is recursive. Restore the initial - backend_decl. - -2013-02-07 Tobias Burnus - - PR fortran/54339 - * gfortran.texi (Standards): Mention TS29113. - (Varying Length Character): Mention deferred-length - strings. - (Fortran 2003 Status): Add unlimited polymorphic. - (TS 29113 Status): Add TYPE(*) and DIMENSION(..). - (C Interop): Update the section about TS29113. - -2013-02-06 Paul Thomas - - PR fortran/55789 - * trans-array.c (trans_array_constructor): Remove condition - 'dynamic' = true if the loop ubound is a VAR_DECL. - -2013-02-04 Paul Thomas - - PR fortran/56008 - PR fortran/47517 - * trans-array.c (gfc_alloc_allocatable_for_assignment): Save - the lhs descriptor before it is modified for reallocation. Use - it to deallocate allocatable components in the reallocation - block. Nullify allocatable components for newly (re)allocated - arrays. - -2013-02-04 Mikael Morin - - PR fortran/54195 - * resolve.c (resolve_typebound_procedures): Recurse through - resolve_symbol. - -2013-02-04 Mikael Morin - - PR fortran/54107 - PR fortran/54195 - * gfortran.h (struct gfc_symbol): New field 'resolved'. - * resolve.c (resolve_fl_var_and_proc): Don't skip result symbols. - (resolve_symbol): Skip duplicate calls. Don't check the current - namespace. - -2013-02-02 Thomas Koenig - - PR fortran/50627 - PR fortran/56054 - * decl.c (gfc_match_end): Remove half-ready namespace - from parent if the end of a block is missing. - * parse.c (parse_module): Do not put namespace into - gsymbol on error. - -2013-01-30 Tobias Burnus - - PR fortran/56138 - * trans-decl.c (gfc_trans_deferred_vars): Fix deferred-length - results for functions without extra result variable. - -2013-01-29 Janus Weil - Mikael Morin - - PR fortran/54107 - * gfortran.h (gfc_component): Delete members 'formal' and 'formal_ns'. - (gfc_copy_formal_args,gfc_copy_formal_args_ppc,gfc_expr_replace_symbols, - gfc_expr_replace_comp): Delete. - (gfc_sym_get_dummy_args): New prototype. - * dependency.c (gfc_check_fncall_dependency): Use - 'gfc_sym_get_dummy_args'. - * expr.c (gfc_is_constant_expr): Ditto. - (replace_symbol,gfc_expr_replace_symbols,replace_comp, - gfc_expr_replace_comp): Deleted. - * frontend-passes.c (doloop_code,do_function): Use - 'gfc_sym_get_dummy_args'. - * interface.c (gfc_check_operator_interface,gfc_compare_interfaces, - gfc_procedure_use,gfc_ppc_use,gfc_arglist_matches_symbol, - gfc_check_typebound_override): Ditto. - * module.c (MOD_VERSION): Bump module version. - (mio_component): Do not read/write 'formal' and 'formal_ns'. - * resolve.c (resolve_procedure_interface,resolve_fl_derived0): Do not - copy formal args, but just keep a pointer to the interface. - (resolve_function,resolve_call,resolve_typebound_generic_call, - resolve_ppc_call,resolve_expr_ppc,generate_component_assignments, - resolve_fl_procedure,gfc_resolve_finalizers,check_generic_tbp_ambiguity, - resolve_typebound_procedure,check_uop_procedure): Use - 'gfc_sym_get_dummy_args'. - * symbol.c (free_components): Do not free 'formal' and 'formal_ns'. - (gfc_copy_formal_args,gfc_copy_formal_args_ppc): Deleted. - (gfc_sym_get_dummy_args): New function. - * trans-array.c (get_array_charlen,gfc_walk_elemental_function_args): - Use 'gfc_sym_get_dummy_args'. - * trans-decl.c (build_function_decl,create_function_arglist, - build_entry_thunks,init_intent_out_dt,gfc_trans_deferred_vars, - add_argument_checking): Ditto. - * trans-expr.c (gfc_map_fcn_formal_to_actual,gfc_conv_procedure_call, - gfc_conv_statement_function): Ditto. - * trans-stmt.c (gfc_conv_elemental_dependencies): Ditto. - * trans-types.c (create_fn_spec,gfc_get_function_type): Ditto. - -2013-01-28 Tobias Burnus - Mikael Morin - - PR fortran/53537 - * symbol.c (gfc_find_sym_tree): Don't look for the symbol outside an - interface block. - (gfc_get_ha_symtree): Let gfc_find_sym_tree lookup the parent namespace. - * decl.c (gfc_match_data_decl): Ditto. - (variable_decl): Remove undeclared type error. - (gfc_match_import): Use renamed instead of original name. - -2013-01-27 Paul Thomas - - PR fortran/55984 - PR fortran/56047 - * gfortran.h : Add associate_var to symbol_attr. - * resolve.c (resolve_assoc_var): Set associate_var attribute. - If the target class_ok is set, set it for the associate - variable. - * check.c (allocatable_check): Associate variables should not - have the allocatable attribute even if their symbols do. - * class.c (gfc_build_class_symbol): Symbols with associate_var - set will always have a good class container. - -2013-01-23 Janus Weil - - PR fortran/56081 - * resolve.c (resolve_select): Add argument 'select_type', reject - non-scalar expressions. - (resolve_select_type,resolve_code): Pass new argument to - 'resolve_select'. - -2013-01-23 Jakub Jelinek - - PR fortran/56052 - * trans-decl.c (gfc_get_symbol_decl): Set DECL_ARTIFICIAL - and DECL_IGNORED_P on select_type_temporary and don't set - DECL_BY_REFERENCE. - -2013-01-21 Thomas Koenig - - PR fortran/55919 - * scanner.c (add_path_to_list): Copy path to temporary and strip - trailing directory separators before calling stat(). - -2013-01-17 Richard Biener - - * trans-stmt.c (gfc_trans_do): Conditionally compute countm1 - dependent on sign of step, avoids repeated evaluation of - step sign test. Avoid undefined overflow issues by using unsigned - arithmetic. - -2013-01-16 Janus Weil - - PR fortran/55983 - * class.c (find_typebound_proc_uop): Check for f2k_derived instead of - asserting it. - -2013-01-16 Jakub Jelinek - Tobias Burnus - - PR driver/55884 - * lang.opt (fintrinsic-modules-path): Don't accept Joined. - (fintrinsic-modules-path=): New. - * options.c (gfc_handle_option, gfc_get_option_string, - gfc_get_option_string): Handle the latter. - -2013-01-16 Jakub Jelinek - - PR fortran/52865 - * trans-stmt.c (gfc_trans_do): Put countm1-- before conditional - and use value of countm1 before the decrement in the condition. - -2013-01-15 Paul Thomas - - PR fortran/54286 - * expr.c (gfc_check_pointer_assign): Check for presence of - 's2' before using it. - -2013-01-14 Thomas Koenig - - PR fortran/55806 - * frontend-passes.c (optimize_reduction): New function, - including prototype. - (callback_reduction): Likewise. - (gfc_run_passes): Also run optimize_reduction. - (copy_walk_reduction_arg): New function. - (dummy_code_callback): New function. - -2013-01-13 Jakub Jelinek - - PR fortran/55935 - * trans-expr.c (gfc_conv_structure): Call - unshare_expr_without_location on the ctor elements. - -2013-01-13 Paul Thomas - - PR fortran/54286 - * expr.c (gfc_check_pointer_assign): Ensure that both lvalue - and rvalue interfaces are presented to gfc_compare_interfaces. - Simplify references to interface names by using the symbols - themselves. Call gfc_compare_interfaces with s1 and s2 inter- - changed to overcome the asymmetry of this function. Do not - repeat the check for the presence of s1 and s2. - -2013-01-12 Janus Weil - - PR fortran/55072 - * trans-array.c (gfc_conv_array_parameter): No packing was done for - full arrays of derived type. - -2013-01-08 Paul Thomas - - PR fortran/55868 - * class.c (get_unique_type_string): Change $tar to STAR and - replace sprintf by strcpy where there is no formatting. - * decl.c (gfc_match_decl_type_spec): Change $tar to STAR. - -2013-01-09 Mikael Morin - - PR fortran/47203 - * module.c (check_for_ambiguous): Get the current program unit using - gfc_current_ns. - -2013-01-09 Tobias Burnus - - PR fortran/55758 - * resolve.c (resolve_symbol): Reject non-C_Bool logicals - in BIND(C) procedures with -std=f*. - -2013-01-08 Paul Thomas - - PR fortran/55618 - * trans-expr.c (gfc_conv_procedure_call): Dereference scalar - character function arguments to elemental procedures in - scalarization loops. - -2013-01-07 Tobias Burnus - - PR fortran/55763 - * gfortran.h (gfc_check_assign_symbol): Update prototype. - * decl.c (add_init_expr_to_sym, do_parm): Update call. - * expr.c (gfc_check_assign_symbol): Handle BT_CLASS and - improve error location; support components. - (gfc_check_pointer_assign): Handle component assignments. - * resolve.c (resolve_fl_derived0): Call gfc_check_assign_symbol. - (resolve_values): Update call. - (resolve_structure_cons): Avoid double diagnostic. - -2013-01-07 Tobias Burnus - Thomas Koenig - - PR fortran/55852 - * expr.c (gfc_build_intrinsic_call): Avoid clashes - with user's procedures. - * gfortran.h (gfc_build_intrinsic_call): Update prototype. - * simplify.c (gfc_simplify_size): Update call. - * class.c (finalization_scalarizer, finalization_get_offset, - finalizer_insert_packed_call, generate_finalization_wrapper): - Clean up by using gfc_build_intrinsic_call. - -2013-01-07 Tobias Burnus - - PR fortran/55763 - * resolve.c (resolve_select_type): Reject intrinsic types for - a non-unlimited-polymorphic selector. - -2013-01-06 Paul Thomas - - PR fortran/53876 - PR fortran/54990 - PR fortran/54992 - * trans-array.c (build_array_ref): Check the TYPE_CANONICAL - to see if it is GFC_CLASS_TYPE_P. - * trans-expr.c (gfc_get_vptr_from_expr): The same. - (gfc_conv_class_to_class): If the types are not the same, - cast parmese->expr to the type of ctree. - * trans-types.c (gfc_get_derived_type): GFC_CLASS_TYPE_P of - CLASS components must be set. - -2013-01-06 Mikael Morin - - PR fortran/42769 - PR fortran/45836 - PR fortran/45900 - * module.c (read_module): Don't reuse local symtree if the associated - symbol isn't exactly the one wanted. Don't reuse local symtree if it is - ambiguous. - * resolve.c (resolve_call): Use symtree's name instead of symbol's to - lookup the symtree. - -2013-01-05 Steven G. Kargl - Mikael Morin - - PR fortran/55827 - * class.c (gfc_fix_class_refs): Adapt ts initialization for the case - e->symtree == NULL. - * trans-expr.c (gfc_conv_function_expr): Init sym earlier. Use it. - -2013-01-05 Tobias Burnus - - * class.c (finalize_component): Used passed offset expr. - (finalization_get_offset): New static function. - (finalizer_insert_packed_call, generate_finalization_wrapper): Use it - to handle noncontiguous arrays. - -2013-01-04 Tobias Burnus - - * trans.c (gfc_build_final_call): New function. - * trans.h (gfc_build_final_call, gfc_conv_scalar_to_descriptor): - New function prototypes. - * trans-expr.c (gfc_conv_scalar_to_descriptor): Renamed from - conv_scalar_to_descriptor, removed static attribute. - (gfc_conv_procedure_call): Honor renaming. - -2013-01-04 Tobias Burnus - - * intrinsic.c (add_functions): New internal intrinsic - function GFC_PREFIX ("stride"). - * gfortran.h (gfc_isym_id): Add GFC_ISYM_STRIDE. - * intrinsic.h (gfc_resolve_stride): New prototypes. - * iresolve.c (gfc_resolve_stride): New function. - * trans-intrinsic.c (conv_intrinsic_stride): New static - function. - (gfc_conv_intrinsic_function): Use it. - -2013-01-04 Tobias Burnus - - * class.c (gfc_find_intrinsic_vtab): Add _final - component. - * decl.c (gfc_match_null): Remove superfluous - variadic argument to gfc_match. - -2013-01-04 Paul Thomas - - PR fortran/55172 - * match.c (copy_ts_from_selector_to_associate): Remove call to - gfc_resolve_expr and replace it with explicit setting of the - array reference type. - * resolve.c (resolve_select_type): It is an error if the - selector is coindexed. - -2013-01-04 Tobias Burnus - - PR fortran/55763 - * decl.c (gfc_match_null): Parse and reject MOLD. - -2013-01-04 Tobias Burnus - - PR fortran/55854 - PR fortran/55763 - * class.c (gfc_class_null_initializer): Fix finding the vtab. - (gfc_find_intrinsic_vtab): Use BT_VOID for some components. - -2013-01-03 Janus Weil - - PR fortran/55855 - * expr.c (gfc_check_assign): Use 'gfc_expr_attr' to evaluate attributes - of rvalue. Correct hyphenation in error message. - -2013-01-03 Jakub Jelinek - - * gfortranspec.c (lang_specific_driver): Update copyright notice - dates. + PR fortran/59654 + * resolve.c (resolve_typebound_procedures): No need to create the vtab + here. -Copyright (C) 2013 Free Software Foundation, Inc. +Copyright (C) 2014 Free Software Foundation, Inc. Copying and distribution of this file, with or without modification, are permitted in any medium without royalty provided the copyright diff --git a/gcc/fortran/ChangeLog-2013 b/gcc/fortran/ChangeLog-2013 new file mode 100644 index 00000000000..6c7cea7c4a4 --- /dev/null +++ b/gcc/fortran/ChangeLog-2013 @@ -0,0 +1,2083 @@ +2013-12-30 Janus Weil + + PR fortran/58998 + * resolve.c (resolve_symbol): Check that symbol is not only flavorless + but also untyped. + +2013-12-29 Janus Weil + + PR fortran/59612 + * dump-parse-tree.c (show_typespec): Check for charlen. + * invoke.texi: Fix documentation of -fdump-fortran-optimized and + -fdump-parse-tree. + +2013-12-18 Janus Weil + + PR fortran/59493 + * gfortran.h (gfc_find_intrinsic_vtab): Removed prototype. + (gfc_find_vtab): New prototype. + * class.c (gfc_find_intrinsic_vtab): Rename to 'find_intrinsic_vtab' and + make static. Minor modifications. + (gfc_find_vtab): New function. + (gfc_class_initializer): Use new function 'gfc_find_vtab'. + * check.c (gfc_check_move_alloc): Ditto. + * expr.c (gfc_check_pointer_assign): Ditto. + * interface.c (compare_actual_formal): Ditto. + * resolve.c (resolve_allocate_expr, resolve_select_type): Ditto. + * trans-expr.c (gfc_conv_intrinsic_to_class, gfc_trans_class_assign): + Ditto. + * trans-intrinsic.c (conv_intrinsic_move_alloc): Ditto. + * trans-stmt.c (gfc_trans_allocate): Ditto. + +2013-12-16 Janus Weil + + PR fortran/54949 + * symbol.c (check_conflict): Forbid abstract procedure pointers. + (gfc_add_abstract): Check for attribute conflicts. + +2013-12-16 Jakub Jelinek + + PR libgomp/59337 + * openmp.c (resolve_omp_atomic): Adjust error message. + +2013-12-15 Janus Weil + + PR fortran/59493 + * class.c (gfc_find_intrinsic_vtab): Handle BT_CLASS. + +2013-12-14 Janus Weil + + PR fortran/59502 + * primary.c (gfc_match_varspec): Check for 'class_ok'. + +2013-12-14 Janus Weil + + PR fortran/59450 + * module.c (mio_expr): Handle type-bound function expressions. + +2013-12-12 Tobias Burnus + + PR fortran/59440 + * trans-decl.c (generate_namelist_decl): Ensure debug DIE + is created by setting DECL_IGNORED_P to 0. + +2013-12-11 Janus Weil + + PR fortran/58916 + * resolve.c (conformable_arrays): Treat scalar 'e2'. + (resolve_allocate_expr): Check rank also for unlimited-polymorphic + variables. + +2013-12-10 Janus Weil + + PR fortran/35831 + * interface.c (check_dummy_characteristics): Add checks for several + attributes. + +2013-12-10 Janus Weil + + * gfortran.texi: Add possible kind values (and default) for + DOUBLE PRECISION. + * invoke.texi: Correct documentation of -fdefault-integer-8, + -fdefault-real-8 and -fdefault-double-8. + +2013-12-10 Janus Weil + + * gfortran.texi: Modify documentation of kind type parameters. + * invoke.texi: Extend documentation of -fdefault-integer-8 and + -fdefault-real-8. + +2013-12-10 Janus Weil + + * invoke.texi: Add -freal-4-real-16. Rearrange kind promotion options. + +2013-12-08 Tobias Burnus + Janus Weil + + PR fortran/58099 + PR fortran/58676 + PR fortran/41724 + * resolve.c (gfc_resolve_intrinsic): Set elemental/pure. + (resolve_fl_procedure): Reject pure dummy procedures/procedure + pointers. + (gfc_explicit_interface_required): Don't require a + match of ELEMENTAL for intrinsics. + +2013-12-07 Janus Weil + + PR fortran/59414 + * resolve.c (resolve_specific_f0): Handle CLASS-valued functions. + +2013-12-04 Tobias Burnus + + PR debug/37132 + * trans-decl.c (generate_namelist_decl, create_module_nml_decl): + New static functions. + (gfc_generate_module_vars, generate_local_vars): Call them. + (gfc_trans_use_stmts): Handle namelists for debug genertion. + +2013-12-01 Paul Thomas + + PR fortran/57354 + * trans-array.c (gfc_conv_resolve_dependencies): For other than + SS_SECTION, do a dependency check if the lhs is liable to be + reallocated. + +2013-12-01 Paul Thomas + + PR fortran/58410 + * trans-array.c (gfc_alloc_allocatable_for_assignment): Do not + use the array bounds of an unallocated array but set its size + to zero instead. + +2013-12-01 Paul Thomas + + PR fortran/34547 + * resolve.c (resolve_transfer): EXPR_NULL is always in an + invalid context in a transfer statement. + +2013-11-28 Sergey Ostanevich + + * lang.opt (Wopenmp-simd): New. + +2013-11-25 Janus Weil + + PR fortran/59143 + * interface.c (get_expr_storage_size): Handle array-valued type-bound + procedures. + +2013-11-24 Francois-Xavier Coudert + + * scanner.c (gfc_open_intrinsic_module): Remove function. + * gfortran.h (gfc_open_intrinsic_module): Remove prototype. + +2013-11-23 Janus Weil + + PR fortran/59228 + * interface.c (compare_parameter): Check for array spec. + +2013-11-22 Andrew MacLeod + + * trans.c: Add required include files from gimple.h. + * trans-expr.c: Likewise + * trans-openmp.c: Likewise + +2013-11-22 David Malcolm + + * trans.c (trans_runtime_error_vararg): Remove use of input_line + macro. + +2013-11-17 Andrew MacLeod + + * fortran/trans-intrinsic.c: Include tree-nested.h. + +2013-11-14 Andrew MacLeod + + * trans-expr.c: Include only gimplify.h and gimple.h as needed. + * trans-openmp.c: Likewise. + +2013-11-14 Diego Novillo + + * decl.c: Include stringpool.h. + * iresolve.c: Include stringpool.h. + * match.c: Include stringpool.h. + * module.c: Include stringpool.h. + * target-memory.c: Include stor-layout.h. + * trans-common.c: Include stringpool.h. + Include stor-layout.h. + Include varasm.h. + * trans-const.c: Include stor-layout.h. + * trans-decl.c: Include stringpool.h. + Include stor-layout.h. + Include varasm.h. + Include attribs.h. + * trans-expr.c: Include stringpool.h. + * trans-intrinsic.c: Include stringpool.h. + Include tree-nested.h. + Include stor-layout.h. + * trans-io.c: Include stringpool.h. + Include stor-layout.h. + * trans-openmp.c: Include stringpool.h. + * trans-stmt.c: Include stringpool.h. + * trans-types.c: Include stor-layout.h. + Include stringpool.h. + * trans.c: Include stringpool.h. + +2013-11-12 Andrew MacLeod + + * f95-lang.c: Don't include gimple.h. + * trans-array.c: Include gimple-expr.h instead of gimple.h. + * trans.c: Likewise. + * trans-decl.c: Likewise. + * trans-expr.c: Include gimplify.h. + * trans-openmp.c: Likewise. + +2013-11-07 Janus Weil + + PR fortran/58471 + * primary.c (gfc_expr_attr): Check for result symbol. + +2013-11-06 Francois-Xavier Coudert + + * gfortran.texi: Fix typo. + +2013-11-05 Tobias Burnus + + * lang.opt (-Wdate-time): New option + * cpp.c (gfc_cpp_option_data): Add warn_date_time. + (gfc_cpp_init_options, gfc_cpp_handle_option, + gfc_cpp_post_options): Handle it and pass on to libcpp. + +2013-11-05 Steven G. Kargl + + PR fortran/58989 + * check.c (gfc_check_reshape): ensure that shape is a constant + expression. + +2013-11-05 Tobias Burnus + + * lang.opt (fopenmp-simd): New option. + * gfortran.h (gfc_option_t): Add gfc_flag_openmp_simd. + * options.c (gfc_handle_option): Handle it. + +2013-11-04 Ian Lance Taylor + + * f95-lang.c (ATTR_LEAF_LIST): Define. + +2013-11-04 Paul Thomas + + PR fortran/58771 + * trans-io.c (transfer_expr): If the backend_decl for a derived + type is missing, build it with gfc_typenode_for_spec. + +2013-11-04 Paul Thomas + + PR fortran/57445 + * trans-expr.c (gfc_conv_class_to_class): Remove spurious + assert. + +2013-10-29 Tobias Burnus + + PR fortran/44350 + * parse.c (parse_spec): Add C1116 constraint + check for BLOCK DATA. + +2013-10-29 Paul Thomas + + PR fortran/58793 + * trans-types.c (gfc_typenode_for_spec): Add typenode for + BT_HOLLERITH. Note that the length is incorrect but unusable. + + PR fortran/58858 + * target-memory.c (gfc_element_size): Add element sizes for + BT_VOID and BT_ASSUMED, using gfc_typenode_for_spec. + +2013-10-24 Tobias Burnus + + PR fortran/44646 + * trans-stmt.c (struct forall_info): Add do_concurrent field. + (gfc_trans_forall_1): Set it for do concurrent. + (gfc_trans_forall_loop): Mark those as annot_expr_ivdep_kind. + +2013-10-23 Tobias Burnus + + PR fortran/58793 + * interface.c (compare_parameter): Reject passing TYPE(*) + to CLASS(*). + +2013-10-22 Paul Thomas + + PR fortran 57893 + * class.c : Include target-memory.h. + (gfc_find_intrinsic_vtab) Build a minimal expression so that + gfc_element_size can be used to obtain the storage size, rather + that the kind value. + +2013-10-21 Tobias Burnus + + PR fortran/58803 + * decl.c (match_ppc_decl): Prevent later + double free. + +2013-10-17 Andrew MacLeod + + * trans-openmp.c: Include omp-low.h. + +2013-10-16 Tobias Burnus + + PR fortran/58652 + * interface.c (compare_parameter): Accept passing CLASS(*) + to CLASS(*). + +2013-10-16 Tobias Burnus + + * intrinsic.texi (OpenMP Modules): Update to OpenMPv4. + Document omp_proc_bind_kind. + +2013-10-15 Tobias Burnus + + PR fortran/58652 + * trans-intrinsic.c (conv_intrinsic_move_alloc): Fix handling + of CLASS(*) variables. + +2013-10-14 Tobias Burnus + + PR fortran/58658 + * expr.c (gfc_check_vardef_context): Fix pointer diagnostic + for CLASS(*). + +2013-10-11 Jakub Jelinek + + * trans-openmp.c (gfc_omp_clause_default_ctor, + gfc_omp_clause_dtor): Return NULL for OMP_CLAUSE_REDUCTION. + * f95-lang.c (ATTR_NULL, DEF_FUNCTION_TYPE_8): Define. + * types.def (DEF_FUNCTION_TYPE_8): Document. + (BT_FN_VOID_OMPFN_PTR_UINT, + BT_FN_VOID_OMPFN_PTR_UINT_LONG_LONG_LONG, + BT_FN_VOID_OMPFN_PTR_UINT_LONG_LONG_LONG_LONG, + BT_FN_VOID_OMPFN_PTR_OMPCPYFN_LONG_LONG_BOOL_UINT): Remove. + (BT_FN_VOID_OMPFN_PTR_UINT_UINT_UINT, + BT_FN_VOID_OMPFN_PTR_UINT_LONG_LONG_LONG_UINT, + BT_FN_VOID_OMPFN_PTR_UINT_LONG_LONG_LONG_LONG_UINT, + BT_FN_BOOL_INT, BT_FN_BOOL_INT_BOOL, BT_FN_VOID_UINT_UINT, + BT_FN_VOID_INT_PTR_SIZE_PTR_PTR_PTR, + BT_FN_VOID_INT_OMPFN_PTR_SIZE_PTR_PTR_PTR, + BT_FN_VOID_OMPFN_PTR_OMPCPYFN_LONG_LONG_BOOL_UINT_PTR): New. + +2013-10-10 Tobias Burnus + + PR fortran/58226 + * options.c (gfc_get_option_string): Handle zero arg case. + +2013-10-02 Tobias Burnus + + PR fortran/58593 + * trans-expr.c (gfc_conv_string_tmp): Fix obtaining + the byte size of a single character. + +2013-10-01 Tobias Burnus + + PR fortran/58579 + * trans-expr.c (gfc_conv_string_tmp): Correctly obtain + the byte size of a single character. + +2013-09-27 Janne Blomqvist + + * intrinsic.texi (DATE_AND_TIME): Fix example. + +2013-09-25 Tobias Burnus + + PR fortran/58436 + * class.c (generate_finalization_wrapper): Handle CLASS(*). + +2013-09-25 Tobias Burnus + + PR fortran/57697 + PR fortran/58469 + * resolve.c (generate_component_assignments): Avoid double free + at runtime and freeing a still-being used expr. + +2013-09-25 Tom Tromey + + * Make-lang.in (fortran_OBJS): Use fortran/gfortranspec.o. + (gfortranspec.o): Remove. + (CFLAGS-fortran/gfortranspec.o): New variable. + (GFORTRAN_D_OBJS): Update. + ($(F95_PARSER_OBJS), fortran/openmp.o, GFORTRAN_TRANS_DEPS) + (fortran/f95-lang.o, fortran/scanner.o, fortran/convert.o) + (fortran/frontend-passes.o, fortran/trans.o, fortran/trans-decl.o) + (fortran/trans-types, fortran/trans-const.o, fortran/trans-expr.o) + (fortran/trans-stmt.o, fortran/trans-openmp.o, fortran/trans-io.o) + (fortran/trans-array.o, fortran/trans-intrinsic.o) + (fortran/dependency.o, fortran/trans-common.o, fortran/resolve.o) + (fortran/data.o, fortran/options.o, fortran/cpp.o) + (fortran/scanner.o, fortran/module.o): Remove. + +2013-09-25 Tom Tromey + + * Make-lang.in (gfortranspec.o): Don't use subshell. + +2013-09-23 Janus Weil + + PR fortran/58355 + * decl.c (check_extended_derived_type): Prevent segfault, modify error + message. + +2013-09-20 Janus Weil + + PR fortran/58099 + * expr.c (gfc_check_pointer_assign): Remove second call to + 'gfc_compare_interfaces' with swapped arguments. + * interface.c (gfc_compare_interfaces): Symmetrize the call to + 'check_result_characteristics' by calling it with swapped arguments. + +2013-09-18 Tobias Burnus + + * expr.c (gfc_check_assign_symbol): Free lvalue.ref. + +2013-09-18 Tobias Burnus + + PR fortran/43366 + * primary.c (gfc_variable_attr): Also handle codimension. + * resolve.c (resolve_ordinary_assign): Add invalid-diagnostic for + polymorphic assignment. + +2013-09-16 Tobias Burnus + + PR fortran/58356 + * class.c (generate_finalization_wrapper): Init proc_tree if + not yet resolved. + +2013-09-16 Tobias Burnus + + PR fortran/57697 + * resolve.c (generate_component_assignments): Correctly handle the + case that the LHS is not allocated. + +2013-09-15 Tobias Burnus + + PR fortran/57697 + * resolve.c (generate_component_assignments): Handle unallocated + LHS with defined assignment of components. + +2013-09-12 Brooks Moses + + PR driver/42955 + * Make-lang.in: Do not install driver binaries in $(target)/bin. + +2013-09-09 Tobias Burnus + + * invoke.texi (Error and Warning Options): Add hyphen. + +2013-09-02 Thomas Koenig + + PR fortran/PR56519 + * gfortran.h: Declare gfc_do_concurrent_flag as extern. + * resolve.c: Rename do_concurrent_flag to gfc_do_concurrent_flag + and make non-static. + (resolve_function): Use gfc_do_concurrent_flag instead of + do_concurrent_flag. + (pure_subroutine): Likewise. + (resolve_code): Likewise. + (resolve_types): Likewise. + * intrinsic.c (gfc_intrinsic_sub_interface): Raise error for + non-pure intrinsic subroutines within DO CONCURRENT. + +2013-08-29 Thomas Koenig + + PR fortran/52243 + * trans-expr.c (is_runtime_conformable): New function. + * gfc_trans_assignment_1: Use it. + +2013-08-26 Thomas Koenig + + PR fortran/58146 + * array.c (gfc_ref_dimen_size): If possible, use + gfc_dep_difference to calculate array refrence + sizes. Fall back to integer code otherwise. + * dependency.c (discard_nops). Move up. + Also discarde widening integer conversions. + (gfc_dep_compare_expr): Use discard_nops. + +2013-08-23 Mikael Morin + + PR fortran/57798 + * trans-array.c (gfc_conv_ss_startstride, set_loop_bounds, + gfc_set_delta): Generate preliminary code before the outermost loop. + +2013-08-23 Janus Weil + + PR fortran/57843 + * interface.c (gfc_extend_assign): Look for type-bound assignment + procedures before non-typebound. + +2013-08-23 Mikael Morin + + * trans-array.c (gfc_conv_section_startstride): Move &loop->pre access + to the callers. + (gfc_conv_ss_startstride, gfc_conv_expr_descriptor): Update callers. + +2013-08-22 Janus Weil + + PR fortran/58185 + * match.c (copy_ts_from_selector_to_associate): Only build class + container for polymorphic selector. Some cleanup. + +2013-08-20 Janus Weil + + PR fortran/53655 + * trans-decl.c (generate_local_decl): Check if type has any components. + +2013-08-19 Janus Weil + + PR fortran/46271 + * openmp.c (resolve_omp_clauses): Bugfix for procedure pointers. + +2013-08-12 Thomas Koenig + + PR fortran/56666 + * gfortran.h (gfc_option_t): Add warn_zerotrip. + * invoke.texi (-Wzerotrip): Document option. + * lang.opt (Wzerotrip): Add. + * options.c (gfc_init_options): Initialize warn_zerotrip. + (set_Wall): Add handling of warn_zerotrip. + (gfc_handle_option): Handle OPT_Wzerotrip. + * resolve.c (gfc_resolve_iterator): Honor + gfc_option.warn_zerotrip; update error message to show + how to suppress the warning. + +2013-08-09 Janus Weil + + * gfortran.h (gfc_get_code): Modified prototype. + * class.c (finalize_component, finalization_scalarizer, + finalization_get_offset, finalizer_insert_packed_call, + generate_finalization_wrapper, gfc_find_derived_vtab, + gfc_find_intrinsic_vtab): Use 'gfc_get_code'. + * io.c (match_io_iterator, match_io_element, terminate_io, get_io_list, + gfc_match_inquire): Call 'gfc_get_code' with argument. + * match.c (match_simple_forall, gfc_match_forall, gfc_match_goto, + gfc_match_nullify, gfc_match_call, match_simple_where, gfc_match_where): + Ditto. + * parse.c (new_level): Ditto. + (add_statement): Use XCNEW. + * resolve.c (resolve_entries, resolve_allocate_expr, + resolve_select_type, build_assignment, build_init_assign): Call + 'gfc_get_code' with argument. + * st.c (gfc_get_code): Add argument 'op'. + * trans-expr.c (gfc_trans_class_array_init_assign): Call 'gfc_get_code' + with argument. + * trans-stmt.c (gfc_trans_allocate): Ditto. + +2013-08-09 Janus Weil + + PR fortran/58058 + * trans-intrinsic.c (gfc_conv_intrinsic_transfer): Free the temporary + string, if necessary. + +2013-08-06 Martin Jambor + + PR fortran/57987 + * trans-decl.c (gfc_generate_function_code): Never call + cgraph_finalize_function on nested functions. + +2013-08-06 Janus Weil + + PR fortran/57306 + * class.c (gfc_class_null_initializer): Rename to + 'gfc_class_initializer'. Treat non-NULL init-exprs. + * gfortran.h (gfc_class_null_initializer): Update prototype. + * trans-decl.c (gfc_get_symbol_decl): Treat class variables. + * trans-expr.c (gfc_conv_initializer): Ditto. + (gfc_trans_subcomponent_assign): Renamed gfc_class_null_initializer. + +2013-07-30 Tobias Burnus + + PR fortran/57530 + * symbol.c (gfc_type_compatible): A type is type compatible with + a class if both have the same declared type. + * interface.c (compare_type): Reject CLASS/TYPE even if they + are type compatible. + +2013-07-30 Tobias Burnus + + PR fortran/57530 + * trans-expr.c (gfc_trans_class_assign): Handle CLASS array + functions. + (gfc_trans_pointer_assign): Ditto and support pointer assignment of + a polymorphic var to a nonpolymorphic var. + +2013-07-22 Po Chang + + * match.c (gfc_match_call): Exit loop after setting i. + + * resolve.c (resolve_variable): Exit loop after setting seen. + + * expr.c (gfc_check_pointer_assign): Exit loop after setting warn. + + * trans-array.c (set_loop_bounds): Exit loop after setting + nonoptional_arr. + + * trans-io.c (gfc_trans_transfer): Exit loop after setting seen_vector. + +2013-07-28 Thomas Koenig + + PR fortran/58009 + * expr.c (gfc_check_vardef_context): Check for same values in + vector expression subscripts. + +2013-07-27 Tobias Burnus + + PR fortran/57991 + * interface.c (check_some_aliasing): Also warn for intent OUT/OUT. + +2013-07-27 Janus Weil + + PR fortran/57285 + * check.c (dim_rank_check): Re-enable this check for CLASS arrays. + +2013-07-25 Janus Weil + + PR fortran/57966 + * resolve.c (resolve_typebound_function): Make sure the declared type, + including its type-bound procedures, is resolved before resolving the + actual type-bound call. + +2013-07-25 Janus Weil + + PR fortran/57639 + * interface.c (compare_parameter): Check for class_ok. + * simplify.c (gfc_simplify_same_type_as): Ditto. + +2013-07-23 Ondřej Bílka + + * decl.c: Fix comment typos. + * interface.c: Likewise. + * trans-array.c: Likewise. + * trans.c: Likewise. + +2013-07-22 Tobias Burnus + + PR fortran/57906 + PR fortran/52052 + * class.c (gfc_build_class_symbol): Set coarray_comp. + * trans-array.c (structure_alloc_comps): For coarrays, + directly use the data pointer address. + +2013-07-22 Chang + + * trans-decl.c (gfc_build_dummy_array_decl): Exit loop after + setting PACKED_PARTIAL. + +2013-07-22 Tobias Burnus + + * trans-array.c (gfc_array_allocate): Correct memory-leak patch. + +2013-07-22 Tobias Burnus + + * trans-array.c (gfc_array_allocate, + gfc_trans_deferred_array): Plug memory leak. + +2013-07-21 Ondřej Bílka + + * trans-decl.c: Fix comment typos. + * trans-expr.c: Ditto. + +2013-07-21 Thomas Koenig + + PR fortran/56937 + * dependency.c (gfc_dep_resolver): Treat identical + array subscripts as identical; don't unconditionally + return a dependency if an array subscript is found. + +2013-07-21 Tobias Burnus + + PR fortran/35862 + * libgfortran.h (GFC_FPE_DOWNWARD, GFC_FPE_TONEAREST, + GFC_FPE_TOWARDZERO, GFC_FPE_UPWARD): New defines. + +2013-07-21 Tobias Burnus + + PR fortran/57894 + * check.c (min_max_args): Add keyword= check. + +2013-07-17 Mikael Morin + Tobias Burnus + + PR fortran/57895 + * match.c (gfc_match_name): Ensure that the error + message regarding -fdollar-ok gets printed. + (gfc_match_common): Avoid multiple freeing. + +2013-07-16 Tobias Burnus + + PR fortran/57912 + * trans-expr.c (gfc_trans_scalar_assign): Correct if + condition for caf realloc. + +2013-07-15 Tobias Burnus + + * trans-array.h (gfc_deallocate_alloc_comp_no_caf, + gfc_reassign_alloc_comp_caf): New prototype. + * trans-array.c (enum): Add DEALLOCATE_ALLOC_COMP_NO_CAF + and COPY_ALLOC_COMP_CAF. + (structure_alloc_comps): Handle it. + (gfc_reassign_alloc_comp_caf, + gfc_deallocate_alloc_comp_no_caf): New function. + (gfc_alloc_allocatable_for_assignment): Call it. + * trans-expr.c (gfc_trans_scalar_assign, + gfc_trans_arrayfunc_assign, gfc_trans_assignment_1): Ditto. + * parse.c (parse_derived): Correctly set coarray_comp. + * resolve.c (resolve_symbol): Improve error wording. + +2013-07-15 Tobias Burnus + + PR fortran/37336 + * trans.c (gfc_add_comp_finalizer_call): New function. + * trans.h (gfc_add_comp_finalizer_call): New prototype. + * trans-array.c (structure_alloc_comps): Call it. + +2013-07-14 Thomas Koenig + Tobias Burnus + + PR fortran/52669 + * trans-decl.c (gfc_finish_var_decl): Move setting of + PRIVATE for a module variable if the module has a private + default or -fmodule-private is given to... + (gfc_create_module_variable): here. Optionally + warn about private module variable which is not used. + +2013-07-08 Tobias Burnus + + PR fortran/57834 + * check.c (is_c_interoperable): Add special case for c_f_pointer. + (explicit-size, gfc_check_c_f_pointer, gfc_check_c_loc): Update + call. + +2013-07-08 Tobias Burnus + + PR fortran/50554 + * io.c (match_inquire_element): Add missing do-var check. + +2013-07-08 Tobias Burnus + + PR fortran/57785 + * simplify.c (compute_dot_product): Complex conjugate for + dot_product. + (gfc_simplify_dot_product, gfc_simplify_matmul): Update call. + +2013-07-08 Tobias Burnus + + PR fortran/57469 + * trans-decl.c (generate_local_decl): Don't warn that + a dummy is unused, when it is in a namelist. + +2013-07-01 Dominique d'Humieres + + PR fortran/54788 + * array.c (spec_size): handle the case as==NULL. + +2013-06-26 Tobias Burnus + + PR fortran/29800 + * trans-array.c (gfc_conv_array_ref): Improve out-of-bounds + diagnostic message. + * trans-array.c (gfc_conv_array_ref): Update prototype. + * trans-expr.c (gfc_conv_variable): Update call. + +2013-06-24 Steven G. Kargl + Francois-Xavier Coudert + Dominique d'Humieres + + PR fortran/52413 + * simplify.c (gfc_simplify_fraction): Fix the sign of negative values. + +2013-06-21 Tobias Burnus + + PR fortran/37336 + * trans-array.c (gfc_trans_deferred_array): Call the + finalizer for nonallocatable local variables. + * trans-decl.c (gfc_get_symbol_decl): Add local + finalizable vars to the deferred list. + (gfc_trans_deferred_vars): Call gfc_trans_deferred_array + for those. + +2013-06-21 Tobias Burnus + + * trans-array.c (gfc_alloc_allocatable_for_assignment): Allocate + at least one byte. + * trans-expr.c (alloc_scalar_allocatable_for_assignment): Ditto. + +2013-06-20 Tobias Burnus + + * resolve.c (get_temp_from_expr): Don't set FL_VARIABLE twice. + +2013-06-17 Tobias Burnus + + * gfortran.h (gfc_option_t): Add fpe_summary. + * gfortran.texi (_gfortran_set_options): Update. + * invoke.texi (-ffpe-summary): Add doc. + * lang.opt (ffpe-summary): Add flag. + * options.c (gfc_init_options, gfc_handle_option): Handle it. + (gfc_handle_fpe_option): Renamed from gfc_handle_fpe_trap_option, + also handle fpe_summary. + * trans-decl.c (create_main_function): Update + _gfortran_set_options call. + +2013-06-15 Mikael Morin + + PR fortran/49074 + PR fortran/56136 + * dependency.c (gfc_check_argument_var_dependency): Return 0 in the + array constructor case. + +2013-06-14 Tobias Burnus + + PR fortran/57508 + * resolve.c (get_temp_from_expr): Don't copy function + result attributes to temporary. + +2013-06-14 Tobias Burnus + + PR fortran/57596 + * trans-decl.c (gfc_trans_deferred_vars): Honor OPTIONAL + for nullify and deferred-strings' length variable. + +2013-06-13 Mikael Morin + + PR fortran/49074 + * trans-expr.c (gfc_conv_variable): Don't walk the reference chain. + Handle NULL array references. + (gfc_conv_procedure_call): Remove code handling NULL array references. + +2013-06-11 Tobias Burnus + + PR fortran/57535 + * trans-array.c (build_class_array_ref): Fix ICE for + function result variables. + +2013-06-08 Tobias Burnus + + PR fortran/37336 + * trans-decl.c (init_intent_out_dt): Call finalizer + when appropriate. + +2013-06-08 Tobias Burnus + + PR fortran/57553 + * simplify.c (gfc_simplify_storage_size): Handle literal + strings. + * trans-intrinsic.c (gfc_conv_intrinsic_storage_size): + Add missing fold_convert. + +2013-06-07 Tobias Burnus + + PR fortran/57549 + * array.c (gfc_match_array_constructor): Call + gfc_match_type_spec instead of gfc_match_decl_type_spec. + * match.c (gfc_match_type_spec): Renamed from match_type_spec. + (gfc_match_type_is, gfc_match_allocate): Update call. + * match.h (gfc_match_type_spec): Add prototype. + +2013-06-07 Tobias Burnus + + PR fortran/57556 + * trans.c (gfc_build_final_call): Init block before use. + +2013-06-06 Tobias Burnus + + PR fortran/57542 + * trans.c (gfc_build_final_call): Add se.pre to the block + and modify the assert. + +2013-06-04 Tobias Burnus + + PR fortran/37336 + * trans.h (gfc_build_final_call): Remove prototype. + (gfc_add_finalizer_call): Add prototype. + * trans-array.c (gfc_trans_dealloc_allocated): Support finalization. + (structure_alloc_comps): Update caller. + (gfc_trans_deferred_array): Call finalizer. + * trans-array.h (gfc_trans_dealloc_allocated): Update prototype. + * trans-decl.c (gfc_trans_deferred_vars): Don't deallocate/finalize + variables of the main program. + * trans-expr.c (gfc_conv_procedure_call): Support finalization. + * trans-openmp.c (gfc_omp_clause_dtor, + gfc_trans_omp_array_reduction): Update calls. + * trans-stmt.c (gfc_trans_deallocate): Avoid double deallocation + of alloc components. + * trans.c (gfc_add_finalizer_call): New function. + (gfc_deallocate_with_status, + gfc_deallocate_scalar_with_status): Call it + (gfc_build_final_call): Fix handling of scalar coarrays, + move up in the file and make static. + +2013-06-01 Janus Weil + Mikael Morin + + * error.c (get_terminal_width): Only limit the width if we're + outputting to a terminal. Try to determine width via ioctl. + +2013-06-01 Tobias Burnus + + * decl.c (add_global_entry): Take locus. + (gfc_match_entry): Update call. + (gfc_match_end): Better error location. + * parse.c (parse_block_data, parse_module, add_global_procedure, + add_global_program): Use better locus data. + +2013-05-31 Tobias Burnus + + PR fortran/57456 + * trans-array.c (gfc_array_init_size): Use passed type spec, + when available. + (gfc_array_allocate): Pass typespec on. + * trans-array.h (gfc_array_allocate): Update prototype. + * trans-stmt.c (gfc_trans_allocate): Pass typespec on. + +2013-05-31 Janus Weil + + PR fortran/54190 + PR fortran/57217 + * gfortran.h (gfc_terminal_width): Remove prototype. + * error.c (get_terminal_width): Moved here from misc.c. Renamed. + Try to determine terminal width from environment variable. + * interface.c (compare_type, compare_rank): New functions. Fix assumed + type/rank handling. + (compare_type_rank, check_dummy_characteristics, + check_result_characteristics, gfc_compare_interfaces): Use them. + (symbol_rank): Slightly modified and moved. + * misc.c (gfc_terminal_width): Moved to error.c. + +2013-05-30 Janus Weil + + PR fortran/54189 + * resolve.c (check_assumed_size_reference): Check for e->ref. + +2013-05-30 Tobias Burnus + + PR fortran/57458 + * interface.c (compare_parameter): Update C1239/C1240 constraint + check for assumed-rank/TS29113. + +2013-05-29 Tobias Burnus + + PR fortran/37336 + * class.c (finalize_component): Fix coarray array refs. + (generate_finalization_wrapper): Only gfc_convert_type_warn + when the kind value is different. + (gfc_find_intrinsic_vtab): _copy's dst is now intent(inout). + (gfc_find_derived_vtab): Ditto. Enable finalization-wrapper + generation. + * module.c (MOD_VERSION): Bump. + (gfc_dump_module, gfc_use_module): Remove empty line in .mod. + * trans-array.c (gfc_conv_descriptor_token): Accept nonrestricted + void pointer. + (gfc_array_allocate, structure_alloc_comps): Don't nullify for + BT_CLASS allocations. + * trans-stmt.c (gfc_trans_allocate): Ditto. + +2013-05-29 Tobias Burnus + + PR fortran/37336 + * resolve.c (gfc_resolve_finalizers): Remove not implemented error. + +2013-05-28 Tobias Burnus + + * trans-expr.c (gfc_conv_procedure_call): Deallocate + polymorphic arrays for allocatable intent(out) dummies. + (gfc_reset_vptr): New function, moved from trans-stmt.c + and extended. + * trans-stmt.c (reset_vptr): Remove. + (gfc_trans_deallocate): Update calls. + * trans.h (gfc_reset_vptr): New prototype. + +2013-05-28 Dominique d'Humieres + + PR fortran/57435 + * module.c (check_for_ambiguous): Avoid null pointer deref. + +2013-05-28 Janus Weil + Tobias Burnus + + PR fortran/57217 + * interface.c (check_dummy_characteristics): Symmetrize type check. + +2013-05-27 Bud Davis + + PR fortran/50405 + * resolve.c (resolve_formal_arglist): Detect error when an argument + has the same name as the function. + +2013-05-27 Tobias Burnus + + * expr.c (gfc_build_intrinsic_call): Make symbol as attr.artificial. + * intrinsic.c (gfc_is_intrinsic): Disable std check for those. + +2013-05-22 Tobias Burnus + + * resolve.c (get_temp_from_expr): Change mangling to + start always with a _. + +2013-05-22 Tobias Burnus + + * resolve.c (get_temp_from_expr): Fix temp var mangling. + +2013-05-22 Tobias Burnus + + PR fortran/57364 + * resolve.c (get_temp_from_expr): Commit created sym. + +2013-05-22 Tobias Burnus + + PR fortran/57338 + * intrinsic.c (do_check): Move some checks to ... + (do_ts29113_check): ... this new function. + (check_specific, gfc_intrinsic_sub_interface): Call it. + +2013-05-22 Janne Blomqvist + + * intrinsic.texi (RANDOM_SEED): Improve example. + +2013-05-21 Tobias Burnus + + PR fortran/57035 + * intrinsic.c (do_check): Add constraint check for + NO_ARG_CHECK, assumed rank and assumed type. + * gfortran.texi (NO_ARG_CHECK): Minor wording change, + allow PRESENT intrinsic. + +2013-05-20 Tobias Burnus + + PR fortran/48858 + PR fortran/55465 + * decl.c (add_global_entry): Add sym_name. + * parse.c (add_global_procedure): Ditto. + * resolve.c (resolve_bind_c_derived_types): Handle multiple decl for + a procedure. + (resolve_global_procedure): Handle gsym->ns pointing to a module. + * trans-decl.c (gfc_get_extern_function_decl): Ditto. + +2013-05-20 Tobias Burnus + + PR fortran/48858 + * decl.c (add_global_entry): Use nonbinding name + only for F2003 or if no binding label exists. + (gfc_match_entry): Update calls. + * parse.c (gfc_global_used): Improve error message. + (add_global_procedure): Use nonbinding name + only for F2003 or if no binding label exists. + (gfc_parse_file): Update call. + * resolve.c (resolve_global_procedure): Use binding + name when available. + * trans-decl.c (gfc_get_extern_function_decl): Ditto. + +2013-05-20 Tobias Burnus + + PR fortran/48858 + * decl.c (gfc_match_bind_c_stmt): Add gfc_notify_std. + * match.c (gfc_match_common): Don't add commons to gsym. + * resolve.c (resolve_common_blocks): Add to gsym and + add checks. + (resolve_bind_c_comms): Remove. + (resolve_types): Remove call to the latter. + * trans-common.c (gfc_common_ns): Remove static var. + (gfc_map_of_all_commons): Add static var. + (build_common_decl): Correctly handle binding label. + +2013-05-16 Jason Merrill + + * Make-lang.in (f951$(exeext)): Use link mutex. + +2013-05-05 Tobias Burnus + + * resolve.c (conformable_arrays): Avoid segfault + when ar.start[i] == NULL. + +2013-05-05 Tobias Burnus + + PR fortran/57141 + * decl.c (gfc_match_null): Permit use-associated + NULL intrinsic. + +2013-05-04 Tobias Burnus + + * decl.c (gfc_verify_c_interop_param): Permit allocatable + and pointer with -std=f2008ts. + +2013-05-02 Tobias Burnus + + PR fortran/57142 + * simplify.c (gfc_simplify_size): Renamed from + simplify_size; fix kind=8 handling. + (gfc_simplify_size): New function. + (gfc_simplify_shape): Add range check. + * resolve.c (resolve_function): Fix handling + for ISYM_SIZE. + +2013-05-01 Thomas Koenig + + * frontend-passes.c (optimize_power): Fix typo + in comment. + +2013-04-30 Thomas Koenig + + PR fortran/57071 + * frontend-passes.c (optimize_power): Simplify + 1**k to 1. + +2013-04-28 Tobias Burnus + + PR fortran/57114 + * intrinsic.texi (RANK): Correct syntax description and + expected result. + +2013-04-28 Tobias Burnus + + PR fortran/57093 + * trans-types.c (gfc_get_element_type): Fix handling + of scalar coarrays of type character. + * intrinsic.texi (PACK): Add missing ")". + +2013-04-28 Thomas Koenig + + PR fortran/57071 + * frontend-passes (optimize_power): New function. + (optimize_op): Use it. + +2013-04-25 Janne Blomqvist + + PR bootstrap/57028 + * Make-lang.in (f951): Link in ZLIB. + (CFLAGS-fortran/module.o): Add zlib include directory. + +2013-04-22 Janus Weil + + PR fortran/53685 + PR fortran/57022 + * check.c (gfc_calculate_transfer_sizes): Fix for array-valued SOURCE + expressions. + * simplify.c (gfc_simplify_sizeof,gfc_simplify_storage_size): Get rid + of special treatment for EXPR_ARRAY. + * target-memory.h (gfc_element_size): New prototype. + * target-memory.c (size_array): Remove. + (gfc_element_size): New function. + (gfc_target_expr_size): Modified to always return the full size of the + expression. + +2013-04-20 Tobias Burnus + + PR fortran/56907 + * trans-intrinsic.c (conv_isocbinding_function): Don't pack array + passed to C_LOC + +2013-04-19 Thomas Koenig + Mikael Morin + + PR fortran/56872 + * frontend-passes.c (copy_walk_reduction_arg): Change argument type + to gfc_constructor. If it has an iterator, wrap the copy of its + expression in an array constructor with that iterator. Don't special + case function expressions. + (callback_reduction): Update caller. Don't return early if there is + an iterator. + +2013-04-18 Tobias Burnus + + * expr.c (find_array_element): Don't copy expr. + * data.c (create_character_initializer): Free expr. + * frontend-passes.c (combine_array_constructor): Ditto. + * match.c (match_typebound_call, gfc_match_select_type): Ditto. + * resolve.c (resolve_typebound_function): Free gfc_ref. + +2013-04-18 Tobias Burnus + + PR fortran/56994 + * invoke.texi (NEAREST): S argument is not optional. + +2013-04-17 Janus Weil + + PR fortran/56814 + * interface.c (check_result_characteristics): Get result from interface + if present. + +2013-04-17 Janne Blomqvist + + PR fortran/40958 + * scanner.h: New file. + * Make-lang.in: Dependencies on scanner.h. + * scanner.c (gfc_directorylist): Move to scanner.h. + * module.c: Don't include md5.h, include scanner.h and zlib.h. + (MOD_VERSION): Add comment about backwards compatibility. + (module_fp): Change type to gzFile. + (ctx): Remove. + (gzopen_included_file_1): New function. + (gzopen_included_file): New function. + (gzopen_intrinsic_module): New function. + (write_char): Use gzputc. + (read_crc32_from_module_file): New function. + (read_md5_from_module_file): Remove. + (gfc_dump_module): Use gz* functions instead of stdio, check gzip + crc32 instead of md5. + (read_module_to_tmpbuf): Use gz* functions instead of stdio. + (gfc_use_module): Use gz* functions. + +2013-04-16 Tobias Burnus + + PR fortran/39505 + * decl.c (ext_attr_list): Add EXT_ATTR_NO_ARG_CHECK. + * gfortran.h (ext_attr_id_t): Ditto. + * gfortran.texi (GNU Fortran Compiler Directives): + Document it. + * interface.c (compare_type_rank): Ignore rank for NO_ARG_CHECK. + (compare_parameter): Ditto - and regard as unlimited polymorphic. + * resolve.c (resolve_symbol, resolve_variable): Add same constraint + checks as for TYPE(*); turn dummy to TYPE(*),dimension(*). + (gfc_explicit_interface_required): Require explicit interface + for NO_ARG_CHECK. + +2013-04-16 Janus Weil + + PR fortran/56968 + * expr.c (gfc_check_pointer_assign): Handle generic functions returning + procedure pointers. + +2013-04-16 Tobias Burnus + + PR fortran/56969 + * intrinsic.c (gfc_intrinsic_func_interface): Don't set + module name to "(intrinsic)" for intrinsics from intrinsic + modules. + +2013-04-15 Tobias Burnus + + * intrinsic.texi (SYSTEM_CLOCK): Recommend kind=8. + +2013-04-15 Janne Blomqvist + + PR fortran/56919 + * intrinsics.texi (SYSTEM_CLOCK): Update documentation. + +2013-04-15 Tobias Burnus + + * class.c (gfc_find_intrinsic_vtab): Removed unused var. + * dependency.c (check_data_pointer_types): Fix check. + * frontend-passes.c (check_data_pointer_types): Remove + superfluous statement. + * parse.c (decode_omp_directive): Add missing break. + * resolve.c (resolve_typebound_subroutine: Free variable. + * trans-decl.c (create_function_arglist): Correct condition. + +2013-04-14 Mikael Morin + + PR fortran/56816 + * match.c (gfc_match_select_type): Add syntax error. Move namespace + allocation and cleanup... + * parse.c (decode_statement): ... here. + +2013-04-13 Janus Weil + + PR fortran/55959 + * expr.c (gfc_simplify_expr): Branch is not unreachable. + +2013-04-12 Janus Weil + + PR fortran/56266 + * primary.c (gfc_match_varspec): Turn gcc_assert into MATCH_ERROR. + +2013-04-12 Tobias Burnus + + PR fortran/56929 + * trans-array.c (duplicate_allocatable): Fix handling + of scalar coarrays. + +2013-04-12 Janus Weil + + PR fortran/56261 + * gfortran.h (gfc_explicit_interface_required): New prototype. + * expr.c (gfc_check_pointer_assign): Check if an explicit interface is + required in a proc-ptr assignment. + * interface.c (check_result_characteristics): Extra check. + * resolve.c (gfc_explicit_interface_required): New function. + (resolve_global_procedure): Use new function + 'gfc_explicit_interface_required'. Do a full interface check. + +2013-04-12 Tobias Burnus + + PR fortran/56845 + * trans-decl.c (gfc_trans_deferred_vars): Restrict + static CLASS init to SAVE and -fno-automatic. + +2013-04-12 Tobias Burnus + + PR fortran/56845 + * trans-decl.c (gfc_trans_deferred_vars): Set _vptr for + allocatable static BT_CLASS. + * trans-expr.c (gfc_class_set_static_fields): New function. + * trans.h (gfc_class_set_static_fields): New prototype. + +2013-04-11 Janne Blomqvist + + * gfortran.h: Remove enum gfc_try, replace gfc_try with bool type. + * arith.c: Replace gfc_try with bool type. + * array.c: Likewise. + * check.c: Likewise. + * class.c: Likewise. + * cpp.c: Likewise. + * cpp.h: Likewise. + * data.c: Likewise. + * data.h: Likewise. + * decl.c: Likewise. + * error.c: Likewise. + * expr.c: Likewise. + * f95-lang.c: Likewise. + * interface.c: Likewise. + * intrinsic.c: Likewise. + * intrinsic.h: Likewise. + * io.c: Likewise. + * match.c: Likewise. + * match.h: Likewise. + * module.c: Likewise. + * openmp.c: Likewise. + * parse.c: Likewise. + * parse.h: Likewise. + * primary.c: Likewise. + * resolve.c: Likewise. + * scanner.c: Likewise. + * simplify.c: Likewise. + * symbol.c: Likewise. + * trans-intrinsic.c: Likewise. + * trans-openmp.c: Likewise. + * trans-stmt.c: Likewise. + * trans-types.c: Likewise. + +2013-04-09 Tobias Burnus + + * gfortran.texi (KIND Type Parameters, + Internal representation of LOGICAL variables): Add crossrefs. + (Intrinsic Types): Mention issues with _Bool interop. + (Naming and argument-passing conventions): New section. + +2013-04-08 Thomas Koenig + + PR fortran/56782 + * frontend-passes.c (callback_reduction): Don't do + any simplification if there is only a single element + which has an iterator. + +2013-04-07 Tobias Burnus + + PR fortran/56849 + * iresolve.c (gfc_resolve_reshape): Set shape also + with order=. + +2013-04-04 Janus Weil + + PR fortran/40881 + * match.c (gfc_match_return): Remove standard notification. + * primary.c (gfc_match_actual_arglist): Add standard notification. + +2013-04-04 Tobias Burnus + + PR fortran/50269 + * gcc/fortran/check.c (is_c_interoperable, + gfc_check_c_loc): Correct c_loc array checking + for Fortran 2003 and Fortran 2008. + +2013-04-03 Janus Weil + + PR fortran/56284 + PR fortran/40881 + * decl.c (gfc_match_formal_arglist): Warn about alternate-return + arguments. + * interface.c (check_dummy_characteristics): Return if symbols are NULL. + +2013-04-01 Janus Weil + + PR fortran/56500 + * symbol.c (gfc_set_default_type): Build class container for + IMPLICIT CLASS. + +2013-03-31 Tobias Burnus + + * class.c (finalization_scalarizer, finalizer_insert_packed_call, + generate_finalization_wrapper): Avoid segfault with absent SIZE= + argument to TRANSFER and use correct result kind for SIZE. + * intrinsic.c (gfc_isym_id_by_intmod): Also handle ids of + nonmodules. + * trans.c (gfc_build_final_call): Handle coarrays. + +2013-03-30 Thomas Koenig + + * trans-expr.c (build_memcmp_call): New function. + (gfc_build_compare_string): If the strings + compared have constant and equal lengths and + the strings are kind=1, or, for kind=4 strings, + the test is for (in)equality, use memcmp(). + +2013-03-29 Tobias Burnus + + PR fortran/35203 + * trans-decl.c (create_function_arglist): Pass hidden argument + for passed-by-value optional+value dummies. + * trans-expr.c (gfc_conv_expr_present, + gfc_conv_procedure_call): Handle those. + +2013-03-28 Thomas Koenig + + PR fortran/45159 + * gfortran.h (gfc_dep_difference): Add prototype. + * dependency.c (discard_nops): New function. + (gfc_dep_difference): New function. + (check_section_vs_section): Use gfc_dep_difference + to calculate the difference of starting indices. + * trans-expr.c (gfc_conv_substring): Use + gfc_dep_difference to calculate the length of + substrings where possible. + +2013-03-28 Thomas Koenig + + PR fortran/55806 + * frontend-passes.c (optimize_code): Keep track of + current code to make code insertion possible. + (combine_array_constructor): New function. + (optimize_op): Call it. + +2013-03-27 Tobias Burnus + + PR fortran/56650 + PR fortran/36437 + * check.c (gfc_check_sizeof, gfc_check_c_sizeof, + gfc_check_storage_size): Update checks. + * intrinsic.texi (SIZEOF): Correct class. + * intrinsic.h (gfc_simplify_sizeof, + gfc_simplify_storage_size): New prototypes. + * intrinsic.c (add_functions): Use them. + * simplify.c (gfc_simplify_sizeof, + gfc_simplify_storage_size): New functions. + +2013-03-27 Janne Blomqvist + + PR fortran/25708 + * module.c (module_locus): Use long for position. + (module_content): New variable. + (module_pos): Likewise. + (prev_character): Remove. + (bad_module): Free data instead of closing mod file. + (set_module_locus): Use module_pos. + (get_module_locus): Likewise. + (module_char): use buffer rather than stdio file. + (module_unget_char): Likewise. + (read_module_to_tmpbuf): New function. + (gfc_use_module): Call read_module_to_tmpbuf. + +2013-03-26 Tobias Burnus + + PR fortran/56649 + * simplify.c (gfc_simplify_merge): Simplify more. + +2013-03-25 Tobias Burnus + + PR fortran/38536 + PR fortran/38813 + PR fortran/38894 + PR fortran/39288 + PR fortran/40963 + PR fortran/45824 + PR fortran/47023 + PR fortran/47034 + PR fortran/49023 + PR fortran/50269 + PR fortran/50612 + PR fortran/52426 + PR fortran/54263 + PR fortran/55343 + PR fortran/55444 + PR fortran/55574 + PR fortran/56079 + PR fortran/56378 + * check.c (gfc_var_strlen): Properly handle 0-sized string. + (gfc_check_c_sizeof): Use is_c_interoperable, add checks. + (is_c_interoperable, gfc_check_c_associated, gfc_check_c_f_pointer, + gfc_check_c_f_procpointer, gfc_check_c_funloc, gfc_check_c_loc): New + functions. + * expr.c (check_inquiry): Add c_sizeof, compiler_version and + compiler_options. + (gfc_check_pointer_assign): Refine function result check. + gfortran.h (gfc_isym_id): Add GFC_ISYM_C_ASSOCIATED, + GFC_ISYM_C_F_POINTER, GFC_ISYM_C_F_PROCPOINTER, GFC_ISYM_C_FUNLOC, + GFC_ISYM_C_LOC. + (iso_fortran_env_symbol, iso_c_binding_symbol): Handle + NAMED_SUBROUTINE. + (generate_isocbinding_symbol): Update prototype. + (get_iso_c_sym): Remove. + (gfc_isym_id_by_intmod, gfc_isym_id_by_intmod_sym): New prototypes. + * intrinsic.c (gfc_intrinsic_subroutine_by_id): New function. + (gfc_intrinsic_sub_interface): Use it. + (add_functions, add_subroutines): Add missing C-binding intrinsics. + (gfc_intrinsic_func_interface): Add special case for c_loc. + gfc_isym_id_by_intmod, gfc_isym_id_by_intmod_sym): New functions. + (gfc_intrinsic_func_interface, gfc_intrinsic_sub_interface): Use them. + * intrinsic.h (gfc_check_c_associated, gfc_check_c_f_pointer, + gfc_check_c_f_procpointer, gfc_check_c_funloc, gfc_check_c_loc, + gfc_resolve_c_loc, gfc_resolve_c_funloc): New prototypes. + * iresolve.c (gfc_resolve_c_loc, gfc_resolve_c_funloc): New + functions. + * iso-c-binding.def: Split PROCEDURE into NAMED_SUBROUTINE and + NAMED_FUNCTION. + * iso-fortran-env.def: Add NAMED_SUBROUTINE for completeness. + * module.c (create_intrinsic_function): Support subroutines and + derived-type results. + (use_iso_fortran_env_module): Update calls. + (import_iso_c_binding_module): Ditto; update calls to + generate_isocbinding_symbol. + * resolve.c (find_arglists): Skip for intrinsic symbols. + (gfc_resolve_intrinsic): Find intrinsic subs via id. + (is_scalar_expr_ptr, gfc_iso_c_func_interface, + set_name_and_label, gfc_iso_c_sub_interface): Remove. + (resolve_function, resolve_specific_s0): Remove calls to those. + (resolve_structure_cons): Fix handling. + * symbol.c (gen_special_c_interop_ptr): Update c_ptr/c_funptr + generation. + (gen_cptr_param, gen_fptr_param, gen_shape_param, + build_formal_args, get_iso_c_sym): Remove. + (std_for_isocbinding_symbol): Handle NAMED_SUBROUTINE. + (generate_isocbinding_symbol): Support hidden symbols and + using c_ptr/c_funptr symtrees for nullptr defs. + * target-memory.c (gfc_target_encode_expr): Fix handling + of c_ptr/c_funptr. + * trans-expr.c (conv_isocbinding_procedure): Remove. + (gfc_conv_procedure_call): Remove call to it. + (gfc_trans_subcomponent_assign, gfc_conv_expr): Update handling + of c_ptr/c_funptr. + * trans-intrinsic.c (conv_isocbinding_function, + conv_isocbinding_subroutine): New. + (gfc_conv_intrinsic_function, gfc_conv_intrinsic_subroutine): + Call them. + * trans-io.c (transfer_expr): Fix handling of c_ptr/c_funptr. + * trans-types.c (gfc_typenode_for_spec, + gfc_get_derived_type): Ditto. + (gfc_init_c_interop_kinds): Handle NAMED_SUBROUTINE. + +2013-03-18 Tobias Burnus + + * gfortran.h (gfc_option_t): Remove flag_whole_file. + * invoke.texi (-fno-whole-file): Remove. + * lang.opt (fwhole-file): Change to Ignore. + * options.c (gfc_init_options, gfc_post_options, + gfc_handle_option): Remove !flag_whole_file handling + * parse.c (resolve_all_program_units, translate_all_program_units, + gfc_parse_file): Ditto. + * resolve.c (resolve_global_procedure): Ditto. + * trans-decl.c (gfc_get_symbol_decl, gfc_get_extern_function_decl, + gfc_create_module_variable): Ditto. + * trans-types.c (gfc_get_derived_type): Ditto. + +2013-03-15 Tobias Burnus + + PR fortran/56615 + * trans-intrinsic.c (gfc_conv_intrinsic_transfer): Pack arrays + if they are not simply contiguous. + +2013-03-11 Tobias Burnus + + * gfortran.texi (STRUCTURE and RECORD): State more clearly how + to convert them into derived types. + +2013-03-10 Paul Thomas + + PR fortran/56575 + * expr.c (gfc_default_initializer): Check that a class declared + type has any components. + * resolve.c (resolve_fl_derived0): On failing the test for C437 + set the type to BT_UNKNOWN to prevent repeat error messages. + +2013-03-03 Mikael Morin + + PR fortran/56477 + * expr.c (gfc_check_pointer_assign): Avoid NULL pointer dereference. + +2013-03-03 Mikael Morin + + PR fortran/54730 + * array.c (gfc_match_array_constructor): Set a checkpoint before + matching a typespec. Drop it on success, restore it otherwise. + +2013-03-03 Mikael Morin + + PR fortran/54730 + * gfortran.h (struct gfc_undo_change_set): New field 'previous'. + (gfc_new_undo_checkpoint, gfc_drop_last_undo_checkpoint, + gfc_restore_last_undo_checkpoint): New prototypes. + * symbol.c (default_undo_chgset_var): Update initialization. + (single_undo_checkpoint_p, gfc_new_undo_checkpoint, + free_undo_change_set_data, pop_undo_change_set, + gfc_drop_last_undo_checkpoint, enforce_single_undo_checkpoint): + New functions. + (save_symbol_data): Handle multiple change sets. Make sure old_symbol + field's previous value is not overwritten. Clear gfc_new field. + (restore_old_symbol): Restore previous old_symbol field. + (gfc_restore_last_undo_checkpoint): New function, using body renamed + from gfc_undo_symbols. Restore the previous change set as current one. + (gfc_undo_symbols): New body. + (gfc_commit_symbols, gfc_commit_symbol, gfc_enforce_clean_symbol_state): + Call enforce_single_undo_checkpoint. + (gfc_symbol_done_2): Ditto. Free change set data. + +2013-03-03 Mikael Morin + + * symbol.c (restore_old_symbol): Fix thinko. + +2013-03-03 Mikael Morin + + * symbol.c (gfc_undo_symbols): Move code... + (restore_old_symbol): ... here as a new function. + +2013-03-03 Mikael Morin + + * Make-lang.in (F95_PARSER_OBJS): Add dependency to vec.h. + * gfortran.h: Include vec.h. + (gfc_undo_change_set): New struct. + * symbol.c (tentative_tbp): Remove struct. + (changed_syms, tentative_tbp_list): Remove variables. + (default_undo_chgset_var, latest_undo_chgset): New variables. + (save_symbol_data, gfc_get_sym_tree, gfc_undo_symbols, + gfc_commit_symbols, gfc_commit_symbol, + gfc_enforce_clean_symbol_state, gfc_get_typebound_proc): + Use latest_undo_chgset instead of changed_syms and tentative_tbp_list. + +2013-03-01 Tobias Burnus + + PR fortran/56491 + * iresolve.c (resolve_bound): Use gfc_get_string instead of xstrdup. + * symbol.c (free_components): Free proc-pointer components. + +2013-03-01 Tobias Burnus + + * trans-decl.c (gfc_trans_deferred_vars): Free expr after use. + * trans-io.c (build_dt): Ditto. + +2013-02-24 Joseph Myers + + * resolve.c (generate_component_assignments): Don't use UTF-8 + ligature in diagnostic. + +2013-02-21 Janus Weil + + PR fortran/56385 + * trans-array.c (structure_alloc_comps): Handle procedure-pointer + components with allocatable result. + +2013-02-21 Tobias Burnus + + PR fortran/56416 + * gfortran.texi (Part II: Language Reference, Extensions, + Non-Fortran Main Program): Sort @menu to match actual section order. + * intrinsic.texi (Intrinsic Procedures): Ditto. + (C_F_POINTER, PRECISION): Move to the alphabetically correct place. + +2013-02-15 Tobias Burnus + Mikael Morin + + PR fortran/56318 + * simplify.c (gfc_simplify_matmul): Fix result shape + and matmul result. + +2013-02-15 Tobias Burnus + + PR fortran/53818 + * resolve.c (apply_default_init_local): Don't create an + initializer for a result variable. + +2013-02-14 Thomas Koenig + + PR fortran/56224 + * gfortran.h (gfc_add_include_path): Add boolean argument + for warn. + * scanner.c (gfc_add_include_path): Pass along warn argument + to add_path_to_list. + * options.c (gfc_post_options): Add true warn argument to + gfc_add_include_path. + (gfc_handle_module_path_options): Likewise. + (gfc_handle_option): Also gfc_add_include_path for intrinsic + modules, without warning. + +2013-02-14 Paul Thomas + Tobias Burnus + + PR testsuite/56138 + * trans-decl.c (gfc_get_symbol_decl): Fix deferred-length + results for functions without extra result variable. + + Revert: + 2013-01-30 Tobias Burnus + + PR fortran/56138 + * trans-decl.c (gfc_trans_deferred_vars): Fix deferred-length + results for functions without extra result variable. + +2013-02-12 Janus Weil + + PR fortran/46952 + * resolve.c (resolve_call): Do not check deferred procedures for + recursiveness. + +2013-02-09 Paul Thomas + + PR fortran/55362 + * check.c (array_check): It is an error if a procedure is + passed. + +2013-02-08 Mikael Morin + + PR fortran/54107 + * trans-types.c (gfc_get_function_type): Change a NULL backend_decl + to error_mark_node on entry. Detect recursive types. Build a variadic + procedure type if the type is recursive. Restore the initial + backend_decl. + +2013-02-07 Tobias Burnus + + PR fortran/54339 + * gfortran.texi (Standards): Mention TS29113. + (Varying Length Character): Mention deferred-length + strings. + (Fortran 2003 Status): Add unlimited polymorphic. + (TS 29113 Status): Add TYPE(*) and DIMENSION(..). + (C Interop): Update the section about TS29113. + +2013-02-06 Paul Thomas + + PR fortran/55789 + * trans-array.c (trans_array_constructor): Remove condition + 'dynamic' = true if the loop ubound is a VAR_DECL. + +2013-02-04 Paul Thomas + + PR fortran/56008 + PR fortran/47517 + * trans-array.c (gfc_alloc_allocatable_for_assignment): Save + the lhs descriptor before it is modified for reallocation. Use + it to deallocate allocatable components in the reallocation + block. Nullify allocatable components for newly (re)allocated + arrays. + +2013-02-04 Mikael Morin + + PR fortran/54195 + * resolve.c (resolve_typebound_procedures): Recurse through + resolve_symbol. + +2013-02-04 Mikael Morin + + PR fortran/54107 + PR fortran/54195 + * gfortran.h (struct gfc_symbol): New field 'resolved'. + * resolve.c (resolve_fl_var_and_proc): Don't skip result symbols. + (resolve_symbol): Skip duplicate calls. Don't check the current + namespace. + +2013-02-02 Thomas Koenig + + PR fortran/50627 + PR fortran/56054 + * decl.c (gfc_match_end): Remove half-ready namespace + from parent if the end of a block is missing. + * parse.c (parse_module): Do not put namespace into + gsymbol on error. + +2013-01-30 Tobias Burnus + + PR fortran/56138 + * trans-decl.c (gfc_trans_deferred_vars): Fix deferred-length + results for functions without extra result variable. + +2013-01-29 Janus Weil + Mikael Morin + + PR fortran/54107 + * gfortran.h (gfc_component): Delete members 'formal' and 'formal_ns'. + (gfc_copy_formal_args,gfc_copy_formal_args_ppc,gfc_expr_replace_symbols, + gfc_expr_replace_comp): Delete. + (gfc_sym_get_dummy_args): New prototype. + * dependency.c (gfc_check_fncall_dependency): Use + 'gfc_sym_get_dummy_args'. + * expr.c (gfc_is_constant_expr): Ditto. + (replace_symbol,gfc_expr_replace_symbols,replace_comp, + gfc_expr_replace_comp): Deleted. + * frontend-passes.c (doloop_code,do_function): Use + 'gfc_sym_get_dummy_args'. + * interface.c (gfc_check_operator_interface,gfc_compare_interfaces, + gfc_procedure_use,gfc_ppc_use,gfc_arglist_matches_symbol, + gfc_check_typebound_override): Ditto. + * module.c (MOD_VERSION): Bump module version. + (mio_component): Do not read/write 'formal' and 'formal_ns'. + * resolve.c (resolve_procedure_interface,resolve_fl_derived0): Do not + copy formal args, but just keep a pointer to the interface. + (resolve_function,resolve_call,resolve_typebound_generic_call, + resolve_ppc_call,resolve_expr_ppc,generate_component_assignments, + resolve_fl_procedure,gfc_resolve_finalizers,check_generic_tbp_ambiguity, + resolve_typebound_procedure,check_uop_procedure): Use + 'gfc_sym_get_dummy_args'. + * symbol.c (free_components): Do not free 'formal' and 'formal_ns'. + (gfc_copy_formal_args,gfc_copy_formal_args_ppc): Deleted. + (gfc_sym_get_dummy_args): New function. + * trans-array.c (get_array_charlen,gfc_walk_elemental_function_args): + Use 'gfc_sym_get_dummy_args'. + * trans-decl.c (build_function_decl,create_function_arglist, + build_entry_thunks,init_intent_out_dt,gfc_trans_deferred_vars, + add_argument_checking): Ditto. + * trans-expr.c (gfc_map_fcn_formal_to_actual,gfc_conv_procedure_call, + gfc_conv_statement_function): Ditto. + * trans-stmt.c (gfc_conv_elemental_dependencies): Ditto. + * trans-types.c (create_fn_spec,gfc_get_function_type): Ditto. + +2013-01-28 Tobias Burnus + Mikael Morin + + PR fortran/53537 + * symbol.c (gfc_find_sym_tree): Don't look for the symbol outside an + interface block. + (gfc_get_ha_symtree): Let gfc_find_sym_tree lookup the parent namespace. + * decl.c (gfc_match_data_decl): Ditto. + (variable_decl): Remove undeclared type error. + (gfc_match_import): Use renamed instead of original name. + +2013-01-27 Paul Thomas + + PR fortran/55984 + PR fortran/56047 + * gfortran.h : Add associate_var to symbol_attr. + * resolve.c (resolve_assoc_var): Set associate_var attribute. + If the target class_ok is set, set it for the associate + variable. + * check.c (allocatable_check): Associate variables should not + have the allocatable attribute even if their symbols do. + * class.c (gfc_build_class_symbol): Symbols with associate_var + set will always have a good class container. + +2013-01-23 Janus Weil + + PR fortran/56081 + * resolve.c (resolve_select): Add argument 'select_type', reject + non-scalar expressions. + (resolve_select_type,resolve_code): Pass new argument to + 'resolve_select'. + +2013-01-23 Jakub Jelinek + + PR fortran/56052 + * trans-decl.c (gfc_get_symbol_decl): Set DECL_ARTIFICIAL + and DECL_IGNORED_P on select_type_temporary and don't set + DECL_BY_REFERENCE. + +2013-01-21 Thomas Koenig + + PR fortran/55919 + * scanner.c (add_path_to_list): Copy path to temporary and strip + trailing directory separators before calling stat(). + +2013-01-17 Richard Biener + + * trans-stmt.c (gfc_trans_do): Conditionally compute countm1 + dependent on sign of step, avoids repeated evaluation of + step sign test. Avoid undefined overflow issues by using unsigned + arithmetic. + +2013-01-16 Janus Weil + + PR fortran/55983 + * class.c (find_typebound_proc_uop): Check for f2k_derived instead of + asserting it. + +2013-01-16 Jakub Jelinek + Tobias Burnus + + PR driver/55884 + * lang.opt (fintrinsic-modules-path): Don't accept Joined. + (fintrinsic-modules-path=): New. + * options.c (gfc_handle_option, gfc_get_option_string, + gfc_get_option_string): Handle the latter. + +2013-01-16 Jakub Jelinek + + PR fortran/52865 + * trans-stmt.c (gfc_trans_do): Put countm1-- before conditional + and use value of countm1 before the decrement in the condition. + +2013-01-15 Paul Thomas + + PR fortran/54286 + * expr.c (gfc_check_pointer_assign): Check for presence of + 's2' before using it. + +2013-01-14 Thomas Koenig + + PR fortran/55806 + * frontend-passes.c (optimize_reduction): New function, + including prototype. + (callback_reduction): Likewise. + (gfc_run_passes): Also run optimize_reduction. + (copy_walk_reduction_arg): New function. + (dummy_code_callback): New function. + +2013-01-13 Jakub Jelinek + + PR fortran/55935 + * trans-expr.c (gfc_conv_structure): Call + unshare_expr_without_location on the ctor elements. + +2013-01-13 Paul Thomas + + PR fortran/54286 + * expr.c (gfc_check_pointer_assign): Ensure that both lvalue + and rvalue interfaces are presented to gfc_compare_interfaces. + Simplify references to interface names by using the symbols + themselves. Call gfc_compare_interfaces with s1 and s2 inter- + changed to overcome the asymmetry of this function. Do not + repeat the check for the presence of s1 and s2. + +2013-01-12 Janus Weil + + PR fortran/55072 + * trans-array.c (gfc_conv_array_parameter): No packing was done for + full arrays of derived type. + +2013-01-08 Paul Thomas + + PR fortran/55868 + * class.c (get_unique_type_string): Change $tar to STAR and + replace sprintf by strcpy where there is no formatting. + * decl.c (gfc_match_decl_type_spec): Change $tar to STAR. + +2013-01-09 Mikael Morin + + PR fortran/47203 + * module.c (check_for_ambiguous): Get the current program unit using + gfc_current_ns. + +2013-01-09 Tobias Burnus + + PR fortran/55758 + * resolve.c (resolve_symbol): Reject non-C_Bool logicals + in BIND(C) procedures with -std=f*. + +2013-01-08 Paul Thomas + + PR fortran/55618 + * trans-expr.c (gfc_conv_procedure_call): Dereference scalar + character function arguments to elemental procedures in + scalarization loops. + +2013-01-07 Tobias Burnus + + PR fortran/55763 + * gfortran.h (gfc_check_assign_symbol): Update prototype. + * decl.c (add_init_expr_to_sym, do_parm): Update call. + * expr.c (gfc_check_assign_symbol): Handle BT_CLASS and + improve error location; support components. + (gfc_check_pointer_assign): Handle component assignments. + * resolve.c (resolve_fl_derived0): Call gfc_check_assign_symbol. + (resolve_values): Update call. + (resolve_structure_cons): Avoid double diagnostic. + +2013-01-07 Tobias Burnus + Thomas Koenig + + PR fortran/55852 + * expr.c (gfc_build_intrinsic_call): Avoid clashes + with user's procedures. + * gfortran.h (gfc_build_intrinsic_call): Update prototype. + * simplify.c (gfc_simplify_size): Update call. + * class.c (finalization_scalarizer, finalization_get_offset, + finalizer_insert_packed_call, generate_finalization_wrapper): + Clean up by using gfc_build_intrinsic_call. + +2013-01-07 Tobias Burnus + + PR fortran/55763 + * resolve.c (resolve_select_type): Reject intrinsic types for + a non-unlimited-polymorphic selector. + +2013-01-06 Paul Thomas + + PR fortran/53876 + PR fortran/54990 + PR fortran/54992 + * trans-array.c (build_array_ref): Check the TYPE_CANONICAL + to see if it is GFC_CLASS_TYPE_P. + * trans-expr.c (gfc_get_vptr_from_expr): The same. + (gfc_conv_class_to_class): If the types are not the same, + cast parmese->expr to the type of ctree. + * trans-types.c (gfc_get_derived_type): GFC_CLASS_TYPE_P of + CLASS components must be set. + +2013-01-06 Mikael Morin + + PR fortran/42769 + PR fortran/45836 + PR fortran/45900 + * module.c (read_module): Don't reuse local symtree if the associated + symbol isn't exactly the one wanted. Don't reuse local symtree if it is + ambiguous. + * resolve.c (resolve_call): Use symtree's name instead of symbol's to + lookup the symtree. + +2013-01-05 Steven G. Kargl + Mikael Morin + + PR fortran/55827 + * class.c (gfc_fix_class_refs): Adapt ts initialization for the case + e->symtree == NULL. + * trans-expr.c (gfc_conv_function_expr): Init sym earlier. Use it. + +2013-01-05 Tobias Burnus + + * class.c (finalize_component): Used passed offset expr. + (finalization_get_offset): New static function. + (finalizer_insert_packed_call, generate_finalization_wrapper): Use it + to handle noncontiguous arrays. + +2013-01-04 Tobias Burnus + + * trans.c (gfc_build_final_call): New function. + * trans.h (gfc_build_final_call, gfc_conv_scalar_to_descriptor): + New function prototypes. + * trans-expr.c (gfc_conv_scalar_to_descriptor): Renamed from + conv_scalar_to_descriptor, removed static attribute. + (gfc_conv_procedure_call): Honor renaming. + +2013-01-04 Tobias Burnus + + * intrinsic.c (add_functions): New internal intrinsic + function GFC_PREFIX ("stride"). + * gfortran.h (gfc_isym_id): Add GFC_ISYM_STRIDE. + * intrinsic.h (gfc_resolve_stride): New prototypes. + * iresolve.c (gfc_resolve_stride): New function. + * trans-intrinsic.c (conv_intrinsic_stride): New static + function. + (gfc_conv_intrinsic_function): Use it. + +2013-01-04 Tobias Burnus + + * class.c (gfc_find_intrinsic_vtab): Add _final + component. + * decl.c (gfc_match_null): Remove superfluous + variadic argument to gfc_match. + +2013-01-04 Paul Thomas + + PR fortran/55172 + * match.c (copy_ts_from_selector_to_associate): Remove call to + gfc_resolve_expr and replace it with explicit setting of the + array reference type. + * resolve.c (resolve_select_type): It is an error if the + selector is coindexed. + +2013-01-04 Tobias Burnus + + PR fortran/55763 + * decl.c (gfc_match_null): Parse and reject MOLD. + +2013-01-04 Tobias Burnus + + PR fortran/55854 + PR fortran/55763 + * class.c (gfc_class_null_initializer): Fix finding the vtab. + (gfc_find_intrinsic_vtab): Use BT_VOID for some components. + +2013-01-03 Janus Weil + + PR fortran/55855 + * expr.c (gfc_check_assign): Use 'gfc_expr_attr' to evaluate attributes + of rvalue. Correct hyphenation in error message. + +2013-01-03 Jakub Jelinek + + * gfortranspec.c (lang_specific_driver): Update copyright notice + dates. + +Copyright (C) 2013 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. diff --git a/gcc/fortran/resolve.c b/gcc/fortran/resolve.c index 54cfdd6fd68..6151d73827e 100644 --- a/gcc/fortran/resolve.c +++ b/gcc/fortran/resolve.c @@ -11903,9 +11903,6 @@ resolve_typebound_procedures (gfc_symbol* derived) resolve_bindings_derived = derived; resolve_bindings_result = true; - /* Make sure the vtab has been generated. */ - gfc_find_derived_vtab (derived); - if (derived->f2k_derived->tb_sym_root) gfc_traverse_symtree (derived->f2k_derived->tb_sym_root, &resolve_typebound_procedure); diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 25079742c51..17ea414fc76 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2014-01-02 Janus Weil + + PR fortran/59654 + * gfortran.dg/dynamic_dispatch_12.f90: New. + 2014-01-01 Jakub Jelinek * lib/target-supports.exp (check_effective_target_avx512f): Make sure diff --git a/gcc/testsuite/gfortran.dg/dynamic_dispatch_12.f90 b/gcc/testsuite/gfortran.dg/dynamic_dispatch_12.f90 new file mode 100644 index 00000000000..d37e1f6a9b5 --- /dev/null +++ b/gcc/testsuite/gfortran.dg/dynamic_dispatch_12.f90 @@ -0,0 +1,74 @@ +! { dg-do run } +! +! PR 59654: [4.8/4.9 Regression] [OOP] Broken function table with complex OO use case +! +! Contributed by Thomas Clune + +module TestResult_mod + implicit none + + type TestResult + integer :: numRun = 0 + contains + procedure :: run + procedure, nopass :: getNumRun + end type + +contains + + subroutine run (this) + class (TestResult) :: this + this%numRun = this%numRun + 1 + end subroutine + + subroutine getNumRun() + end subroutine + +end module + + +module BaseTestRunner_mod + implicit none + + type :: BaseTestRunner + contains + procedure, nopass :: norun + end type + +contains + + function norun () result(result) + use TestResult_mod, only: TestResult + type (TestResult) :: result + end function + +end module + + +module TestRunner_mod + use BaseTestRunner_mod, only: BaseTestRunner + implicit none +end module + + +program main + use TestRunner_mod, only: BaseTestRunner + use TestResult_mod, only: TestResult + implicit none + + type (TestResult) :: result + + call runtest (result) + +contains + + subroutine runtest (result) + use TestResult_mod, only: TestResult + class (TestResult) :: result + call result%run() + if (result%numRun /= 1) call abort() + end subroutine + +end + +! { dg-final { cleanup-modules "TestResult_mod BaseTestRunner_mod TestRunner_mod" } }