re PR fortran/48858 (Incorrect error for same binding label on two generic interface...
[platform/upstream/gcc.git] / gcc / fortran / ChangeLog
index 9cdc603..08b4602 100644 (file)
@@ -1,3 +1,777 @@
+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.
+       * 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  <burnus@net-b.de>
+
+       PR fortran/56615
+       * trans-intrinsic.c (gfc_conv_intrinsic_transfer): Pack arrays
+       if they are not simply contiguous.
+
+2013-03-11  Tobias Burnus  <burnus@net-b.de>
+
+       * gfortran.texi (STRUCTURE and RECORD): State more clearly how
+       to convert them into derived types.
+
+2013-03-10  Paul Thomas  <pault@gcc.gnu.org>
+
+       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  <mikael@gcc.gnu.org>
+
+       PR fortran/56477
+       * expr.c (gfc_check_pointer_assign): Avoid NULL pointer dereference.
+
+2013-03-03  Mikael Morin  <mikael@gcc.gnu.org>
+
+       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  <mikael@gcc.gnu.org>
+
+       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  <mikael@gcc.gnu.org>
+
+       * symbol.c (restore_old_symbol): Fix thinko.
+
+2013-03-03  Mikael Morin  <mikael@gcc.gnu.org>
+
+       * symbol.c (gfc_undo_symbols): Move code...
+       (restore_old_symbol): ... here as a new function.
+
+2013-03-03  Mikael Morin  <mikael@gcc.gnu.org>
+
+       * 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  <burnus@net-b.de>
+
+       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  <burnus@net-b.de>
+
+       * trans-decl.c (gfc_trans_deferred_vars): Free expr after use.
+       * trans-io.c (build_dt): Ditto.
+
+2013-02-24  Joseph Myers  <joseph@codesourcery.com>
+
+       * resolve.c (generate_component_assignments): Don't use UTF-8
+       ligature in diagnostic.
+
+2013-02-21  Janus Weil  <janus@gcc.gnu.org>
+
+       PR fortran/56385
+       * trans-array.c (structure_alloc_comps): Handle procedure-pointer
+       components with allocatable result.
+
+2013-02-21  Tobias Burnus  <burnus@net-b.de>
+
+       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  <burnus@net-b.de>
+           Mikael Morin  <mikael@gcc.gnu.org>
+
+       PR fortran/56318
+       * simplify.c (gfc_simplify_matmul): Fix result shape
+       and matmul result.
+
+2013-02-15  Tobias Burnus  <burnus@net-b.de>
+
+       PR fortran/53818
+       * resolve.c (apply_default_init_local): Don't create an
+       initializer for a result variable.
+
+2013-02-14  Thomas Koenig  <tkoenig@gcc.gnu.org>
+
+       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  <pault@gcc.gnu.org>
+           Tobias Burnus  <burnus@net-b.de>
+
+       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  <burnus@net-b.de>
+
+       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  <janus@gcc.gnu.org>
+
+       PR fortran/46952
+       * resolve.c (resolve_call): Do not check deferred procedures for
+       recursiveness.
+
+2013-02-09  Paul Thomas  <pault@gcc.gnu.org>
+
+       PR fortran/55362
+       * check.c (array_check): It is an error if a procedure is
+       passed.
+
+2013-02-08  Mikael Morin  <mikael@gcc.gnu.org>
+
+       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  <burnus@net-b.de>
+
+       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  <pault@gcc.gnu.org>
+
+       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  <pault@gcc.gnu.org>
+
+       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  <mikael@gcc.gnu.org>
+
+       PR fortran/54195
+       * resolve.c (resolve_typebound_procedures): Recurse through
+       resolve_symbol.
+
+2013-02-04  Mikael Morin  <mikael@gcc.gnu.org>
+
+       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  <tkoenig@gcc.gnu.org>
+
+       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  <burnus@net-b.de>
+
+       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  <janus@gcc.gnu.org>
+           Mikael Morin  <mikael@gcc.gnu.org>
+
+       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  <burnus@net-b.de>
            Mikael Morin  <mikael@gcc.gnu.org>
 
        finalizer_insert_packed_call, generate_finalization_wrapper):
        Clean up by using gfc_build_intrinsic_call.
 
-2012-01-07  Tobias Burnus  <burnus@net-b.de>
+2013-01-07  Tobias Burnus  <burnus@net-b.de>
 
        PR fortran/55763
        * resolve.c (resolve_select_type): Reject intrinsic types for