OSDN Git Service

2010-03-12 Paul Thomas <pault@gcc.gnu.org>
authorpault <pault@138bc75d-0d04-0410-961f-82ee72b054a4>
Fri, 12 Mar 2010 22:00:52 +0000 (22:00 +0000)
committerMasaki Muranaka <monaka@monami-software.com>
Sun, 23 May 2010 05:12:13 +0000 (14:12 +0900)
PR fortran/43291
PR fortran/43326
* resolve.c (resolve_compcall): Add new boolean dummy argument
'class_members'. Only resolve expression at end if false.
Remove redundant, static variable 'class_object'.
(check_class_members): Add extra argument to call of
resolve_compcall.
(resolve_typebound_function): Renamed resolve_class_compcall.
Do all the detection of class references here. Correct calls to
resolve_compcall for extra argument.
(resolve_typebound_subroutine): resolve_class_typebound_call
renamed. Otherwise same as resolve_typebound_function.
(gfc_resolve_expr): Call resolve_typebound_function.
(resolve_code): Call resolve_typebound_subroutine.

2010-03-12  Paul Thomas  <pault@gcc.gnu.org>

PR fortran/43291
PR fortran/43326
* gfortran.dg/dynamic_dispatch_7.f03: New test.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@157411 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/fortran/ChangeLog
gcc/fortran/resolve.c
gcc/testsuite/ChangeLog
gcc/testsuite/gfortran.dg/dynamic_dispatch_7.f03

index a6d2925..9fd831d 100644 (file)
-2010-05-17  Janus Weil  <janus@gcc.gnu.org>
-
-       PR fortran/43990
-       * trans-expr.c (gfc_conv_structure): Remove unneeded and buggy code.
-       This is now handled via 'gfc_class_null_initializer'.
-
-2010-05-17  Janus Weil  <janus@gcc.gnu.org>
-
-       * class.c (gfc_add_component_ref,gfc_class_null_initializer,
-       gfc_build_class_symbol,add_proc_component,add_proc_comps, 
-       add_procs_to_declared_vtab1,copy_vtab_proc_comps,
-       add_procs_to_declared_vtab,add_generic_specifics, 
-       add_generics_to_declared_vtab,gfc_find_derived_vtab,
-       find_typebound_proc_uop,gfc_find_typebound_proc,
-       gfc_find_typebound_user_op,gfc_find_typebound_intrinsic_op, 
-       gfc_get_tbp_symtree): Moved here from other places.
-       * expr.c (gfc_add_component_ref,gfc_class_null_initializer): Move to
-       class.c.
-       * gfortran.h (gfc_build_class_symbol,gfc_find_derived_vtab,
-       gfc_find_typebound_proc,gfc_find_typebound_user_op,
-       gfc_find_typebound_intrinsic_op,gfc_get_tbp_symtree,
-       gfc_add_component_ref, gfc_class_null_initializer): Moved to class.c.
-       * Make-lang.in: Add class.o.
-       * symbol.c (gfc_build_class_symbol,add_proc_component,add_proc_comps,
-       add_procs_to_declared_vtab1,copy_vtab_proc_comps,
-       add_procs_to_declared_vtab,add_generic_specifics,
-       add_generics_to_declared_vtab,gfc_find_derived_vtab,
-       find_typebound_proc_uop,gfc_find_typebound_proc,
-       gfc_find_typebound_user_op,gfc_find_typebound_intrinsic_op,
-       gfc_get_tbp_symtree): Move to class.c.
-
-2010-05-17  Nathan Froyd  <froydnj@codesourcery.com>
-
-       * trans-types.c (gfc_init_types): Use build_function_type_list.
-       (gfc_get_ppc_type): Likewise.
-       * trans-decl.c (gfc_generate_constructors): Likewise.
-       * f95-lang.c (build_builtin_fntypes): Likewise.
-       (gfc_init_builtin_functions): Likewise.
-       (DEF_FUNCTION_TYPE_0): Likewise.
-       (DEF_FUNCTION_TYPE_1): Likewise.
-       (DEF_FUNCTION_TYPE_2): Likewise.
-       (DEF_FUNCTION_TYPE_3): Likewise.
-       (DEF_FUNCTION_TYPE_4): Likewise.
-       (DEF_FUNCTION_TYPE_5): Likewise.
-       (DEF_FUNCTION_TYPE_6): Likewise.
-       (DEF_FUNCTION_TYPE_7): Likewise.  Use ARG7.
-       (DEF_FUNCTION_TYPE_VAR_0): Use build_varags_function_type_list.
-2010-05-17  Nathan Froyd  <froydnj@codesourcery.com>
-
-       * trans-array.c (gfc_trans_array_constructor_value): Use
-       build_constructor instead of build_constructor_from_list.
-       (gfc_build_constant_array_constructor): Likewise.
-       * trans-decl.c (create_main_function): Likewise.
-       * trans-stmt.c (gfc_trans_character_select): Likewise.
-
-2010-05-17  Janus Weil  <janus@gcc.gnu.org>
-
-       PR fortran/44044
-       * resolve.c (resolve_fl_var_and_proc): Move error messages here from ...
-       (resolve_fl_variable_derived): ... this place.
-       (resolve_symbol): Make sure function symbols (and their result
-       variables) are not resolved twice.
-
-2010-05-16  Daniel Franke  <franke.daniel@gmail.com>
-
-        PR fortran/35779
-       * array.c (match_array_list): Revert change from 2010-05-13.
-
-2010-05-16  Richard Guenther  <rguenther@suse.de>
-
-       * trans-decl.c (module_htab_decls_hash): Revert last change.
-
-2010-05-16  Richard Guenther  <rguenther@suse.de>
-
-       * trans-decl.c (module_htab_decls_hash): Use IDENTIFIER_HASH_VALUE.
-
-2010-05-16  Manuel López-Ibáñez  <manu@gcc.gnu.org>
-
-       * options.c (set_Wall): Remove special logic for Wuninitialized
-       without -O.
-
-2010-05-15  Janus Weil  <janus@gcc.gnu.org>
-
-       PR fortran/44154
-       PR fortran/42647
-       * trans-decl.c (gfc_trans_deferred_vars): Modify ordering of
-       if branches.
-
-2010-05-15  Janus Weil  <janus@gcc.gnu.org>
-
-       PR fortran/43207
-       PR fortran/43969
-       * gfortran.h (gfc_class_null_initializer): New prototype.
-       * expr.c (gfc_class_null_initializer): New function to build a NULL
-       initializer for CLASS pointers.
-       * symbol.c (gfc_build_class_symbol): Modify internal naming of class
-       containers. Remove default NULL initialization of $data component.
-       * trans.c (gfc_allocate_array_with_status): Fix wording of an error 
-       message.
-       * trans-expr.c (gfc_conv_initializer,gfc_trans_subcomponent_assign):
-       Use new function 'gfc_class_null_initializer'.
-       * trans-intrinsic.c (gfc_conv_allocated): Handle allocatable scalar
-       class variables.
-
-2010-05-14  Steven G. Kargl  <kargl@gcc.gnu.org>
-
-       PR fortran/44135
-       * fortran/interface.c (get_sym_storage_size): Use signed instead of
-       unsigned mpz_get_?i routines.
-
-2010-05-14  Jakub Jelinek  <jakub@redhat.com>
-
-       * trans.c (trans_code): Set backend locus early.
-       * trans-decl.c (gfc_get_fake_result_decl): Use source location
-       of the function instead of current input_location.
-
-2010-05-13  Daniel Franke  <franke.daniel@gmail.com>
-
-        PR fortran/35779
-        * intrinsic.c (gfc_init_expr): Renamed to gfc_init_expr_flag.
-        Updated all usages.
-        * expr.c (init_flag): Removed; use gfc_init_expr_flag everywhere.
-        * array.c (match_array_list): Pass on gfc_init_expr_flag when matching
-        iterators.
-
-2010-05-13  Jakub Jelinek  <jakub@redhat.com>
-
-       PR fortran/44036
-       * openmp.c (resolve_omp_clauses): Allow procedure pointers in clause
-       variable lists.
-       * trans-openmp.c (gfc_omp_privatize_by_reference): Don't privatize
-       by reference dummy procedures or non-dummy procedure pointers.
-       (gfc_omp_predetermined_sharing): Return
-       OMP_CLAUSE_DEFAULT_FIRSTPRIVATE for dummy procedures.
-
-2010-05-11  Daniel Franke  <franke.daniel@gmail.com>
-
-        PR fortran/43711
-        * openmp.c (gfc_match_omp_taskwait): Report unexpected characters
-        after OMP statement.
-        (gfc_match_omp_critical): Likewise.
-        (gfc_match_omp_flush): Likewise.
-        (gfc_match_omp_workshare): Likewise.
-        (gfc_match_omp_master): Likewise.
-        (gfc_match_omp_ordered): Likewise.
-        (gfc_match_omp_atomic): Likewise.
-        (gfc_match_omp_barrier): Likewise.
-        (gfc_match_omp_end_nowait): Likewise.
-
-2010-05-11  Daniel Franke  <franke.daniel@gmail.com>
-
-       PR fortran/31820
-       * resolve.c (validate_case_label_expr): Removed FIXME.
-       (resolve_select): Raise default warning on case labels out of range
-       of the case expression.
-
-2010-05-10  Daniel Franke  <franke.daniel@gmail.com>
-
-       PR fortran/27866
-       PR fortran/35003
-       PR fortran/42809
-       * intrinsic.c (gfc_convert_type_warn): Be more discriminative
-       about conversion warnings.
-
-2010-05-10  Janus Weil  <janus@gcc.gnu.org>
-
-       PR fortran/44044
-       * match.c (gfc_match_select_type): Move error message to
-       resolve_select_type.
-       * resolve.c (resolve_select_type): Error message moved here from
-       gfc_match_select_type. Correctly set type of temporary.
-
-2010-05-10  Richard Guenther  <rguenther@suse.de>
-
-       * trans-decl.c (gfc_build_library_function_decl): Split out
-       worker to ...
-       (build_library_function_decl_1): ... this new function.
-       Set a fnspec attribute if a specification was provided.
-       (gfc_build_library_function_decl_with_spec): New function.
-       (gfc_build_intrinsic_function_decls): Annotate internal_pack
-       and internal_unpack.
-
-2010-05-07  Daniel Franke  <franke.daniel@gmail.com>
-
-       PR fortran/40728
-       * intrinc.c (gfc_is_intrinsic): Do not prematurely mark symbol
-        as external
-
-2010-05-07  Jason Merrill  <jason@redhat.com>
-
-       * trans-expr.c (gfc_conv_procedure_call): Rename nullptr to null_ptr
-       to avoid -Wc++-compat warning.
-
-2010-05-06  Manuel López-Ibáñez  <manu@gcc.gnu.org>
-
-       PR 40989
-       * options.c (gfc_handle_option): Add argument kind.
-       * gfortran.h (gfc_handle_option): Update declaration.
-
-2010-05-06  Tobias Burnus  <burnus@net-b.de>
-
-       PR fortran/43985
-       * trans-types.c (gfc_sym_type): Mark Cray pointees as
-       GFC_POINTER_TYPE_P.
-
-2010-05-05  Daniel Franke  <franke.daniel@gmail.com>
-
-       PR fortran/32331
-       * resolve.c (traverse_data_list): Rephrase error message for
-       non-constant bounds in data-implied-do.
-
-2010-05-05  Daniel Franke  <franke.daniel@gmail.com>
-
-       PR fortran/24978
-       * gfortran.h: Removed repeat count from constructor, removed
-       all usages.
-       * data.h (gfc_assign_data_value_range): Changed return value from
-       void to gfc_try.
-       * data.c (gfc_assign_data_value): Add location to constructor element.
-       (gfc_assign_data_value_range): Call gfc_assign_data_value()
-       for each element in range. Return early if an error was generated.
-       * resolve.c (check_data_variable): Stop early if range assignment
-       generated an error.
-
-2010-05-05  Janus Weil  <janus@gcc.gnu.org>
-
-       PR fortran/43696
-       * resolve.c (resolve_fl_derived): Some fixes for class variables.
-       * symbol.c (gfc_build_class_symbol): Add separate class container for
-       class pointers.
-
-2010-05-03  Steven G. Kargl  <kargl@gcc.gnu.org>
-
-       PR fortran/43592
-       * fortran/parse.c (parse_interface): Do not dereference a NULL pointer.
-
-2010-05-02  Tobias Burnus  <burnus@net-b.de>
-
-       PR fortran/18918
-       * intrinsic.c (add_functions): Fix GFC_STD and add gfc_resolve_ calls
-       for lcobound, ucobound, image_index and this_image.
-       * intrinsic.h (gfc_resolve_lcobound, gfc_resolve_this_image,
-       gfc_resolve_image_index, gfc_resolve_ucobound): New prototypes.
-       * iresolve.c (gfc_resolve_lcobound, gfc_resolve_this_image,
-       gfc_resolve_image_index, gfc_resolve_ucobound, resolve_bound): New
-       functions.
-       (gfc_resolve_lbound, gfc_resolve_ubound): Use resolve_bound.
-
-2010-04-30  Tobias Burnus  <burnus@net-b.de>
-
-       PR fortran/18918
-       PR fortran/43931
-       *  trans-types.c (gfc_get_array_descriptor_base): Fix index
-       calculation for array descriptor types.
-
-2010-04-29  Janus Weil  <janus@gcc.gnu.org>
-
-       PR fortran/43896
-       * symbol.c (add_proc_component,copy_vtab_proc_comps): Remove
-       initializers for PPC members of the vtabs.
-
-2010-04-29  Janus Weil  <janus@gcc.gnu.org>
-
-       PR fortran/42274
-       * symbol.c (add_proc_component,add_proc_comps): Correctly set the 'ppc'
-       attribute for all PPC members of the vtypes.
-       (copy_vtab_proc_comps): Copy the correct interface.
-       * trans.h (gfc_trans_assign_vtab_procs): Modified prototype.
-       * trans-expr.c (gfc_trans_assign_vtab_procs): Pass the derived type as
-       a dummy argument and make sure all PPC members of the vtab are
-       initialized correctly.
-       (gfc_conv_derived_to_class,gfc_trans_class_assign): Additional argument
-       in call to gfc_trans_assign_vtab_procs.
-       * trans-stmt.c (gfc_trans_allocate): Ditto.
-
-2010-04-29  Paul Thomas  <pault@gcc.gnu.org>
-
-       PR fortran/43326
-       * resolve.c (resolve_typebound_function): Renamed
-       resolve_class_compcall.Do all the detection of class references
-       here.
-       (resolve_typebound_subroutine): resolve_class_typebound_call
-       renamed. Otherwise same as resolve_typebound_function.
-       (gfc_resolve_expr): Call resolve_typebound_function.
-       (resolve_code): Call resolve_typebound_subroutine.
-
-2010-04-29  Janus Weil  <janus@gcc.gnu.org>
-
-       PR fortran/43492
-       * resolve.c (resolve_typebound_generic_call): For CLASS methods
-       pass back the specific symtree name, rather than the target
-       name.
-
-2010-04-29  Paul Thomas  <pault@gcc.gnu.org>
-
-       PR fortran/42353
-       * resolve.c (resolve_structure_cons): Make the initializer of
-       the vtab component 'extends' the same type as the component.
-
-2010-04-29  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
-
-       PR fortran/42680
-       * interface.c (check_interface1): Pass symbol name rather than NULL to
-       gfc_compare_interfaces.(gfc_compare_interfaces): Add assert to
-       trap MULL. (gfc_compare_derived_types): Revert previous change
-       incorporated incorrectly during merge from trunk, r155778.
-       * resolve.c (check_generic_tbp_ambiguity): Pass symbol name rather
-       than NULL to gfc_compare_interfaces.
-       * symbol.c (add_generic_specifics): Likewise.
-
-2010-02-29  Janus Weil  <janus@gcc.gnu.org>
-
-       PR fortran/42353
-       * interface.c (gfc_compare_derived_types): Add condition for vtype.
-       * symbol.c (gfc_find_derived_vtab): Sey access to private.
-       (gfc_find_derived_vtab): Likewise.
-       * module.c (ab_attribute): Add enumerator AB_VTAB.
-       (mio_symbol_attribute): Use new attribute, AB_VTAB.
-       (check_for_ambiguous): Likewise.
-
-2010-04-29  Paul Thomas  <pault@gcc.gnu.org>
-           Janus Weil  <janus@gcc.gnu.org>
-
-       PR fortran/41829
-       * trans-expr.c (select_class_proc): Remove function.
-       (conv_function_val): Delete reference to previous.
-       (gfc_conv_derived_to_class): Add second argument to the call to
-       gfc_find_derived_vtab.
-       (gfc_conv_structure): Exclude proc_pointer components when
-       accessing $data field of class objects.
-       (gfc_trans_assign_vtab_procs): New function.
-       (gfc_trans_class_assign): Add second argument to the call to
-       gfc_find_derived_vtab.
-       * symbol.c (gfc_build_class_symbol): Add delayed_vtab arg and
-       implement holding off searching for the vptr derived type.
-       (add_proc_component): New function.
-       (add_proc_comps): New function.
-       (add_procs_to_declared_vtab1): New function.
-       (copy_vtab_proc_comps): New function.
-       (add_procs_to_declared_vtab): New function.
-       (void add_generic_specifics): New function.
-       (add_generics_to_declared_vtab): New function.
-       (gfc_find_derived_vtab): Add second argument to the call to
-       gfc_find_derived_vtab. Add the calls to
-       add_procs_to_declared_vtab and add_generics_to_declared_vtab.
-       * decl.c (build_sym, build_struct): Use new arg in calls to
-       gfc_build_class_symbol.
-       * gfortran.h : Add vtype bitfield to symbol_attr. Remove the
-       definition of struct gfc_class_esym_list. Modify prototypes
-       of gfc_build_class_symbol and gfc_find_derived_vtab.
-       * trans-stmt.c (gfc_trans_allocate): Add second argument to the
-       call to gfc_find_derived_vtab.
-       * module.c : Add the vtype attribute.
-       * trans.h : Add prototype for gfc_trans_assign_vtab_procs.
-       * resolve.c (resolve_typebound_generic_call): Add second arg
-       to pass along the generic name for class methods.
-       (resolve_typebound_call): The same.
-       (resolve_compcall): Use the second arg to carry the generic
-       name from the above. Remove the reference to class_esym.
-       (check_members, check_class_members, resolve_class_esym,
-       hash_value_expr): Remove functions.
-       (resolve_class_compcall, resolve_class_typebound_call): Modify
-       to use vtable rather than member by member calls.
-       (gfc_resolve_expr): Modify second arg in call to
-       resolve_compcall.
-       (resolve_select_type): Add second arg in call to
-       gfc_find_derived_vtab.
-       (resolve_code): Add second arg in call resolve_typebound_call.
-       (resolve_fl_derived): Exclude vtypes from check for late
-       procedure definitions. Likewise for checking of explicit
-       interface and checking of pass arg.
-       * iresolve.c (gfc_resolve_extends_type_of): Add second arg in
-       calls to gfc_find_derived_vtab.
-       * match.c (select_type_set_tmp): Use new arg in call to
-       gfc_build_class_symbol.
-       * trans-decl.c (gfc_get_symbol_decl): Complete vtable if
-       necessary.
-       * parse.c (endType): Finish incomplete classes.
-
-2010-04-28  Tobias Burnus  <burnus@net-b.de>
-
-       PR fortran/18918
-       PR fortran/43919
-       * simplify.c (simplify_cobound): Handle scalar coarrays.
-
-2010-04-27  Tobias Burnus  <burnus@net-b.de>
-
-       * gfc-internals.texi: Update copyright year.
-       * gfortran.texi: Ditto.
-       * invoke.texi: Ditto.
-
-2010-04-27  Tobias Burnus  <burnus@net-b.de>
-
-       PR fortran/18918
-       * resolve.c (resolve_allocate_expr): Allow array coarrays.
-       * trans-types.h (gfc_get_array_type_bounds): Update prototype.
-       * trans-types.c (gfc_get_array_type_bounds,
-       gfc_get_array_descriptor_base): Add corank argument.
-       * trans-array.c (gfc_array_init_size): Handle corank.
-       (gfc_trans_create_temp_array, gfc_array_allocate,
-       gfc_conv_expr_descriptor): Add corank argument to call.
-       * trans-stmt.c (gfc_trans_pointer_assign_need_temp): Ditto.
-
-2010-04-24  Steven G. Kargl  <kargl@gcc.gnu.org>
-
-       PR fortran/30073
-       PR fortran/43793
-       * trans-array.c (gfc_trans_array_bound_check): Use TREE_CODE instead
-       of mucking with a tree directly.
-
-2010-04-24  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
-
-       PR fortran/43832
-       * io.c (gfc_match_open): Remove branch to syntax error. Add call to
-       gfc_error with new error message.
-
-2010-04-24  Paul Thomas  <pault@gcc.gnu.org>
-
-       PR fortran/43841
-       PR fortran/43843
-       * trans-expr.c (gfc_conv_expr): Supply an address expression for
-       GFC_SS_REFERENCE.
-       (gfc_conv_expr_reference): Call gfc_conv_expr and return for
-       GFC_SS_REFERENCE.
-       * trans-array.c (gfc_add_loop_ss_code): Store the value rather
-       than the address of a GFC_SS_REFERENCE.
-       * trans.h : Change comment on GFC_SS_REFERENCE. 
-
-2010-04-22  Richard Guenther  <rguenther@suse.de>
-
-       PR fortran/43829
-       * resolve.c (gfc_resolve_index): Wrap around ...
-       (gfc_resolve_index_1): ... this.  Add parameter to allow
-       any integer kind index type.
-       (resolve_array_ref): Allow any integer kind for the start
-       index of an array ref.
-
-2010-04-21  Jakub Jelinek  <jakub@redhat.com>
-
-       PR fortran/43836
-       * f95-lang.c (gfc_define_builtin): Set TREE_NOTHROW on
-       the decl.
-
-2010-04-20  Harald Anlauf  <anlauf@gmx.de>
-
-       * intrinsic.c (sort_actual): Remove 'is' in error message.
-
-2010-04-20  Paul Thomas  <pault@gcc.gnu.org>
-
-       PR fortran/43227
-       * resolve.c (resolve_fl_derived): If a component character
-       length has not been resolved, do so now.
-       (resolve_symbol): The same as above for a symbol character
-       length.
-       * trans-decl.c (gfc_create_module_variable): A 'length' decl is
-       not needed for a character valued, procedure pointer.
-
-       PR fortran/43266
-       * resolve.c (ensure_not_abstract_walker): If 'overriding' is
-       not found, return FAILURE rather than ICEing.
-
-2010-04-19  Jakub Jelinek  <jakub@redhat.com>
-
-       PR fortran/43339
-       * openmp.c (gfc_resolve_do_iterator): Only make iteration vars for
-       sequential loops private in the innermost containing task region.
-
-2010-04-18  Eric Botcazou  <ebotcazou@adacore.com>
-
-       * f95-lang.c (gfc_init_decl_processing): Remove second argument in call
-       to build_common_tree_nodes.
-
-2010-04-17  Steven G. Kargl  <kargl@gcc.gnu.org>
-
-       PR fortran/31538
-       * fortran/trans-array.c (gfc_conv_ss_startstride): Remove the use of
-       gfc_msg_bounds by using 'Array bound mismatch' directly.
-       (gfc_trans_dummy_array_bias):  Remove the use of gfc_msg_bounds.  Reword
-       error message to include the mismatch in the extent of array bound.
-       * fortran/trans.c: Remove gfc_msg_bounds.  It is only used in one place.
-       * fortran/trans.h: Remove extern definition of gfc_msg_bounds.
-
-2010-04-17  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
-
-       * gfortran.texi: Update information on temporary file locations.
-
-2010-04-16  Jakub Jelinek  <jakub@redhat.com>
-
-       * trans-decl.c (gfc_build_qualified_array): Ensure
-       ubound.N and lbound.N artificial variable names don't appear
-       in debug info.
-
-2010-04-15  Steven G. Kargl  <kargl@gcc.gnu.org>
-
-       PR fortran/30073
-       * trans-array.c (gfc_trans_array_bound_check): Eliminate a redundant
-       block of code.  Set name to the variable associated with the descriptor.
-
-2010-04-15  Jakub Jelinek  <jakub@redhat.com>
-
-       * trans-decl.c (gfc_build_qualified_array): Clear DECL_IGNORED_P
-       on VAR_DECL LBOUND and/or UBOUND, even for -O1.
-
-2010-04-14  Steven G. Kargl  <kargl@gcc.gnu.org>
-
-       * intrinsic.texi: Add the missing specific name of intrinsic
-       procedure where the specific name is identical to the generic name.
-       Fix inconsistent or mismatch in the argument names in intrinsic
-       procedure descriptions.  Add the SCALAR allocatable description to
-       ALLOCATED.
-
-2010-04-14  Tobias Burnus  <burnus@net-b.de>
-
-       PR fortran/18918
-       * array.c (gfc_find_array_ref): Handle codimensions.
-       (gfc_match_array_spec,gfc_match_array_ref): Use gfc_fatal_error.
-       * check.c (is_coarray, dim_corank_check, gfc_check_lcobound,
-       gfc_check_image_index, gfc_check_this_image, gfc_check_ucobound):
-       New functions.
-       * gfortran.h (gfc_isym_id): Add GFC_ISYM_IMAGE_INDEX,
-       GFC_ISYM_LCOBOUND, GFC_ISYM_THIS_IMAGE,
-       GFC_ISYM_UCOBOUND.
-       * intrinsic.h (add_functions): Add this_image, image_index,
-       lcobound and ucobound intrinsics.
-       * intrinsic.c (gfc_check_lcobound,gfc_check_ucobound,
-       gfc_check_image_index, gfc_check_this_image,
-       gfc_simplify_image_index, gfc_simplify_lcobound,
-       gfc_simplify_this_image, gfc_simplify_ucobound):
-       New function prototypes.
-       * intrinsic.texi (IMAGE_INDEX, LCOBOUND, THIS_IMAGE
-       IMAGE_INDEX): Document new intrinsic functions.
-       * match.c (gfc_match_critical, sync_statement): Make -fcoarray=none
-       error fatal.
-       * simplify.c (simplify_bound_dim): Handle coarrays.
-       (simplify_bound): Update simplify_bound_dim call.
-       (gfc_simplify_num_images): Add -fcoarray=none check.
-       (simplify_cobound, gfc_simplify_lcobound, gfc_simplify_ucobound,
-       gfc_simplify_ucobound, gfc_simplify_ucobound): New functions.
-
-2010-04-14  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
-
-       PR fortran/43747
-       * constructor.c: Fix typo in comment.
-       * expr.c (find_array_section): Add check for max array limit.
-
-2010-04-13  Iain Sandoe  <iains@gcc.gnu.org>
-
-       PR bootstrap/31400
-       * gfortranspec.c (lookup_option): Check for -static and return
-       OPTION_static.
-       (lang_specific_driver): Break when OPTION_static is discovered.
-
-2010-04-12  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
-
-       * array.c (extract_element): Restore function from trunk.
-       (gfc_get_array_element): Restore function from trunk.
-       (gfc_expand_constructor): Restore check against
-       flag_max_array_constructor.
-       * constructor.c (node_copy_and_append): Delete unused.
-       * gfortran.h: Delete comment and extra include.
-       * constructor.h: Bump copyright and clean up TODO comments.
-       * resolve.c: Whitespace.
-
-2010-04-12  Daniel Franke  <franke.daniel@gmail.com>
-
-       * simplify.c (compute_dot_product): Replaced usage of ADVANCE macro
-       with direct access access to elements. Adjusted prototype, fixed all
-       callers.
-       (gfc_simplify_dot_product): Removed duplicate check for zero-sized
-       array.
-       (gfc_simplify_matmul): Removed usage of ADVANCE macro.
-       (gfc_simplify_spread): Removed workaround, directly insert elements
-       at a given array position.
-       (gfc_simplify_transpose): Likewise.
-       (gfc_simplify_pack): Replaced usage of ADVANCE macro with corresponding
-       function calls.
-       (gfc_simplify_unpack): Likewise.
-
-2010-04-12  Daniel Franke  <franke.daniel@gmail.com>
-
-       * simplify.c (only_convert_cmplx_boz): Renamed to ...
-       (convert_boz): ... this and moved to start of file.
-       (gfc_simplify_abs): Whitespace fix.
-       (gfc_simplify_acos): Whitespace fix.
-       (gfc_simplify_acosh): Whitespace fix.
-       (gfc_simplify_aint): Whitespace fix.
-       (gfc_simplify_dint): Whitespace fix.
-       (gfc_simplify_anint): Whitespace fix.
-       (gfc_simplify_and): Replaced if-gate by more common switch-over-type.
-       (gfc_simplify_dnint): Whitespace fix.
-       (gfc_simplify_asin): Whitespace fix.
-       (gfc_simplify_asinh): Moved creation of result-expr out of switch.
-       (gfc_simplify_atan): Likewise.
-       (gfc_simplify_atanh): Whitespace fix.
-       (gfc_simplify_atan2): Whitespace fix.
-       (gfc_simplify_bessel_j0): Removed ATTRIBUTE_UNUSED.
-       (gfc_simplify_bessel_j1): Likewise.
-       (gfc_simplify_bessel_jn): Likewise.
-       (gfc_simplify_bessel_y0): Likewise.
-       (gfc_simplify_bessel_y1): Likewise.
-       (gfc_simplify_bessel_yn): Likewise.
-       (gfc_simplify_ceiling): Reorderd statements.
-       (simplify_cmplx): Use convert_boz(), check for constant arguments.
-       Whitespace fix.
-       (gfc_simplify_cmplx): Use correct default kind. Removed check for
-       constant arguments.
-       (gfc_simplify_complex): Replaced if-gate. Removed check for
-       constant arguments.
-       (gfc_simplify_conjg): Whitespace fix.
-       (gfc_simplify_cos): Whitespace fix.
-       (gfc_simplify_cosh): Replaced if-gate by more common switch-over-type.
-       (gfc_simplify_dcmplx): Removed check for constant arguments.
-       (gfc_simplify_dble): Use convert_boz() and gfc_convert_constant().
-       (gfc_simplify_digits): Whitespace fix.
-       (gfc_simplify_dim): Whitespace fix.
-       (gfc_simplify_dprod): Reordered statements.
-       (gfc_simplify_erf): Whitespace fix.
-       (gfc_simplify_erfc): Whitespace fix.
-       (gfc_simplify_epsilon): Whitespace fix.
-       (gfc_simplify_exp): Whitespace fix.
-       (gfc_simplify_exponent): Use convert_boz().
-       (gfc_simplify_floor): Reorderd statements.
-       (gfc_simplify_gamma): Whitespace fix.
-       (gfc_simplify_huge): Whitespace fix.
-       (gfc_simplify_iand): Whitespace fix.
-       (gfc_simplify_ieor): Whitespace fix.
-       (simplify_intconv): Use gfc_convert_constant().
-       (gfc_simplify_int): Use simplify_intconv().
-       (gfc_simplify_int2): Reorderd statements.
-       (gfc_simplify_idint): Reorderd statements.
-       (gfc_simplify_ior): Whitespace fix.
-       (gfc_simplify_ishftc): Removed duplicate type check.
-       (gfc_simplify_len): Use range_check() instead of manual range check.
-       (gfc_simplify_lgamma): Removed ATTRIBUTE_UNUSED. Whitespace fix.
-       (gfc_simplify_log): Whitespace fix.
-       (gfc_simplify_log10): Whitespace fix.
-       (gfc_simplify_minval): Whitespace fix.
-       (gfc_simplify_maxval): Whitespace fix.
-       (gfc_simplify_mod): Whitespace fix.
-       (gfc_simplify_modulo): Whitespace fix.
-       (simplify_nint): Reorderd statements.
-       (gfc_simplify_not): Whitespace fix.
-       (gfc_simplify_or): Replaced if-gate by more common switch-over-type.
-       (gfc_simplify_radix): Removed unused result-variable. Whitespace fix.
-       (gfc_simplify_range): Removed unused result-variable. Whitespace fix.
-       (gfc_simplify_real): Use convert_boz() and gfc_convert_constant().
-       (gfc_simplify_realpart): Whitespace fix.
-       (gfc_simplify_selected_char_kind): Removed unused result-variable.
-       (gfc_simplify_selected_int_kind): Removed unused result-variable.
-       (gfc_simplify_selected_real_kind): Removed unused result-variable.
-       (gfc_simplify_sign): Whitespace fix.
-       (gfc_simplify_sin): Whitespace fix.
-       (gfc_simplify_sinh): Replaced if-gate by more common switch-over-type.
-       (gfc_simplify_sqrt): Avoided goto by inlining check. Whitespace fix.
-       (gfc_simplify_tan): Replaced if-gate by more common switch-over-type.
-       (gfc_simplify_tanh): Replaced if-gate by more common switch-over-type.
-       (gfc_simplify_xor): Replaced if-gate by more common switch-over-type.
-
-2010-04-12  Daniel Franke  <franke.daniel@gmail.com>
-
-       * gfortran.h (gfc_start_constructor): Removed.
-       (gfc_get_array_element): Removed.
-       * array.c (gfc_start_constructor): Removed, use gfc_get_array_expr 
-       instead. Fixed all callers.
-       (extract_element): Removed.
-       (gfc_expand_constructor): Temporarily removed check for
-       max-array-constructor. Will be re-introduced later if still required.
-       (gfc_get_array_element): Removed, use gfc_constructor_lookup_expr
-       instead. Fixed all callers.
-       * expr.c (find_array_section): Replaced manual lookup of elements
-       by gfc_constructor_lookup.
-
-2010-04-12  Daniel Franke  <franke.daniel@gmail.com>
-
-        * gfortran.h (gfc_get_null_expr): New prototype.
-        (gfc_get_operator_expr): New prototype.
-        (gfc_get_character_expr): New prototype.
-        (gfc_get_iokind_expr): New prototype.
-        * expr.c (gfc_get_null_expr): New.
-        (gfc_get_character_expr): New.
-        (gfc_get_iokind_expr): New.
-        (gfc_get_operator_expr): Moved here from matchexp.c (build_node).
-        * matchexp.c (build_node): Renamed and moved to
-        expr.c (gfc_get_operator_expr). Reordered arguments to match 
-        other functions. Fixed all callers.
-        (gfc_get_parentheses): Use specific function to build expr.
-        * array.c (gfc_match_array_constructor): Likewise.
-        * arith.c (eval_intrinsic): Likewise.
-        (gfc_hollerith2int): Likewise.
-        (gfc_hollerith2real): Likewise.
-        (gfc_hollerith2complex): Likewise.
-        (gfc_hollerith2logical): Likewise.
-        * data.c (create_character_intializer): Likewise.
-        * decl.c (gfc_match_null): Likewise.
-        (enum_initializer): Likewise.
-        * io.c (gfc_match_format): Likewise.
-        (match_io): Likewise.
-        * match.c (gfc_match_nullify): Likewise.
-        * primary.c (match_string_constant): Likewise.
-        (match_logical_constant): Likewise.
-        (build_actual_constructor): Likewise.
-        * resolve.c (build_default_init_expr): Likewise.
-        * symbol.c (generate_isocbinding_symbol): Likewise.
-        (gfc_build_class_symbol): Likewise.
-        (gfc_find_derived_vtab): Likewise.
-        * simplify.c (simplify_achar_char): Likewise.
-        (gfc_simplify_adjustl): Likewise.
-        (gfc_simplify_adjustr): Likewise.
-        (gfc_simplify_and): Likewise.
-        (gfc_simplify_bit_size): Likewise.
-        (gfc_simplify_is_iostat_end): Likewise.
-        (gfc_simplify_is_iostat_eor): Likewise.
-        (gfc_simplify_isnan): Likewise.
-        (simplify_bound): Likewise.
-        (gfc_simplify_leadz): Likewise.
-        (gfc_simplify_len_trim): Likewise.
-        (gfc_simplify_logical): Likewise.
-        (gfc_simplify_maxexponent): Likewise.
-        (gfc_simplify_minexponent): Likewise.
-        (gfc_simplify_new_line): Likewise.
-        (gfc_simplify_null): Likewise.
-        (gfc_simplify_or): Likewise.
-        (gfc_simplify_precision): Likewise.
-        (gfc_simplify_repeat): Likewise.
-        (gfc_simplify_scan): Likewise.
-        (gfc_simplify_size): Likewise.
-        (gfc_simplify_trailz): Likewise.
-        (gfc_simplify_trim): Likewise.
-        (gfc_simplify_verify): Likewise.
-        (gfc_simplify_xor): Likewise.
-        * trans-io.c (build_dt): Likewise.
-        (gfc_new_nml_name_expr): Removed.
-
-2010-04-12  Daniel Franke  <franke.daniel@gmail.com>
-
-       * arith.h (gfc_constant_result): Removed prototype.
-       * constructor.h (gfc_build_array_expr): Removed prototype.
-       (gfc_build_structure_constructor_expr): Removed prototype.
-       * gfortran.h (gfc_int_expr): Removed prototype.
-       (gfc_logical_expr): Removed prototype.
-       (gfc_get_array_expr): New prototype.
-       (gfc_get_structure_constructor_expr): New prototype.
-       (gfc_get_constant_expr): New prototype.
-       (gfc_get_int_expr): New prototype.
-       (gfc_get_logical_expr): New prototype.
-       * arith.c (gfc_constant_result): Moved and renamed to
-       expr.c (gfc_get_constant_expr). Fixed all callers.
-       * constructor.c (gfc_build_array_expr): Moved and renamed to
-       expr.c (gfc_get_array_expr). Split gfc_typespec argument to type
-       and kind. Fixed all callers.
-       (gfc_build_structure_constructor_expr): Moved and renamed to
-       expr.c (gfc_get_structure_constructor_expr). Split gfc_typespec argument
-       to type and kind. Fixed all callers.
-       * expr.c (gfc_logical_expr): Renamed to ...
-       (gfc_get_logical_expr): ... this. Added kind argument. Fixed all callers.
-       (gfc_int_expr): Renamed to ...
-       (gfc_get_int_expr): ... this. Added kind and where arguments. Fixed all
-       callers.
-       (gfc_get_constant_expr): New.
-       (gfc_get_array_expr): New.
-       (gfc_get_structure_constructor_expr): New.
-       * simplify.c (int_expr_with_kind): Removed, callers use gfc_get_int_expr
-       instead.
-
-2010-04-12  Daniel Franke  <franke.daniel@gmail.com>
-
-       * constructor.h: New.
-       * constructor.c: New.
-       * Make-lang.in: Add new files to F95_PARSER_OBJS.
-       * arith.c (reducy_unary): Use constructor API.
-       (reduce_binary_ac): Likewise.
-       (reduce_binary_ca): Likewise.
-       (reduce_binary_aa): Likewise.
-       * check.c (gfc_check_pack): Likewise.
-       (gfc_check_reshape): Likewise.
-       (gfc_check_unpack): Likewise.
-       * decl.c (add_init_expr_to_sym): Likewise.
-       (build_struct): Likewise.
-       * dependency.c (gfc_check_dependency): Likewise.
-       (contains_forall_index_p): Likewise.
-       * dump-parse-tree.c (show_constructor): Likewise.
-       * expr.c (free_expr0): Likewise.
-       (gfc_copy_expr): Likewise.
-       (gfc_is_constant_expr): Likewise.
-       (simplify_constructor): Likewise.
-       (find_array_element): Likewise.
-       (find_component_ref): Likewise.
-       (find_array_section): Likewise.
-       (find_substring_ref): Likewise.
-       (simplify_const_ref): Likewise.
-       (scalarize_intrinsic_call): Likewise.
-       (check_alloc_comp_init): Likewise.
-       (gfc_default_initializer): Likewise.
-       (gfc_traverse_expr): Likewise.
-       * iresolve.c (check_charlen_present): Likewise.
-       (gfc_resolve_reshape): Likewise.
-       (gfc_resolve_transfer): Likewise.
-       * module.c (mio_constructor): Likewise.
-       * primary.c (build_actual_constructor): Likewise.
-       (gfc_match_structure_constructor): Likewise.
-       * resolve.c (resolve_structure_cons): Likewise.
-       * simplify.c (is_constant_array_expr): Likewise.
-       (init_result_expr): Likewise.
-       (transformational_result): Likewise.
-       (simplify_transformation_to_scalar): Likewise.
-       (simplify_transformation_to_array): Likewise.
-       (gfc_simplify_dot_product): Likewise.
-       (simplify_bound): Likewise.
-       (simplify_matmul): Likewise.
-       (simplify_minval_maxval): Likewise.
-       (gfc_simplify_pack): Likewise.
-       (gfc_simplify_reshape): Likewise.
-       (gfc_simplify_shape): Likewise.
-       (gfc_simplify_spread): Likewise.
-       (gfc_simplify_transpose): Likewise.
-       (gfc_simplify_unpack): Likewise.q
-       (gfc_convert_constant): Likewise.
-       (gfc_convert_char_constant): Likewise.
-       * target-memory.c (size_array): Likewise.
-       (encode_array): Likewise.
-       (encode_derived): Likewise.
-       (interpret_array): Likewise.
-       (gfc_interpret_derived): Likewise.
-       (expr_to_char): Likewise.
-       (gfc_merge_initializers): Likewise.
-       * trans-array.c (gfc_get_array_constructor_size): Likewise.
-       (gfc_trans_array_constructor_value): Likewise.
-       (get_array_ctor_strlen): Likewise.
-       (gfc_constant_array_constructor_p): Likewise.
-       (gfc_build_constant_array_constructor): Likewise.
-       (gfc_trans_array_constructor): Likewise.
-       (gfc_conv_array_initializer): Likewise.
-       * trans-decl.c (check_constant_initializer): Likewise.
-       * trans-expr.c (flatten_array_ctors_without_strlen): Likewise.
-       (gfc_apply_interface_mapping_to_cons): Likewise.
-       (gfc_trans_structure_assign): Likewise.
-       (gfc_conv_structure): Likewise.
-       * array.c (check_duplicate_iterator): Likewise.
-       (match_array_list): Likewise.
-       (match_array_cons_element): Likewise.
-       (gfc_match_array_constructor): Likewise.
-       (check_constructor_type): Likewise.
-       (check_constructor): Likewise.
-       (expand): Likewise.
-       (expand_constructor): Likewise.
-       (extract_element): Likewise.
-       (gfc_expanded_ac): Likewise.
-       (resolve_array_list): Likewise.
-       (gfc_resolve_character_array_constructor): Likewise.
-       (copy_iterator): Renamed to ...
-       (gfc_copy_iterator): ... this.
-       (gfc_append_constructor): Removed.
-       (gfc_insert_constructor): Removed unused function.
-       (gfc_get_constructor): Removed.
-       (gfc_free_constructor): Removed.
-       (qgfc_copy_constructor): Removed.
-       * gfortran.h (struct gfc_expr): Removed member 'con_by_offset'.
-       Removed all references. Replaced constructor list by splay-tree.
-       (struct gfc_constructor): Removed member 'next', moved 'offset' from
-       the inner struct, added member 'base'.
-       (gfc_append_constructor): Removed prototype.
-       (gfc_insert_constructor): Removed prototype.
-       (gfc_get_constructor): Removed prototype.
-       (gfc_free_constructor): Removed prototype.
-       (qgfc_copy_constructor): Removed prototype.
-       (gfc_copy_iterator): New prototype.
-       * trans-array.h (gfc_constant_array_constructor_p): Adjusted prototype.
-
-2010-04-10  Tobias Burnus  <burnus@net-b.de>
-
-       PR fortran/43591
-       * expr.c (gfc_is_constant_expr, gfc_traverse_expr): Handle
-       proc-pointers and type-bound procedures.
-       (gfc_specification_expr): Check proc-pointers for pureness.
-
-2010-04-09  Iain Sandoe  <iains@gcc.gnu.org>
-
-       PR bootstrap/43684
-       * gfortranspec.c (lang_specific_driver): Do not expose vars 
-       only used by HAVE_LD_STATIC_DYNAMIC targets unless compiling
-       for such.
-
-2010-04-09  Tobias Burnus  <burnus@net-b.de>
-
-       PR fortran/18918
-       * decl.c (variable_decl, match_attr_spec): Fix setting the array
-       spec.
-       * array.c (match_subscript,gfc_match_array_ref): Add coarray support.
-       * data.c (gfc_assign_data_value): Ditto.
-       * expr.c (gfc_check_pointer_assign): Add check for coarray constraint.
-       (gfc_traverse_expr): Traverse also through codimension expressions.
-       (gfc_is_coindexed, gfc_has_ultimate_allocatable,
-       gfc_has_ultimate_pointer): New functions.
-       * gfortran.h (gfc_array_ref_dimen_type): Add DIMEN_STAR for coarrays.
-       (gfc_array_ref): Add codimen.
-       (gfc_array_ref): Add in_allocate.
-       (gfc_is_coindexed, gfc_has_ultimate_allocatable,
-       gfc_has_ultimate_pointer): Add prototypes.
-       * interface.c (compare_parameter, compare_actual_formal,
-       check_intents): Add coarray constraints.
-       * match.c (gfc_match_iterator): Add coarray constraint.
-       * match.h (gfc_match_array_ref): Update interface.
-       * primary.c (gfc_match_varspec): Handle codimensions.
-       * resolve.c (coarray_alloc, inquiry_argument): New static variables.
-       (check_class_members): Return gfc_try instead for error recovery.
-       (resolve_typebound_function,resolve_typebound_subroutine,
-       check_members): Handle return value of check_class_members.
-       (resolve_structure_cons, resolve_actual_arglist, resolve_function,
-       check_dimension, compare_spec_to_ref, resolve_array_ref,
-       resolve_ref, resolve_variable, gfc_resolve_expr, conformable_arrays,
-       resolve_allocate_expr, resolve_ordinary_assign): Add coarray
-       support.
-       * trans-array.c (gfc_conv_array_ref, gfc_walk_variable_expr):
-       Skip over coarray refs.
-       (gfc_array_allocate) Add support for references containing coindexes.
-       * trans-expr.c (gfc_add_interface_mapping): Copy coarray attribute.
-       (gfc_map_intrinsic_function): Ignore codimensions.
-
-2010-04-08  Bud Davis  <bdavis9659@sbcglobal.net>
-
-       PR fortran/28039
-       * io.c (check_format_string):  Added check for additional non 
-       blank characters after the format string was successfully 
-       parsed.
-       * io.c (check_format): Changed the error messages for positive
-       int required and period required to drop through the error logic
-       and report with gfc_error instead of gfc_error_now.  Corrected
-       format postion for hollerith strings.
-
-2010-04-08  Tobias Burnus  <burnus@net-b.de>
-
-       * module.c (use_iso_fortran_env_module): Fix standard check.
-
-2010-04-07  Jakub Jelinek  <jakub@redhat.com>
-
-       * parse.c (parse_derived, parse_enum): Avoid set but not used
-       warning.
-
-2010-04-07  Janne Blomqvist  <jb@gcc.gnu.org>
-
-       PR fortran/40539
-       * gfortran.texi: Add section about representation of
-       LOGICAL variables.
-
-2010-04-07  Simon Baldwin  <simonb@google.com>
-
-       * cpp.c (cb_cpp_error): Add warning reason argument, set a value
-       for diagnostic_override_option_index if CPP_W_WARNING_DIRECTIVE.
-
-2010-04-07  Richard Guenther  <rguenther@suse.de>
-
-       * options.c (gfc_init_options): Do not set.
-
-2010-04-06  Tobias Burnus  <burnus@net-b.de>
-
-       PR fortran/18918
-       * array.c (gfc_match_array_spec): Add error for -fcoarray=none.
-       * match.c (gfc_match_critical, sync_statement): Ditto.
-       * gfortran.h (gfc_fcoarray): New enum.
-       (gfc_option_t): Use it.
-       * lang.opt (fcoarray): Add new flag.
-       * invoke.texi (fcoarray): Document it.
-       * options.c (gfc_init_options,gfc_handle_option): Handle -fcoarray=.
-       (gfc_handle_coarray_option): New function.
-
-2010-04-06  Tobias Burnus  <burnus@net-b.de>
-
-       PR fortran/18918
-       * gfortran.h (gfc_array_spec): Add cotype.
-       * array.c (gfc_match_array_spec,gfc_set_array_spec): Use it
-       and defer error diagnostic.
-       * resolve.c (resolve_fl_derived): Add missing check.
-       (resolve_symbol): Add cotype/type check.
-       * parse.c (parse_derived): Fix setting of coarray_comp.
-
-2010-04-06  Tobias Burnus  <burnus@net-b.de>
-
-       PR fortran/18918
-       * array.c (gfc_free_array_spec,gfc_resolve_array_spec,
-       match_array_element_spec,gfc_copy_array_spec,
-       gfc_compare_array_spec): Include corank.
-       (match_array_element_spec,gfc_set_array_spec): Support codimension.
-       * decl.c (build_sym,build_struct,variable_decl,
-       match_attr_spec,attr_decl1,cray_pointer_decl,
-       gfc_match_volatile): Add codimension.
-       (gfc_match_codimension): New function.
-       * dump-parse-tree.c (show_array_spec,show_attr): Support codimension.
-       * gfortran.h (symbol_attribute,gfc_array_spec): Ditto.
-       (gfc_add_codimension): New function prototype.
-       * match.h (gfc_match_codimension): New function prototype.
-       (gfc_match_array_spec): Update prototype
-       * match.c (gfc_match_common): Update gfc_match_array_spec call.
-       * module.c (MOD_VERSION): Bump.
-       (mio_symbol_attribute): Support coarray attributes.
-       (mio_array_spec): Add corank support.
-       * parse.c (decode_specification_statement,decode_statement,
-       parse_derived): Add coarray support.
-       * resolve.c (resolve_formal_arglist, was_declared,
-       is_non_constant_shape_array, resolve_fl_variable,
-       resolve_fl_derived, resolve_symbol): Add coarray support.
-       * symbol.c (check_conflict, gfc_add_volatile, gfc_copy_attr,
-       gfc_build_class_symbol): Add coarray support.
-       (gfc_add_codimension): New function.
-
-2010-04-06  Tobias Burnus  <burnus@net-b.de>
-
-       PR fortran/18918
-       * iso-fortran-env.def: Add the integer parameters atomic_int_kind,
-       atomic_logical_kind, iostat_inquire_internal_unit, stat_locked,
-       stat_locked_other_image, stat_stopped_image and stat_unlocked of
-       Fortran 2008.
-       * intrinsic.texi (iso_fortran_env): Ditto.
-       * libgfortran.h (libgfortran_stat_codes): New enum.
-       * module.c (use_iso_fortran_env_module): Honour -std= when loading
-       constants from the intrinsic module.
-
-2010-04-06  Tobias Burnus  <burnus@net-b.de>
-
-       PR fortran/39997
-       * intrinsic.c (add_functions): Add num_images.
-       * decl.c (gfc_match_end): Handle END CRITICAL.
-       * intrinsic.h (gfc_simplify_num_images): Add prototype.
-       * dump-parse-tree.c (show_code_node): Dump CRITICAL, ERROR STOP,
-       and SYNC.
-       * gfortran.h (gfc_statement): Add enum items for those.
-       (gfc_exec_op) Ditto.
-       (gfc_isym_id): Add num_images.
-       * trans-stmt.c (gfc_trans_stop): Handle ERROR STOP.
-       (gfc_trans_sync,gfc_trans_critical): New functions.
-       * trans-stmt.h (gfc_trans_stop,gfc_trans_sync,
-       gfc_trans_critical): Add/update prototypes.
-       * trans.c (gfc_trans_code): Handle CRITICAL, ERROR STOP,
-       and SYNC statements.
-       * trans.h (gfor_fndecl_error_stop_string) Add variable.
-       * resolve.c (resolve_sync): Add function.
-       (gfc_resolve_blocks): Handle CRITICAL.
-       (resolve_code): Handle CRITICAL, ERROR STOP,
-       (resolve_branch): Add CRITICAL constraint check.
-       and SYNC statements.
-       * st.c (gfc_free_statement): Add new statements.
-       * trans-decl.c (gfor_fndecl_error_stop_string): Global variable.
-       (gfc_build_builtin_function_decls): Initialize it.
-       * match.c (gfc_match_if): Handle ERROR STOP and SYNC.
-       (gfc_match_critical, gfc_match_error_stop, sync_statement,
-       gfc_match_sync_all, gfc_match_sync_images, gfc_match_sync_memory):
-       New functions.
-       (match_exit_cycle): Handle CRITICAL constraint.
-       (gfc_match_stopcode): Handle ERROR STOP.
-       * match.h (gfc_match_critical, gfc_match_error_stop,
-       gfc_match_sync_all, gfc_match_sync_images,
-       gfc_match_sync_memory): Add prototype.
-       * parse.c (decode_statement, gfc_ascii_statement,
-       parse_executable): Handle new statements.
-       (parse_critical_block): New function.
-       * parse.h (gfc_compile_state): Add COMP_CRITICAL.
-       * intrinsic.texi (num_images): Document new function.
-       * simplify.c (gfc_simplify_num_images): Add function.
-
-2010-04-06  Tobias Burnus  <burnus@net-b.de>
-
-       PR fortran/43178
-       * trans-array.c (gfc_conv_expr_descriptor): Update
-       gfc_trans_scalar_assign call.
-       (has_default_initializer): New function.
-       (gfc_trans_deferred_array): Nullify less often.
-       * trans-expr.c (gfc_conv_subref_array_arg,
-       gfc_trans_subcomponent_assign): Update call to
-       gfc_trans_scalar_assign.
-       (gfc_trans_scalar_assign): Add parameter and pass it on.
-       (gfc_trans_assignment_1): Optionally, do not dealloc before
-       assignment.
-       * trans-openmp.c (gfc_trans_omp_array_reduction): Update
-       call to gfc_trans_scalar_assign.
-       * trans-decl.c (gfc_get_symbol_decl): Do not always apply
-       initializer to static variables.
-       (gfc_init_default_dt): Add dealloc parameter and pass it on.
-       * trans-stmt.c (forall_make_variable_temp,
-       generate_loop_for_temp_to_lhs, generate_loop_for_rhs_to_temp,
-       gfc_trans_forall_1, gfc_trans_where_assign, gfc_trans_where_3
-       gfc_trans_allocate): Update gfc_trans_assignment call.
-       * trans.h (gfc_trans_scalar_assign, gfc_init_default_dt,
-       gfc_init_default_dt, gfc_trans_assignment): Add bool dealloc
-       parameter to prototype.
-
-2010-03-31  Paul Thomas  <pault@gcc.gnu.org>
-
-       * ioparm.def : Update copyright.
-       * lang.opt : ditto
-       * trans-array.c : ditto
-       * trans-array.h : ditto
-       * expr.c: ditto
-       * trans-types.c: ditto
-       * dependency.c : ditto
-       * gfortran.h : ditto
-       * options.c : ditto
-       * trans-io.c : ditto
-       * trans-intrinsic.c : ditto
-       * libgfortran.h : ditto
-       * invoke.texi : ditto
-       * intrinsic.texi : ditto
-       * trans.c : ditto
-       * trans.h : ditto
-       * intrinsic.c : ditto
-       * interface.c : ditto
-       * iresolve.c : ditto
-       * trans-stmt.c : ditto
-       * trans-stmt.h : ditto
-       * parse,c : ditto
-       * match.h : ditto
-       * error.c : ditto
-
-2010-03-20  Paul Thomas  <pault@gcc.gnu.org>
-
-       PR fortran/43450
-       * trans-decl.c (gfc_create_module_variable): With -fwhole-file
-       do not assert the context of derived types.
-
-2010-03-20  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
-
-       PR fortran/43409
-       * ioparm.def: Change inquire size variable to type pointer to
-       GFC_IO_INT type.
-
-2010-03-18  Paul Thomas  <pault@gcc.gnu.org>
-
-        PR fortran/43039
-        * trans-expr.c (conv_parent_component_references): Ensure that
-       'dt' has a backend_decl.
-
-        PR fortran/43043
-        * trans-expr.c (gfc_conv_structure): Ensure that the derived
-       type has a backend_decl.
-
-        PR fortran/43044
-        * resolve.c (resolve_global_procedure): Check that the 'cl'
-       structure is not NULL.
-
-2010-03-18  Shujing Zhao  <pearly.zhao@oracle.com>
-
-       * lang.opt (-ffixed-line-length-, ffree-line-length-): Remove
-       redundant tab.
-
-2010-03-17  Tobias Burnus  <burnus@net-b.de>
-
-       PR fortran/43331
-       * trans-array.c (gfc_conv_array_index_offset,gfc_conv_array_ref,
-       gfc_conv_ss_startstride): Remove no-longer-needed cp_was_assumed
-       check.
-       * decl.c (gfc_match_derived_decl): Don't mark assumed-size Cray
-       pointees as having explizit size.
-       * expr.c (gfc_check_assign): Remove now unreachable Cray pointee
-       check.
-       * trans-types.c (gfc_is_nodesc_array): Add cp_was_assumed to assert.
-       (gfc_sym_type): Don't mark Cray pointees as restricted pointers.
-       * resolve.c (resolve_symbol): Handle cp_was_assumed.
-       * trans-decl.c (gfc_trans_deferred_vars): Ditto.
-       (gfc_finish_var_decl): Don't mark Cray pointees as restricted
-       pointers.
-
-2010-03-14  Tobias Burnus  <burnus@net-b.de>
-
-       PR fortran/43362
-       * resolve.c (resolve_structure_cons): Add missing PURE constraint.
-       (resolve_ordinary_assign): Add check to avoid segfault.
-
 2010-03-12  Paul Thomas  <pault@gcc.gnu.org>
 
        PR fortran/43291
index d165bd6..dfa2232 100644 (file)
@@ -5253,7 +5253,7 @@ resolve_typebound_call (gfc_code* c, const char **name)
 
 /* Resolve a component-call expression.  */
 static gfc_try
-resolve_compcall (gfc_expr* e, const char **name)
+resolve_compcall (gfc_expr* e, bool fcn, bool class_members)
 {
   gfc_actual_arglist* newactual;
   gfc_symtree* target;
@@ -5299,10 +5299,165 @@ resolve_compcall (gfc_expr* e, const char **name)
   e->ts = target->n.sym->ts;
   e->expr_type = EXPR_FUNCTION;
 
+<<<<<<< HEAD
   /* Resolution is not necessary if this is a class subroutine; this
      function only has to identify the specific proc. Resolution of
      the call will be done next in resolve_typebound_call.  */
   return gfc_resolve_expr (e);
+=======
+  /* Resolution is not necessary when constructing component calls
+     for class members, since this must only be done for the
+     declared type, which is done afterwards.  */
+  return !class_members ? gfc_resolve_expr (e) : SUCCESS;
+}
+
+
+/* Resolve a typebound call for the members in a class.  This group of
+   functions implements dynamic dispatch in the provisional version
+   of f03 OOP.  As soon as vtables are in place and contain pointers
+   to methods, this will no longer be necessary.  */
+static gfc_expr *list_e;
+static void check_class_members (gfc_symbol *);
+static gfc_try class_try;
+static bool fcn_flag;
+
+
+static void
+check_members (gfc_symbol *derived)
+{
+  if (derived->attr.flavor == FL_DERIVED)
+    check_class_members (derived);
+}
+
+
+static void 
+check_class_members (gfc_symbol *derived)
+{
+  gfc_expr *e;
+  gfc_symtree *tbp;
+  gfc_class_esym_list *etmp;
+
+  e = gfc_copy_expr (list_e);
+
+  tbp = gfc_find_typebound_proc (derived, &class_try,
+                                e->value.compcall.name,
+                                false, &e->where);
+
+  if (tbp == NULL)
+    {
+      gfc_error ("no typebound available procedure named '%s' at %L",
+                e->value.compcall.name, &e->where);
+      return;
+    }
+
+  /* If we have to match a passed class member, force the actual
+      expression to have the correct type.  */
+  if (!tbp->n.tb->nopass)
+    {
+      if (e->value.compcall.base_object == NULL)
+       e->value.compcall.base_object = extract_compcall_passed_object (e);
+
+      if (!derived->attr.abstract)
+       {
+         e->value.compcall.base_object->ts.type = BT_DERIVED;
+         e->value.compcall.base_object->ts.u.derived = derived;
+       }
+    }
+
+  e->value.compcall.tbp = tbp->n.tb;
+  e->value.compcall.name = tbp->name;
+
+  /* Let the original expresssion catch the assertion in
+     resolve_compcall, since this flag does not appear to be reset or
+     copied in some systems.  */
+  e->value.compcall.assign = 0;
+
+  /* Do the renaming, PASSing, generic => specific and other
+     good things for each class member.  */
+  class_try = (resolve_compcall (e, fcn_flag, true) == SUCCESS)
+                               ? class_try : FAILURE;
+
+  /* Now transfer the found symbol to the esym list.  */
+  if (class_try == SUCCESS)
+    {
+      etmp = list_e->value.function.class_esym;
+      list_e->value.function.class_esym
+               = gfc_get_class_esym_list();
+      list_e->value.function.class_esym->next = etmp;
+      list_e->value.function.class_esym->derived = derived;
+      list_e->value.function.class_esym->esym
+               = e->value.function.esym;
+    }
+
+  gfc_free_expr (e);
+  
+  /* Burrow down into grandchildren types.  */
+  if (derived->f2k_derived)
+    gfc_traverse_ns (derived->f2k_derived, check_members);
+}
+
+
+/* Eliminate esym_lists where all the members point to the
+   typebound procedure of the declared type; ie. one where
+   type selection has no effect..  */
+static void
+resolve_class_esym (gfc_expr *e)
+{
+  gfc_class_esym_list *p, *q;
+  bool empty = true;
+
+  gcc_assert (e && e->expr_type == EXPR_FUNCTION);
+
+  p = e->value.function.class_esym;
+  if (p == NULL)
+    return;
+
+  for (; p; p = p->next)
+    empty = empty && (e->value.function.esym == p->esym);
+
+  if (empty)
+    {
+      p = e->value.function.class_esym;
+      for (; p; p = q)
+       {
+         q = p->next;
+         gfc_free (p);
+       }
+      e->value.function.class_esym = NULL;
+   }
+}
+
+
+/* Generate an expression for the hash value, given the reference to
+   the class of the final expression (class_ref), the base of the
+   full reference list (new_ref), the declared type and the class
+   object (st).  */
+static gfc_expr*
+hash_value_expr (gfc_ref *class_ref, gfc_ref *new_ref, gfc_symtree *st)
+{
+  gfc_expr *hash_value;
+
+  /* Build an expression for the correct hash_value; ie. that of the last
+     CLASS reference.  */
+  if (class_ref)
+    {
+      class_ref->next = NULL;
+    }
+  else
+    {
+      gfc_free_ref_list (new_ref);
+      new_ref = NULL;
+    }
+  hash_value = gfc_get_expr ();
+  hash_value->expr_type = EXPR_VARIABLE;
+  hash_value->symtree = st;
+  hash_value->symtree->n.sym->refs++;
+  hash_value->ref = new_ref;
+  gfc_add_component_ref (hash_value, "$vptr");
+  gfc_add_component_ref (hash_value, "$hash");
+
+  return hash_value;
+>>>>>>> 2010-03-12  Paul Thomas  <pault@gcc.gnu.org>
 }
 
 
@@ -5342,6 +5497,14 @@ get_declared_from_expr (gfc_ref **class_ref, gfc_ref **new_ref,
 /* Resolve a typebound function, or 'method'. First separate all
    the non-CLASS references by calling resolve_compcall directly.  */
 
+<<<<<<< HEAD
+=======
+/* Resolve a typebound function, or 'method'.  First separate all
+   the non-CLASS references by calling resolve_compcall directly.
+   Then treat the CLASS references by resolving for each of the class
+   members in turn.  */
+
+>>>>>>> 2010-03-12  Paul Thomas  <pault@gcc.gnu.org>
 static gfc_try
 resolve_typebound_function (gfc_expr* e)
 {
@@ -5356,17 +5519,28 @@ resolve_typebound_function (gfc_expr* e)
 
   st = e->symtree;
   if (st == NULL)
+<<<<<<< HEAD
     return resolve_compcall (e, NULL);
+=======
+    return resolve_compcall (e, true, false);
+>>>>>>> 2010-03-12  Paul Thomas  <pault@gcc.gnu.org>
 
   /* Get the CLASS declared type.  */
   declared = get_declared_from_expr (&class_ref, &new_ref, e);
 
   /* Weed out cases of the ultimate component being a derived type.  */
   if ((class_ref && class_ref->u.c.component->ts.type == BT_DERIVED)
+<<<<<<< HEAD
         || (!class_ref && st->n.sym->ts.type != BT_CLASS))
     {
       gfc_free_ref_list (new_ref);
       return resolve_compcall (e, NULL);
+=======
+       || (!class_ref && st->n.sym->ts.type != BT_CLASS))
+    {
+      gfc_free_ref_list (new_ref);
+      return resolve_compcall (e, true, false);
+>>>>>>> 2010-03-12  Paul Thomas  <pault@gcc.gnu.org>
     }
 
   c = gfc_find_component (declared, "$data", true, true);
@@ -5382,9 +5556,14 @@ resolve_typebound_function (gfc_expr* e)
   resolve_compcall (e, &name);
   ts = e->ts;
 
+<<<<<<< HEAD
   /* Then convert the expression to a procedure pointer component call.  */
   e->value.function.esym = NULL;
   e->symtree = st;
+=======
+  class_try = (resolve_compcall (e, true, false) == SUCCESS)
+                ? class_try : FAILURE;
+>>>>>>> 2010-03-12  Paul Thomas  <pault@gcc.gnu.org>
 
   if (class_ref)  
     {
@@ -5413,9 +5592,16 @@ resolve_typebound_function (gfc_expr* e)
   return SUCCESS;
 }
 
+<<<<<<< HEAD
 /* Resolve a typebound subroutine, or 'method'. First separate all
    the non-CLASS references by calling resolve_typebound_call
    directly.  */
+=======
+/* Resolve a typebound subroutine, or 'method'.  First separate all
+   the non-CLASS references by calling resolve_typebound_call directly.
+   Then treat the CLASS references by resolving for each of the class
+   members in turn.  */
+>>>>>>> 2010-03-12  Paul Thomas  <pault@gcc.gnu.org>
 
 static gfc_try
 resolve_typebound_subroutine (gfc_code *code)
@@ -5431,14 +5617,22 @@ resolve_typebound_subroutine (gfc_code *code)
 
   st = code->expr1->symtree;
   if (st == NULL)
+<<<<<<< HEAD
     return resolve_typebound_call (code, NULL);
+=======
+    return resolve_typebound_call (code);
+>>>>>>> 2010-03-12  Paul Thomas  <pault@gcc.gnu.org>
 
   /* Get the CLASS declared type.  */
   declared = get_declared_from_expr (&class_ref, &new_ref, code->expr1);
 
   /* Weed out cases of the ultimate component being a derived type.  */
   if ((class_ref && class_ref->u.c.component->ts.type == BT_DERIVED)
+<<<<<<< HEAD
         || (!class_ref && st->n.sym->ts.type != BT_CLASS))
+=======
+       || (!class_ref && st->n.sym->ts.type != BT_CLASS))
+>>>>>>> 2010-03-12  Paul Thomas  <pault@gcc.gnu.org>
     {
       gfc_free_ref_list (new_ref);
       return resolve_typebound_call (code, NULL);
index aa18f70..869ac9c 100644 (file)
@@ -1,3 +1,9 @@
+2010-03-12  Paul Thomas  <pault@gcc.gnu.org>
+
+       PR fortran/43291
+       PR fortran/43326
+       * gfortran.dg/dynamic_dispatch_7.f03: New test.
+
 2010-03-12  Kai Tietz  <kai.tietz@onevision.com>
 
        * gfortran.dg/default_format_denormal_1.f90: Don't assume
index 3cd0510..a84d9f9 100644 (file)
@@ -7,8 +7,8 @@
 ! Contributed by Janus Weil <janus@gcc.gnu.org>
 !
 module m1
-  type :: t1
-  contains
+  type  :: t1
+  contains 
     procedure :: sizeof
   end type
 contains
@@ -17,10 +17,11 @@ contains
     sizeof = 1
   end function sizeof
 end module
-       
+
+
 module m2
   use m1
-  type, extends(t1) :: t2
+  type, extends(t1) :: t2    
   contains
     procedure :: sizeof => sizeof2
   end type
@@ -31,18 +32,19 @@ contains
   end function
 end module
 
+
 module m3
   use m2
   type :: t3
-  class(t1), pointer :: a
+    class(t1), pointer  :: a 
   contains
     procedure :: sizeof => sizeof3
   end type
-contains
+contains 
   integer function sizeof3(a)
     class(t3) :: a
     sizeof3 = a%a%sizeof()
-  end function
+  end function 
 end module
 
   use m1
@@ -55,7 +57,8 @@ end module
   if ((z%sizeof() .ne. 1) .or. (z%a%sizeof() .ne. 1)) call abort
   z%a => y
   if ((z%sizeof() .ne. 2) .or. (z%a%sizeof() .ne. 2)) call abort
+
 end
 
 ! { dg-final { cleanup-modules "m1 m2 m3" } }
-       
+