re PR fortran/48858 (Incorrect error for same binding label on two generic interface...
[platform/upstream/gcc.git] / gcc / fortran / ChangeLog
index 00bbcd1..08b4602 100644 (file)
@@ -1,3 +1,504 @@
+2013-05-20  Tobias Burnus  <burnus@net-b.de>
+
+       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  <burnus@net-b.de>
+
+       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  <jason@redhat.com>
+
+       * Make-lang.in (f951$(exeext)): Use link mutex.
+
+2013-05-05  Tobias Burnus  <burnus@net-b.de>
+
+       * resolve.c (conformable_arrays): Avoid segfault
+       when ar.start[i] == NULL.
+
+2013-05-05  Tobias Burnus  <burnus@net-b.de>
+
+       PR fortran/57141
+       * decl.c (gfc_match_null): Permit use-associated
+       NULL intrinsic.
+
+2013-05-04  Tobias Burnus  <burnus@net-b.de>
+
+       * decl.c (gfc_verify_c_interop_param): Permit allocatable
+       and pointer with -std=f2008ts.
+
+2013-05-02  Tobias Burnus  <burnus@net-b.de>
+
+       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  <tkoenig@gcc.gnu.org>
+
+       * frontend-passes.c (optimize_power):  Fix typo
+       in comment.
+
+2013-04-30  Thomas Koenig  <tkoenig@gcc.gnu.org>
+
+       PR fortran/57071
+       * frontend-passes.c (optimize_power):  Simplify
+       1**k to 1.
+
+2013-04-28  Tobias Burnus  <burnus@net-b.de>
+
+       PR fortran/57114
+       * intrinsic.texi (RANK): Correct syntax description and
+       expected result.
+
+2013-04-28  Tobias Burnus  <burnus@net-b.de>
+
+       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  <tkoenig@gcc.gnu.org>
+
+       PR fortran/57071
+       * frontend-passes (optimize_power):  New function.
+       (optimize_op):  Use it.
+
+2013-04-25  Janne Blomqvist  <jb@gcc.gnu.org>
+
+       PR bootstrap/57028
+       * Make-lang.in (f951): Link in ZLIB.
+       (CFLAGS-fortran/module.o): Add zlib include directory.
+
+2013-04-22  Janus Weil  <janus@gcc.gnu.org>
+
+       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  <burnus@net-b.de>
+
+       PR fortran/56907
+       * trans-intrinsic.c (conv_isocbinding_function): Don't pack array
+       passed to C_LOC
+
+2013-04-19  Thomas Koenig  <tkoenig@gcc.gnu.org>
+           Mikael Morin  <mikael@gcc.gnu.org>
+
+       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  <burnus@net-b.de>
+
+       * 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  <burnus@net-b.de>
+
+       PR fortran/56994
+       * invoke.texi (NEAREST): S argument is not optional.
+
+2013-04-17  Janus Weil  <janus@gcc.gnu.org>
+
+       PR fortran/56814
+       * interface.c (check_result_characteristics): Get result from interface
+       if present.
+
+2013-04-17  Janne Blomqvist  <jb@gcc.gnu.org>
+
+       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  <burnus@net-b.de>
+
+       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  <janus@gcc.gnu.org>
+
+       PR fortran/56968
+       * expr.c (gfc_check_pointer_assign): Handle generic functions returning
+       procedure pointers.
+
+2013-04-16  Tobias Burnus  <burnus@net-b.de>
+
+       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  <burnus@net-b.de>
+
+       * intrinsic.texi (SYSTEM_CLOCK): Recommend kind=8.
+
+2013-04-15  Janne Blomqvist  <jb@gcc.gnu.org>
+
+       PR fortran/56919
+       * intrinsics.texi (SYSTEM_CLOCK): Update documentation.
+
+2013-04-15  Tobias Burnus  <burnus@net-b.de>
+
+       * 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  <mikael@gcc.gnu.org>
+
+       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  <janus@gcc.gnu.org>
+
+       PR fortran/55959
+       * expr.c (gfc_simplify_expr): Branch is not unreachable.
+
+2013-04-12  Janus Weil  <janus@gcc.gnu.org>
+
+       PR fortran/56266
+       * primary.c (gfc_match_varspec): Turn gcc_assert into MATCH_ERROR.
+
+2013-04-12  Tobias Burnus  <burnus@net-b.de>
+
+       PR fortran/56929
+       * trans-array.c (duplicate_allocatable): Fix handling
+       of scalar coarrays.
+
+2013-04-12  Janus Weil  <janus@gcc.gnu.org>
+
+       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  <burnus@net-b.de>
+
+       PR fortran/56845
+       * trans-decl.c (gfc_trans_deferred_vars): Restrict
+       static CLASS init to SAVE and -fno-automatic.
+
+2013-04-12  Tobias Burnus  <burnus@net-b.de>
+
+       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  <jb@gcc.gnu.org>
+
+       * 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  <burnus@net-b.de>
+
+       * 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  <tkoenig@gcc.gnu.org>
+
+       PR fortran/56782
+       * frontend-passes.c (callback_reduction):  Dont't do
+       any simplification if there is only a single element
+       which has an iterator.
+
+2013-04-07  Tobias Burnus  <burnus@net-b.de>
+
+       PR fortran/56849
+       * iresolve.c (gfc_resolve_reshape): Set shape also
+       with order=.
+
+2013-04-04  Janus Weil  <janus@gcc.gnu.org>
+
+       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  <burnus@net-b.de>
+
+       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  <janus@gcc.gnu.org>
+
+       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  <janus@gcc.gnu.org>
+
+       PR fortran/56500
+       * symbol.c (gfc_set_default_type): Build class container for
+       IMPLICIT CLASS.
+
+2013-03-31  Tobias Burnus  <burnus@net-b.de>
+
+       * class.c (finalization_scalarizer, finalizer_insert_packed_call,
+       generate_finalization_wrapper): Avoid segfault with absent SIZE=
+       argment 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  <tkoenig@gcc.gnu.org>
+
+       * 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  <burnus@net-b.de>
+
+       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  <tkoenig@gcc.gnu.org>
+
+       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  <tkoenig@gcc.gnu.org>
+
+       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  <burnus@net-b.de>
+
+       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  <jb@gcc.gnu.org>
+
+       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  <burnus@net-b.de>
+
+       PR fortran/56649
+       * simplify.c (gfc_simplify_merge): Simplify more.
+
+2013-03-25  Tobias Burnus  <burnus@net-b.de>
+
+       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  <burnus@net-b.de>
 
        * gfortran.h (gfc_option_t): Remove flag_whole_file.
        * trans-array.c (structure_alloc_comps): Handle procedure-pointer
        components with allocatable result.
 
-2012-02-21  Tobias Burnus  <burnus@net-b.de>
+2013-02-21  Tobias Burnus  <burnus@net-b.de>
 
        PR fortran/56416
        * gfortran.texi (Part II: Language Reference, Extensions,