2012-12-28 Janus Weil PR fortran/55692 * check.c (gfc_check_associated): Remove a "gcc_assert (0)". 2012-12-28 Tobias Burnus PR fortran/55763 * check.c (gfc_check_move_alloc): Handle unlimited polymorphic. * trans-intrinsic.c (conv_intrinsic_move_alloc): Ditto. 2012-12-27 Jerry DeLisle PR fortran/48976 * gfortran.h (gfc_inquire struct): Add pointer for inquire stream. * io.c (io_tag): Add tag for inquire stream. (match_inquire_element): Add matcher for new tag. (gfc_resolve_inquire): Resolve new tag. * ioparm.def: Add new parameter for inquire stream. * trans-io.c (gfc_trans_inquire): Add tranlste code for inquire stream. 2012-12-23 Tobias Burnus PR fortran/54884 * module.c (write_symbol1_recursion): Set attr.public_use. * interface.c (check_sym_interfaces, check_uop_interfaces, gfc_check_interfaces): Remove attr.public_use code. * resolve.c (resolve_function, resolve_variable, resolve_typebound_procedure): Ditto. 2012-12-22 Tobias Burnus PR fortran/55763 * module.c (mio_component): Don't skip _hash's initializer. * resolve.c (resolve_select_type): Add an assert. * trans-expr.c (gfc_conv_procedure_call): Handle INTENT(OUT) for UNLIMIT_POLY. 2012-12-21 Richard Biener PR bootstrap/54659 * gfortran.h: Do not include gmp.h here. 2012-12-21 Paul Thomas PR fortran/55763 * match.c (select_type_set_tmp): Return is a derived type or class typespec has no derived type. * resolve.c (resolve_fl_var_and_proc): Exclude select type temporaries from 'pointer'. (resolve_symbol): Exclude select type temporaries from tests for assumed size and assumed rank. 2012-12-20 Janus Weil PR fortran/36044 * gfortran.h (gfc_isym_id): Add GFC_ISYM_BACKTRACE. * intrinsic.c (add_subroutines): Add "backtrace". * intrinsic.texi (BACKTRACE): Document BACKTRACE intrinsic. 2012-12-20 Tobias Burnus PR fortran/54818 * trans-intrinsic.c (gfc_conv_intrinsic_transfer): Ensure that the string length is of type gfc_charlen_type_node. 2012-12-19 Paul Thomas * array.c (resolve_array_list): Apply C4106. * check.c (gfc_check_same_type_as): Exclude polymorphic entities from check for extensible types. Improved error for disallowed argument types to name the offending type. * class.c : Update copyright date. (gfc_class_null_initializer): Add argument for initialization expression and deal with unlimited polymorphic typespecs. (get_unique_type_string): Give unlimited polymorphic entities a type string. (gfc_intrinsic_hash_value): New function. (gfc_build_class_symbol): Incorporate unlimited polymorphic entities. (gfc_find_derived_vtab): Deal with unlimited polymorphic entities. (gfc_find_intrinsic_vtab): New function. * decl.c (gfc_match_decl_type_spec): Match typespec for unlimited polymorphic type. (gfc_match_data_decl): Skip to 'ok' if unlimited polymorphic. expr.c (gfc_check_pointer_assign): Apply C717. If unlimited polymorphic lvalue, find rvalue vtable for all typespecs, except unlimited polymorphic expressions. (gfc_check_vardef_context): Handle unlimited polymorphic entities. * gfortran.h : Add unlimited polymorphic attribute. Add second arg to gfc_class_null_initializer primitive and primitive for gfc_find_intrinsic_vtab. Add UNLIMITED_POLY to detect unlimited polymorphic expressions. * interface.c (gfc_compare_types): If expr1 is unlimited polymorphic, always return 1. If expr2 is unlimited polymorphic enforce C717. (gfc_compare_interfaces): Skip past conditions that do not apply for unlimited polymorphic entities. (compare_parameter): Make sure that an unlimited polymorphic, allocatable or pointer, formal argument is matched by an unlimited polymorphic actual argument. (compare_actual_formal): Ensure that an intrinsic vtable exists to match an unlimited polymorphic formal argument. * match.c (gfc_match_allocate): Type kind parameter does not need to match an unlimited polymorphic allocate-object. (alloc_opt_list): An unlimited polymorphic allocate-object requires a typespec or a SOURCE tag. (select_intrinsic_set_tmp): New function. (select_type_set_tmp): Call new function. If it returns NULL, build a derived type or class temporary instead. (gfc_match_type_is): Remove restriction to derived types only. Bind(C) or sequence derived types not permitted. * misc (gfc_typename): Printed CLASS(*) for unlimited polymorphism. * module.c : Add AB_UNLIMITED_POLY to pass unlimited polymorphic attribute to and from modules. * resolve.c (resolve_common_vars): Unlimited polymorphic entities cannot appear in common blocks. (resolve_deallocate_expr): Deallocate unlimited polymorphic enities. (resolve_allocate_expr): Likewise for allocation. Make sure vtable exists. (gfc_type_is_extensible): Unlimited polymorphic entities are not extensible. (resolve_select_type): Handle unlimited polymorphic selectors. Ensure that length type parameters are assumed and that names for intrinsic types are generated. (resolve_fl_var_and_proc): Exclude select type temporaries from test of extensibility of type. (resolve_fl_variable): Likewise for test that assumed character length must be a dummy or a parameter. (resolve_fl_derived0): Return SUCCESS unconditionally for unlimited polymorphic entities. Also, allow unlimited polymorphic components. (resolve_fl_derived): Return SUCCESS unconditionally for unlimited polymorphic entities. (resolve_symbol): Return early with unlimited polymorphic entities. * simplifiy.c : Update copyright year. (gfc_simplify_extends_type_of): No simplification possible for unlimited polymorphic arguments. * symbol.c (gfc_use_derived): Nothing to do for unlimited polymorphic "derived type". (gfc_type_compatible): Return unity if ts1 is unlimited polymorphic. * trans-decl.c (create_function_arglist) Formal arguments without a character length should be treated in the same way as passed lengths. (gfc_trans_deferred_vars): Nullify the vptr of unlimited polymorphic pointers. Avoid unlimited polymorphic entities triggering gcc_unreachable. * trans-expr.c (gfc_conv_intrinsic_to_class): New function. (gfc_trans_class_init_assign): Make indirect reference of src.expr. (gfc_trans_class_assign): Expression NULL of unknown type should set NULL vptr on lhs. Treat C717 cases where lhs is a derived type and the rhs is unlimited polymorphic. (gfc_conv_procedure_call): Handle the conversion of a non-class actual argument to match an unlimited polymorphic formal argument. Suppress the passing of a character string length in this case. Make sure that calls to the character __copy function have two character string length arguments. (gfc_conv_initializer): Pass the initialization expression to gfc_class_null_initializer. (gfc_trans_subcomponent_assign): Ditto. (gfc_conv_structure): Move handling of _size component. trans-intrinsic.c: (gfc_conv_same_type_as): Handle conditions where unlimited polymorphic arguments have null vptr. * trans-stmt.c (trans_associate_var): Correctly treat array temporaries associated with unlimited polymorphic selectors. Recover the overwritten dtype for the descriptor. Use the _size field of the vptr for character string lengths. (gfc_trans_allocate): Cope with unlimited polymorphic allocate objects; especially with character source tags. (reset_vptr): New function. (gfc_trans_deallocate): Call it. * trans-types.c (gfc_get_derived_type): Detect unlimited polymorphic types and deal with cases where the derived type of components is null. * trans.c : Update copyright year. (trans_code): Call gfc_trans_class_assign for C717 cases where the lhs is not unlimited polymorphic. 2012-12-19 Tobias Burnus PR fortran/55733 * trans-decl.c (gfc_create_string_length): Avoid setting TREE_STATIC for automatic variables with -fno-automatic. 2012-12-19 Tobias Burnus Jakub Jelinek Janus Weil PR fortran/55636 PR fortran/55733 * gfortran.h (GFC_PREFIX): Define. * trans-decl.c (gfc_create_string_length): For VAR_DECLs that will be TREE_STATIC, use GFC_PREFIX to mangle the names. Handle -fno-automatic (gfc_trans_deferred_vars): Don't free variables SAVEd via -fno-automatic. 2012-12-16 Tobias Burnus PR fortran/55197 * module.c (gfc_use_module): Free rename list only for internally generated intrinsic modules. 2012-12-16 Tobias Burnus * trans-intrinsic.c (conv_intrinsic_move_alloc): Set dynamic type of the FROM variable to the declared type. 2012-12-16 Tobias Burnus PR fortran/55638 * resolve.c (resolve_formal_arglist): Allow VALUE without INTENT for ELEMENTAL procedures. 2012-12-10 Janus Weil PR fortran/52909 * trans-decl.c (get_proc_pointer_decl): Apply name mangling. 2012-12-09 Tobias Burnus * trans-array.c (structure_alloc_comps): Use NULL_TREE in the call to gfc_deallocate_scalar_with_status. * trans-decl.c (gfc_trans_deferred_vars): Pass symbol. * trans-stmt.c (gfc_trans_deallocate): Pass polymorphic variable. 2012-12-09 Thomas Koenig PR fortran/55593 * frontend-passes.c (doloop_code): Use resolved_sym instead of n.sym->formal for formal argument list to get the correct version for all generic subroutines. 2012-12-05 Tobias Burnus * resolve.c (generate_component_assignments): Fix memleak. 2012-12-03 Janus Weil PR fortran/55548 * intrinsic.texi (SYSTEM_CLOCK): Update documentation of SYSTEM_CLOCK. 2012-12-03 Tobias Burnus Janus Weil PR fortran/37336 * class.c (gfc_is_finalizable): New function. * gfortran.h (gfc_is_finalizable): Its prototype. * module.c (mio_component): Read initializer for vtype's _final. * resolve.c (resolve_fl_derived0): Call gfc_is_finalizable. * trans-expr.c (gfc_vtable_final_get): New function. (conv_parent_component_references): Fix comment. (gfc_conv_variable): Fix for scalar coarray components. * trans-intrinsic.c (conv_intrinsic_move_alloc): For BT_CLASS, pass the BT_CLASS type and not the declared type to gfc_deallocate_scalar_with_status. * trans.h (gfc_vtable_final_get): New prototype. 2012-12-03 Tobias Burnus PR fortran/55475 * scanner.c (gfc_next_char_literal): Fix setting locus to free_line_length for the error message. * error.c (show_locus): Fix potential out-of-bounds read. 2012-12-03 Tobias Burnus PR fortran/37336 * class.c (finalizer_insert_packed_call): New static function. (finalize_component, generate_finalization_wrapper): Fix coarray handling and packing. 2012-12-02 Paul Thomas * resolve.c (resolve_allocate_deallocate, resolve_typebound_intrinsic_op): Recover revisions 193568 and 193778, which were accidentally reverted by the previous patch. 2012-12-01 Alessandro Fanfarillo Paul Thomas PR fortran/46897 * gfortran.h : Add bit field 'defined_assign_comp' to symbol_attribute structure. Add primitive for gfc_add_full_array_ref. * expr.c (gfc_add_full_array_ref): New function. (gfc_lval_expr_from_sym): Call new function. * resolve.c (add_comp_ref): New function. (build_assignment): New function. (get_temp_from_expr): New function (add_code_to_chain): New function (generate_component_assignments): New function that calls all the above new functions. (resolve_code): Call generate_component_assignments. (check_defined_assignments): New function. (resolve_fl_derived0): Call check_defined_assignments. (gfc_resolve): Reset component_assignment_level in case it is left in a bad state by errors. * resolve.c (is_sym_host_assoc, resolve_procedure_interface, resolve_contained_fntype, resolve_procedure_expression, resolve_elemental_actual, resolve_global_procedure, is_scalar_expr_ptr, gfc_iso_c_func_interface, resolve_function, set_name_and_label, gfc_iso_c_sub_interface, resolve_specific_s0, resolve_operator, compare_bound_mpz_t, gfc_resolve_character_operator, resolve_typebound_function, gfc_resolve_expr, forall_index, remove_last_array_ref, conformable_arrays, resolve_allocate_expr, resolve_allocate_deallocate, resolve_select_type, resolve_transfer, resolve_where, gfc_resolve_where_code_in_forall, gfc_resolve_forall_body, gfc_count_forall_iterators, resolve_values, resolve_bind_c_comms, resolve_bind_c_derived_types, gfc_verify_binding_labels, apply_default_init, build_default_init_expr, apply_default_init_local, resolve_fl_var_and_proc, resolve_fl_procedure, gfc_resolve_finalizers, check_generic_tbp_ambiguity, resolve_typebound_intrinsic_op, resolve_typebound_procedure, resolve_typebound_procedures, ensure_not_abstract, resolve_fl_derived0, resolve_fl_parameter, resolve_symbol, resolve_equivalence_derived): Remove trailing white space. * gfortran.h : Remove trailing white space. 2012-11-28 Tobias Burnus PR fortran/52161 * trans-stmt.c (gfc_trans_sync): Fix bound checking for -fcoarray=lib. 2012-11-28 Tobias Burnus PR fortran/52161 * trans-stmt.c (gfc_trans_sync): Fix bound checking. 2012-11-27 Tobias Burnus PR fortran/55476 * expr.c (gfc_check_pointer_assign): Fix check pointer-might-outlive-target check for host_assoc. 2012-11-26 Eric Botcazou * trans-decl.c (gfc_finish_var_decl): Do not set DECL_RESTRICTED_P. 2012-11-26 Janus Weil PR fortran/54997 * decl.c (match_procedure_decl): Don't set 'referenced' attribute for PROCEDURE declarations. * parse.c (gfc_fixup_sibling_symbols,parse_contained): Don't set 'referenced' attribute for all contained procedures. * trans-decl.c (gfc_get_symbol_decl): Allow for unreferenced procedures. (build_function_decl): Set TREE_USED for referenced procedures. 2012-11-26 Janus Weil PR fortran/54881 * match.c (select_derived_set_tmp,select_class_set_tmp): Removed and unified into ... (select_type_set_tmp): ... this one. Set POINTER argument according to selector. * trans-intrinsic.c (gfc_conv_associated): Use 'gfc_class_data_get' instead of 'gfc_add_data_component'. 2012-11-25 Thomas Koenig PR fortran/30146 * frontend-passes.c (doloop_warn): New function. (doloop_list): New static variable. (doloop_size): New static variable. (doloop_level): New static variable. (gfc_run_passes): Call doloop_warn. (doloop_code): New function. (doloop_function): New function. (gfc_code_walker): Keep track of DO level. 2012-11-24 Thomas Koenig PR fortran/55314 * resolve.c (resolve_allocate_deallocate): Compare all subscripts when deciding if to reject a (de)allocate statement. 2012-11-21 Janus Weil PR fortran/55352 * trans-decl.c (generate_local_decl): Don't warn for explicitly imported but unused module variables which are in a namelist or common block. 2012-11-20 Diego Novillo Jakub Jelinek * trans-openmp.c: Replace all vec() initializers with vNULL. 2012-11-17 Diego Novillo Adjust for new vec API (http://gcc.gnu.org/wiki/cxx-conversion/cxx-vec) * frontend-passes.c: Use new vec API in vec.h. * trans-array.c: Likewise. * trans-common.c: Likewise. * trans-decl.c: Likewise. * trans-expr.c: Likewise. * trans-intrinsic.c: Likewise. * trans-openmp.c: Likewise. * trans-stmt.c: Likewise. * trans-types.c: Likewise. * trans.h: Likewise. 2012-11-17 Jakub Jelinek PR fortran/55341 * trans-intrinsic.c (gfc_conv_intrinsic_transfer): Convert last argument to memcpy to size_type_node type. * trans-stmt.c (gfc_conv_elemental_dependencies): Likewise. * trasn-array.c (duplicate_allocatable): Likewise. 2012-11-16 Janus Weil PR fortran/55297 * resolve.c (resolve_typebound_intrinsic_op): Only add typebound operators to the operator list in the namespace of the derived type. 2012-11-12 Jan Hubicka * f95-lang.c (ATTR_NOTHROW_LEAF_MALLOC_LIST): New macro. (gfc_define_builtin): Use set_call_expr_flags. (gfc_init_builtin_functions): Update. 2012-11-12 Tobias Burnus PR fortran/55272 * module.c (mio_array_spec): Correctly handle coarray scalars. 2012-11-07 Tobias Schlüter PR fortran/51727 * module.c (sorted_pointer_info): New. (gfc_get_sorted_pointer_info): New. (free_sorted_pointer_info_tree): New. (compare_sorted_pointer_info): New. (find_symbols_to_write): New. (write_symbol1_recursion): New. (write_symbol1): Collect symbols that need writing, output in order. (write_generic): Traverse tree in order. 2012-11-07 Manuel López-Ibáñez PR c/53063 * options.c (set_Wall): Do not set warn_switch here. 2012-11-06 Janus Weil PR fortran/54917 * target-memory.c (gfc_target_expr_size,gfc_target_interpret_expr): Handle BT_CLASS. * trans-intrinsic.c (gfc_conv_intrinsic_transfer): Add support for polymorphic arguments. 2012-11-04 Janus Weil PR fortran/55199 * primary.c (gfc_match_varspec): Clear typespec if it cannot be determined at this point. 2012-10-31 Janus Weil PR fortran/53718 * trans.h (GFC_DECL_PUSH_TOPLEVEL): Removed. * trans-decl.c (gfc_get_symbol_decl,gfc_generate_function_code): Remove GFC_DECL_PUSH_TOPLEVEL. (build_function_decl): Do not push __copy procedure to toplevel. 2012-10-31 Tobias Burnus PR fortran/55134 * trans-array.c (gfc_conv_array_parameter): Regard AS_DEFERRED as array with descriptor. 2012-10-28 Tobias Burnus PR fortran/54958 * gfortran.h (gfc_resolve_iterator_expr, gfc_check_vardef_context): Update prototype. * expr.c (gfc_check_vardef_context): Add own_scope argument and honour it. * resolve.c (gfc_resolve_iterator_expr): Add own_scope argument and honour it. (resolve_deallocate_expr, resolve_allocate_expr, resolve_data_variables, resolve_transfer resolve_lock_unlock, resolve_code): Update calls. * array.c (resolve_array_list): Ditto. * check.c (gfc_check_atomic_def, gfc_check_atomic_ref): Ditto. * interface.c (compare_actual_formal): Ditto. * intrinsic.c (check_arglist): Ditto. * io.c (resolve_tag, gfc_resolve_dt, gfc_resolve_inquire): Ditto. 2012-10-27 Thomas Koenig * trans.c (gfc_allocate_allocatable): Revert accidental commit. 2012-10-24 Janus Weil PR fortran/55037 * trans-expr.c (gfc_conv_procedure_call): Move a piece of code and remove an assert. 2012-10-21 Tobias Burnus PR fortran/54725 * Make-lang.in (CFLAGS-cpp.o): Use TARGET_SYSTEM_ROOT_DEFINE. * cpp.o (gfc_cpp_init_options): Use it for setting gfc_cpp_option.sysroot. 2012-10-21 Thomas König PR fortran/54465 * lang.opt (Wextra): Add. * invoke.texi: Document that -Wc-binding-type, -Wconversion and -Wline-truncation are implied by -Wall. Document that -Wcompare-reals is implied by -Wextra. Document -Wextra. * options.c (set_Wextra): New function. (gfc_handle_option): Handle -Wextra. 2012-10-19 Janus Weil PR fortran/54224 * trans-expr.c (conv_function_val): Set TREE_USED. 2012-10-18 Tobias Burnus PR fortran/54884 * resolve.c (specification_expr): Change to bool. (resolve_formal_arglist, resolve_symbol): Set specification_expr to true before resolving the array spec. (resolve_variable, resolve_charlen, resolve_fl_variable): Properly reset specification_expr. (resolve_function): Set public_use when used in a specification expr. 2012-10-16 Tobias Burnus PR fortran/50981 PR fortran/54618 * trans.h (gfc_conv_derived_to_class, gfc_conv_class_to_class): Update prototype. * trans-stmt.c (trans_associate_var,gfc_trans_allocate): Update calls to those functions. * trans-expr.c (gfc_conv_derived_to_class, gfc_conv_class_to_class, gfc_conv_expr_present): Handle absent polymorphic arguments. (class_scalar_coarray_to_class): New function. (gfc_conv_procedure_call): Update calls. 2012-10-12 Janus Weil PR fortran/40453 * interface.c (check_dummy_characteristics): Recursively check dummy procedures. 2012-10-11 Janus Weil PR fortran/54784 * trans-stmt.c (gfc_trans_allocate): Correctly determine the reference to the _data component for polymorphic allocation with SOURCE. 2012-10-06 Janus Weil PR fortran/54832 * resolve.c (resolve_fl_derived0): Correctly copy the 'class_ok' attribute for proc-ptr components with RESULT variable. 2012-10-06 Janus Weil PR fortran/45521 * interface.c (generic_correspondence): Implement additional distinguishability criteria of F08. (compare_actual_formal): Reject data object as actual argument for procedure formal argument. 2012-10-04 Tobias Burnus * expr.c (scalarize_intrinsic_call): Plug memory leak. * frontend-passes.c (gcc_assert): Extend assert. * interface.c (gfc_compare_derived_types): Fix comparison. (gfc_check_operator_interface): Move up to make this error message reachable. (get_sym_storage_size): Remove always-true checks. * io.c (format_lex): Add comment. (gfc_free_wait): Free memory. * match.c (gfc_match_select_type): Ditto. * matchexpr.c (match_level_3): Ditto. * primary.c (match_string_constant): Ditto. (match_actual_arg): Check return value. * resolve.c (gfc_resolve_substring_charlen, resolve_typebound_generic_call, resolve_typebound_function, resolve_typebound_subroutine): Free memory. * trans-types.c (gfc_get_derived_type): Remove always-true check. 2012-10-02 Janus Weil PR fortran/54778 * interface.c (matching_typebound_op): Check for 'class_ok' attribute. 2012-09-30 Janus Weil PR fortran/54667 * intrinsic.texi (C_F_POINTER): Fix description. * resolve.c (gfc_iso_c_sub_interface): Add a check for FPTR argument of C_F_POINTER. Modify two error messages. Cleanup. 2012-09-24 Tobias Burnus PR fortran/54618 PR fortran/54690 * trans-expr.c (gfc_conv_procedure_call): Fix INTENT(OUT) handling for allocatable BT_CLASS. 2012-09-24 Lawrence Crowl * trans-expr.c (gfc_conv_cst_int_power): Change to new double_int API. * target-memory.c (gfc_interpret_logical): Likewise. 2012-09-23 Tobias Burnus * parse.c (parse_derived): Don't set attr.alloc_comp for pointer components with allocatable subcomps. PR fortran/54599 * resolve.c (resolve_fl_namelist): Remove superfluous NULL check. * simplify.c (simplify_min_max): Remove unreachable code. * trans-array.c (gfc_trans_create_temp_array): Change a condition into an assert. PR fortran/54618 * trans-expr.c (gfc_trans_class_init_assign): Guard re-setting of the _data by gfc_conv_expr_present. (gfc_conv_procedure_call): Fix INTENT(OUT) handling for allocatable BT_CLASS. 2012-09-22 Thomas König PR fortran/54599 * dependency.c (gfc_dep_compare_expr): Clarify logic, remove dead code. 2012-09-20 Tobias Burnus PR fortran/54599 * cpp.c (print_line): Properly handle extern C. 2012-09-20 Martin Jambor * trans-decl.c (gfc_get_extern_function_decl): Push NULL cfun. Do not set and restore current_function_decl. (gfc_init_coarray_decl): Do not set and restore current_function_decl. 2012-09-17 Tobias Burnus PR fortran/54608 * simplify.c (gfc_simplify_scan, gfc_simplify_verify): Fix handling of BACK=variable. 2012-09-17 Janus Weil PR fortran/54285 * expr.c (gfc_check_pointer_assign): Correctly handle procedure pointers as function results. * primary.c (gfc_match_varspec): Allow to call a PPC with proc-ptr result. 2012-09-17 Tobias Burnus PR fortran/54603 * trans-expr.c (gfc_trans_subcomponent_assign): Handle proc-pointer components. 2012-09-17 Tobias Burnus PR fortran/54599 * error.c (error_print): Move increment out of the assert. * interface.c (gfc_compare_derived_types): Add assert. (get_expr_storage_size): Remove always-true logical condition. * resolve.c (resolve_allocate_expr): Fix looping logic. * target-memory.c (gfc_target_expr_size): Add assert. 2012-09-16 Janus Weil PR fortran/54594 * resolve.c (get_checked_tb_operator_target): Add a reference to the relevant quote from the F08 standard. 2012-09-16 Janus Weil PR fortran/54594 * interface.c (compare_type_rank): Handle CLASS arrays. 2012-09-16 Janus Weil PR fortran/54387 * expr.c (gfc_check_pointer_assign): Check for result of embracing function. 2012-09-16 Tobias Burnus * trans-decl.c (gfc_generate_function_code): Fix gfc_option.coarray check. * trans-stmt.c (compute_inner_temp_size): Fix handling of gfc_option.rtcheck. 2012-09-16 Mikael Morin * symbol.c (gfc_undo_symbols): Correctly undo namelists. 2012-09-15 Tobias Burnus * trans-io.c (gfc_trans_transfer): Add an assert. 2012-09-15 Tobias Burnus * arith.c (arith_power): Call gfc_free_expr in case of error. * array.c (gfc_match_array_constructor): Initialize variable. (gfc_resolve_character_array_constructor): Remove superfluous check. (gfc_array_dimen_size): Add assert. * check.c (numeric_check): Fix implicit typing. * class.c (gfc_build_class_symbol): Add assert. (finalize_component): Free memory. * dump-parse-tree.c (show_namespace): Add assert. * trans-io.c (transfer_namelist_element, transfer_expr): Avoid memory leakage. (gfc_trans_transfer): Add assert. * trans.c (gfc_trans_runtime_check): Call va_end 2012-09-15 Tobias Burnus * match.c (lock_unlock_statement, sync_statement): Fix potential double freeing. (sync_statement): Remove unreachable code. * simplify.c (gfc_simplify_bessel_n2): Avoid double freeing. (gfc_simplify_repeat): Remove bogus code. * target-memory.h (gfc_target_encode_expr): Update prototype. * target-memory.c (gfc_target_encode_expr, encode_array, encode_derived): Return unsigned HOST_WIDE_INT. (gfc_target_interpret_expr): Add assert. (gfc_merge_initializers): Fix "== 0" check for mpz_t. * symbol.c (gfc_get_typebound_proc): Add assert. (gfc_merge_initializers): Remove unreachable check. 2012-09-13 Tobias Burnus PR fortran/54556 * resolve.c (resolve_formal_arglist): Allow VALUE arguments with implicit_pure. (gfc_impure_variable): Don't check gfc_pure such that the function also works for gfc_implicit_pure procedures. 2012-09-12 Tobias Burnus PR fortran/54225 PR fortran/53306 * array.c (match_subscript, gfc_match_array_ref): Fix diagnostic of coarray's '*'. 2012-09-07 Mikael Morin PR fortran/54208 * simplify.c (simplify_bound_dim): Resolve array spec before proceeding with simplification. 2012-09-06 Tobias Burnus PR fortran/54463 * trans-intrinsic.c (gfc_conv_intrinsic_funcall): Fix matmul call to BLAS if the default-kind has been promoted. 2012-09-05 Tobias Burnus PR fortran/54462 * symbol.c (gfc_undo_symbols): Avoid NULL pointer dereference. 2012-09-04 Janus Weil PR fortran/54435 PR fortran/54443 * match.c (gfc_match_select_type): Make sure to only access CLASS_DATA for BT_CLASS. 2012-09-03 Tobias Burnus PR fortran/54467 * class.c (gfc_find_derived_vtab): Fix disabling of _final by continuing to generate normal type-bound procedures. 2012-09-03 Tobias Burnus * class.c (gfc_find_derived_vtab): Disable ABI-breaking generation of the "_final" subroutine for now. 2012-09-03 Tobias Burnus * class.c (finalize_component): Fixes to the comment. 2012-09-03 Alessandro Fanfarillo Tobias Burnus PR fortran/37336 * gfortran.h (symbol_attribute): Add artificial. * module.c (mio_symbol_attribute): Handle attr.artificial * class.c (gfc_build_class_symbol): Defer creation of the vtab if the DT has finalizers, mark generated symbols as attr.artificial. (has_finalizer_component, finalize_component, finalization_scalarizer, generate_finalization_wrapper): New static functions. (gfc_find_derived_vtab): Add _final component and call generate_finalization_wrapper. * dump-parse-tree.c (show_f2k_derived): Use resolved proc_tree->n.sym rather than unresolved proc_sym. (show_attr): Handle attr.artificial. * resolve.c (gfc_resolve_finalizers): Ensure that the vtab exists. (resolve_fl_derived): Resolve finalizers before generating the vtab. (resolve_symbol): Also allow assumed-rank arrays with CONTIGUOUS; skip artificial symbols. (resolve_fl_derived0): Skip artificial symbols. 2012-09-02 Tobias Burnus PR fortran/54426 * symbol.c (find_common_symtree): New function. (gfc_undo_symbols): Use it; free common_head if needed. 2012-08-28 Tobias Burnus PR fortran/54389 * trans-decl.c (gfc_get_extern_function_decl, build_function_decl): Don't mark impure elemental functions as DECL_PURE_P and honour implicit_pure. 2012-08-28 Tobias Burnus PR fortran/54382 * error.c (show_locus): Avoid out of bound access. 2012-08-28 Tobias Burnus PR fortran/54384 * decl.c (match_data_constant): Add missing gfc_free_expr. (top_val_list): Remove always-true condition. * data.c (get_array_index, create_character_initializer): Free temporary expressions. (gfc_assign_data_value): Free expression when aborting. 2012-08-28 Tobias Burnus PR fortran/54384 * symbol.c (gfc_copy_formal_args): Set also sym->formal_ns. 2012-08-27 Tobias Burnus PR fortran/54384 * resolve.c (gfc_resolve_character_operator): Free temporary variables. * trans-expr.c (gfc_conv_statement_function): Ditto. 2012-08-27 Tobias Burnus PR fortran/54384 * dependency.c (check_section_vs_section): Use gfc_free_expr instead of free. * trans-intrinsic.c (conv_generic_with_optional_char_arg): Use gfc_free_symbol instead of free. 2012-08-27 Tobias Burnus PR fortran/54384 * trans-expr.c (gfc_trans_arrayfunc_assign): Free se.ss and loop. 2012-08-27 Tobias Burnus PR fortran/41093 * gfortran.h (gfc_common_head): Add "int refs". * match.c (gfc_match_common): Increment refs. * resolve.c (resolve_symbol): Only increment formal_ns->refs if formal_ns is not sym->ns. * symbol.c (gfc_free_symbol): Only free formal_ns if if formal_ns is not sym->ns. Free common_block if refs is one. (gfc_release_symbol): Release formal_ns only if the symbol is not ENTRY of a module. * decl.c (get_proc_name): Don't increment gfc_current_ns->refs. * parse.c (parse_interface): Incement proc_unit->refs++ for proc-pointer result variables. * module.c (mio_symbol): Don't increase sym->refs for its use in sym->formal_ns->proc_name. 2012-08-27 Tobias Burnus PR fortran/54370 * trans-stmt.c (gfc_trans_do_while): Don't change the logical kind for negation of the condition. 2012-08-27 Tobias Burnus * options.c (set_Wall): Don't set for -Wcompare-reals. * invoke.texi (-Wall, -Wcompare-reals): -Wall no longer implies -Wcompare-reals. 2012-08-24 Simon Baldwin * lang.opt (-cpp=): Mark flag NoDWARFRecord. 2012-08-23 Tobias Burnus PR fortran/54350 * trans-array.c (free_ss_info): Free data.array.subscript. (gfc_free_ss): No longer free data.array.subscript. (walk_coarray): New function, moved from trans-intrinsic.c (gfc_conv_expr_descriptor): Walk array descriptor instead of taking passed "ss". (get_array_ctor_all_strlen, gfc_add_loop_ss_code, gfc_conv_array_parameter): Update call and cleanup ss handling. * trans-array.h (gfc_conv_expr_descriptor, gfc_conv_array_parameter): Update prototype. * trans-expr.c (gfc_conv_derived_to_class, conv_isocbinding_procedure, gfc_conv_procedure_call, gfc_trans_alloc_subarray_assign, gfc_trans_subcomponent_assign, gfc_trans_pointer_assignment, gfc_trans_arrayfunc_assign): Update call to gfc_conv_expr_descriptor and gfc_conv_array_parameter, and clean up. * trans-intrinsic.c (walk_coarray): Moved to trans-array.c (trans_this_image, trans_image_index, gfc_conv_intrinsic_rank gfc_conv_intrinsic_bound, gfc_conv_intrinsic_cobound, gfc_conv_intrinsic_len, gfc_conv_intrinsic_size, gfc_conv_intrinsic_sizeof, gfc_conv_intrinsic_storage_size, gfc_conv_intrinsic_transfer, gfc_conv_allocated, gfc_conv_associated, gfc_conv_intrinsic_loc, conv_intrinsic_move_alloc): Update calls. * trans-io.c (gfc_convert_array_to_string, set_internal_unit, gfc_trans_transfer): Ditto. * trans-stmt.c (gfc_conv_elemental_dependencies, gfc_trans_sync, trans_associate_var, gfc_trans_pointer_assign_need_temp): Ditto. 2012-08-23 Jakub Jelinek * trans-decl.c (trans_function_start, generate_coarray_init, create_main_function, gfc_generate_constructors): Call allocate_struct_function instead of init_function_start. 2012-08-22 Tobias Burnus * trans-expr.c (gfc_copy_class_to_class, gfc_trans_arrayfunc_assign): Free loop and ss data. * trans-intrinsic.c (gfc_trans_arrayfunc_assign): Free ss data. 2012-08-21 Tobias Burnus * parse.c (parse_contained): Include EXEC_END_PROCEDURE in ns->code to make sure the gfc_code is freed. 2012-08-20 Tobias Burnus PR fortran/54301 * expr.c (gfc_check_pointer_assign): Warn when a pointer, which is a function result, might outlive its target. 2012-08-20 Tobias Burnus PR fortran/54301 * expr.c (gfc_check_pointer_assign): Warn when the pointer might outlive its target. * gfortran.h (struct gfc_option_t): Add warn_target_lifetime. * options.c (gfc_init_options, set_wall, gfc_handle_option): handle it. * invoke.texi (-Wtarget-lifetime): Document it. (-Wall): Implied it. * lang.opt (-Wtarget-lifetime): New flag. 2012-08-19 Thomas König PR fortran/54298 * gfortran.h (struct gfc_option_t): Add warn_compare_reals. * lang.opt: Add Wcompare-reals. * invoke.texi: Document -Wcompare-reals. * resolve.c (resolve_operator): If -Wcompare-reals is in effect, warn about equality/inequality comparisions for REAL and COMPLEX. * options.c (gfc_init_options): Set warn_compare_reals. (set_Wall): Include warn_compare_reals in Wall. (gfc_handle_option): Handle Wcompare_reals. 2012-08-17 Jakub Jelinek * array.c (gfc_match_array_ref): Fix up memset arguments. 2012-08-16 Diego Novillo Revert PR bootstrap/54281 * gfortran.h: Do not include gmp.h. 2012-08-16 Diego Novillo PR bootstrap/54281 * gfortran.h: Do not include gmp.h. 2012-08-15 Janus Weil PR fortran/54243 PR fortran/54244 * resolve.c (check_typebound_baseobject): Check for class_ok attribute. (resolve_procedure_interface,resolve_fl_derived0): Copy class_ok attribute. 2012-08-14 Mikael Morin PR fortran/47586 * trans-expr.c (expr_is_variable): Handle regular, procedure pointer, and typebound functions returning a data pointer. 2012-08-14 Mikael Morin * decl.c (match_ppc_decl): Copy the procedure interface's symbol as procedure interface's result. 2012-08-14 Mikael Morin * trans-expr.c (gfc_trans_scalar_assign): Rename argument, extend comment. 2012-08-14 Mikael Morin * gfortran.h (gfc_get_proc_ptr_comp): New prototype. (gfc_is_proc_ptr_comp): Update prototype. * expr.c (gfc_get_proc_ptr_comp): New function based on the old gfc_is_proc_ptr_comp. (gfc_is_proc_ptr_comp): Call gfc_get_proc_ptr_comp. (gfc_specification_expr, gfc_check_pointer_assign): Use gfc_get_proc_ptr_comp. * trans-array.c (gfc_walk_function_expr): Likewise. * resolve.c (resolve_structure_cons, update_ppc_arglist, resolve_ppc_call, resolve_expr_ppc): Likewise. (resolve_function): Update call to gfc_is_proc_ptr_comp. * dump-parse-tree.c (show_expr): Likewise. * interface.c (compare_actual_formal): Likewise. * match.c (gfc_match_pointer_assignment): Likewise. * primary.c (gfc_match_varspec): Likewise. * trans-io.c (gfc_trans_transfer): Likewise. * trans-expr.c (gfc_conv_variable, conv_function_val, conv_isocbinding_procedure, gfc_conv_procedure_call, gfc_trans_pointer_assignment): Likewise. (gfc_conv_procedure_call, gfc_trans_array_func_assign): Use gfc_get_proc_ptr_comp. 2012-08-14 Tobias Burnus PR fortran/40881 * error.c (gfc_notify_std): Reset cur_error_buffer->flag flag when the error/warning has been printed. * gfortran.h (gfc_sl_type): Add ST_LABEL_DO_TARGET. * match.c (gfc_match_do): Use ST_LABEL_DO_TARGET. * parse.c (check_statement_label): Use ST_LABEL_DO_TARGET. (parse_executable): Add obsolescence check for DATA. * resolve.c (resolve_branch): Handle ST_LABEL_DO_TARGET. * symbol.c (gfc_define_st_label, gfc_reference_st_label): Add obsolescence diagnostics. * trans-stmt.c (gfc_trans_label_assign): Handle ST_LABEL_DO_TARGET. 2012-08-14 Tobias Burnus PR fortran/54234 * check.c (gfc_check_cmplx): Add -Wconversion warning when converting higher-precision REAL to default-precision CMPLX without kind= parameter. 2012-08-12 Tobias Burnus PR fortran/54221 * trans-decl.c (gfc_finish_var_decl, build_function_decl): Fix setting private module vars/procs as TREE_PUBLIC(...) = 0. 2012-08-09 Tobias Burnus PR fortran/54199 * intrinsic.c (gfc_warn_intrinsic_shadow): Better warning for internal procedures. 2012-08-06 Janus Weil PR fortran/35831 * interface.c (check_result_characteristics): New function, which checks the characteristics of function results. (gfc_compare_interfaces,gfc_check_typebound_override): Call it. 2012-08-02 Thomas König PR fortran/54033 * scanner.c (add_path_to_list): New argument warn. Don't warn if it is true. (gfc_add_include_path): Warn if directory is missing. (gfc_add_intrinsic_modules_path): Do not warn if directory is missing. * optinons.c (gfc_handle_option): Do not add directory for intrinsic modules to normal include path. 2012-08-03 Mikael Morin PR fortran/54166 * trans-array.c (set_loop_bounds): Access specinfo using spec_dim. 2012-08-02 Mikael Morin PR fortran/48820 * trans-array.c (gfc_conv_ss_startstride): Set the intrinsic result's lower and upper bounds according to the rank. (set_loop_bounds): Set the loop upper bound in the intrinsic case. 2012-08-02 Mikael Morin * trans-array.c (set_loop_bounds): Allow non-array-section to be chosen using the stride and lower bound criteria. 2012-08-02 Mikael Morin * trans-array.c (set_loop_bounds): Remove useless dimension check. Don't update loopspec if it would loose the wanted stride criterion. 2012-08-02 Mikael Morin * trans-array.h (gfc_conv_descriptor_rank): New prototype. * trans-array.c (gfc_conv_descriptor_rank): New function moved and renamed ... * trans-intrinsic.c (get_rank_from_desc): ... from this one. (gfc_conv_intrinsic_rank, gfc_conv_intrinsic_bound, gfc_conv_associated): Also rename function calls. 2012-08-02 Mikael Morin * iresolve.c (resolve_bound, gfc_resolve_shape): Don't set the shape for assumed rank arrays. * simplify.c (gfc_simplify_shape): Don't try to simplify if the argument is assumed rank. 2012-08-02 Mikael Morin * array.c (gfc_copy_array_ref): Don't copy the offset field. * expr.c (find_array_section): Ignore the offset field. * trans-expr.c (gfc_find_interface_mapping_to_ref): Don't apply any interface mapping to the offset field. * gfortran.h (struct gfc_array_ref): Remove the offset field. 2012-08-02 Janus Weil PR fortran/54147 * resolve.c (check_proc_interface): New routine for PROCEDURE interface checks. (resolve_procedure_interface,resolve_typebound_procedure, resolve_fl_derived0): Call it. 2012-08-01 Thomas König PR fortran/54033 * scanner.c (add_path_to_list): Emit warning if an error occurs for an include path, if it is not present or if it is not a directory. Do not add the path in these cases. 2012-07-31 Janus Weil PR fortran/42418 * decl.c (match_procedure_interface): Move some checks to 'resolve_procedure_interface'. Set flavor if appropriate. * expr.c (gfc_check_pointer_assign): Cleanup of 'gfc_is_intrinsic'. * intrinsic.c (gfc_is_intrinsic): Additional checks for attributes which identify a procedure as being non-intrinsic. * resolve.c (resolve_procedure_interface): Checks moved here from 'match_procedure_interface'. Minor cleanup. (resolve_formal_arglist,resolve_symbol): Cleanup of 'resolve_procedure_interface' (resolve_actual_arglist,is_external_proc): Cleanup of 'gfc_is_intrinsic'. 2012-07-31 Janus Weil PR fortran/54134 * dependency.c (gfc_dep_compare_expr): Check if arguments are NULL. 2012-07-31 Tobias Burnus * interface.c (gfc_procedure_use): Return gfc_try instead of void. * gfortran.h (gfc_procedure_use): Update prototype. * resolve.c (gfc_iso_c_func_interface): Allow noninteroperable procedures for c_funloc for TS29113. * (gfc_iso_c_sub_interface): Ditto for c_f_procpointer. Add diagnostic for c_ptr vs. c_funptr for c_f_(proc)pointer. 2012-07-30 Janus Weil PR fortran/51081 * gfortran.h (gfc_resolve_intrinsic): Add prototype. * expr.c (gfc_check_pointer_assign): Set INTRINSIC attribute if needed. Check for invalid intrinsics. * primary.c (gfc_match_rvalue): Check for intrinsics came too early. Set procedure flavor if appropriate. * resolve.c (resolve_intrinsic): Renamed to gfc_resolve_intrinsic. (resolve_procedure_interface,resolve_procedure_expression, resolve_function,resolve_fl_derived0,resolve_symbol): Ditto. 2012-07-26 Mikael Morin PR fortran/44354 * trans-array.c (gfc_trans_array_constructor_value): Evaluate the iteration bounds before the inner variable shadows the outer. 2012-07-26 Mikael Morin PR fortran/44354 * array.c (sought_symbol): New variable. (expr_is_sought_symbol_ref, find_symbol_in_expr): New functions. (resolve_array_list): Check for references to the induction variable in the iteration bounds and issue a diagnostic if some are found. 2012-07-26 Alessandro Fanfarillo Tobias Burnus * module.c (mio_array_spec): Don't read as->lower for assumed-rank arrays. 2012-07-25 Tobias Burnus * trans-types.c (gfc_real16_is_float128): Fix spelling in a comment. * trans.h (struct gfc_array_info): Ditto. * gfortran.h (gfc_expr): Ditto. * simplify.c (gfc_count): Ditto. * trans-expr.c (gfc_copy_class_to_class, conv_parent_component_references, gfc_trans_pointer_assignment): Ditto. * expr.c (check_pointer_assign): Fix diagnostic spelling. * interface.c (compare_parameter): Ditto. * parse.c (use_modules, parse_associate): Ditto. * decl.c (match_char_length): Fix spelling of the an function argument. 2012-07-21 Tobias Burnus * iso-c-binding.def (C_PTRDIFF_T): New TS29113 parameter. * intrinsic.texi (ISO_C_BINDING): Document it. 2012-07-21 Tobias Burnus PR fortran/48820 * trans-intrinsic.c (gfc_conv_intrinsic_bound): Support lbound/ubound with dim= for assumed-rank arrays. * array.c (gfc_set_array_spec): Reject coarrays with assumed shape. * decl.c (merge_array_spec): Ditto. Return gfc_try. (match_attr_spec, match_attr_spec): Update call. 2012-07-21 Tobias Burnus * resolve.c (resolve_formal_arglist): Put variable declaration before the first assignment. 2012-07-21 Tobias Burnus * trans-expr.c (gfc_conv_derived_to_class): Fix argument passed to class_array_data_assign. 2012-07-20 Tobias Burnus * decl.c (gfc_verify_c_interop_param): Allow assumed-shape with -std=f2008ts. 2012-07-20 Tobias Burnus PR fortran/48820 * array.c (match_array_element_spec, gfc_match_array_spec, spec_size, gfc_array_dimen_size): Add support for assumed-rank arrays. * check.c (dim_rank_check): Ditto. * class.c (gfc_add_component_ref): Ditto. (gfc_build_class_symbol): Regard assumed-rank arrays as having GFC_MAX_DIMENSIONS. And build extra class container for a scalar pointer class. * decl.c (merge_array_spec): Add assert. * dump-parse-tree.c (show_array_spec): Add support for assumed-rank arrays. * expr.c (gfc_is_simply_contiguous): Ditto. * gfortran.h (array_type): Ditto. (gfc_array_spec, gfc_expr): Add comment to "rank" field. * interface.c (compare_type_rank, argument_rank_mismatch, compare_parameter, gfc_procedure_use): Ditto. (compare_actual_formal): Fix NULL() to optional-dummy handling for polymorphic dummies. * module.c (mio_typespec): Add support for assumed-rank arrays. * resolve.c (resolve_formal_arglist, resolve_actual_arglist, resolve_elemental_actual, resolve_global_procedure, expression_shape, resolve_variable, update_ppc_arglist, check_typebound_baseobject, gfc_resolve_expr, resolve_fl_var_and_proc, gfc_resolve_finalizers, resolve_typebound_procedure, resolve_symbol): Ditto. (assumed_type_expr_allowed): Remove static variable. (actual_arg, first_actual_arg): New static variables. * simplify.c (simplify_bound, gfc_simplify_range): Add support for assumed-rank arrays. * trans-array.c (gfc_conv_array_parameter): Ditto. (gfc_get_descriptor_dimension): New function, which returns the descriptor. (gfc_conv_descriptor_dimension): Use it. (gfc_conv_descriptor_stride_get, gfc_conv_array_parameter): Handle GFC_ARRAY_ASSUMED_RANK_CONT and AS_ASSUMED_RANK. * trans-array.h (gfc_get_descriptor_dimension): New prototype. * trans-decl. (gfc_build_dummy_array_decl, gfc_trans_deferred_vars, add_argument_checking): Add support for assumed-rank arrays. * trans-expr.c (gfc_conv_expr_present, gfc_conv_variable, gfc_conv_procedure_call): Ditto. (get_scalar_to_descriptor_type, class_array_data_assign, conv_scalar_to_descriptor): New static functions. (gfc_conv_derived_to_class, gfc_conv_class_to_class): Use them. * trans-intrinsic.c (get_rank_from_desc): New function. (gfc_conv_intrinsic_rank, gfc_conv_associated): Use it. * trans-types.c (gfc_array_descriptor_base_caf, gfc_array_descriptor_base): Make space for scalar array. (gfc_is_nodesc_array, gfc_is_nodesc_array, gfc_build_array_type, gfc_get_array_descriptor_base): Add support for assumed-rank arrays. * trans.h (gfc_array_kind): Add GFC_ARRAY_ASSUMED_RANK and GFC_ARRAY_ASSUMED_RANK_CONT. 2012-07-19 Tobias Burnus * trans-expr.c (gfc_conv_procedure_call): Fix handling of polymorphic arguments. * resolve.c (resolve_formal_arglist): Ditto, mark polymorphic assumed-shape arrays as such. 2012-07-19 Tobias Burnus * interface.c (compare_parameter, compare_actual_formal): Fix handling of polymorphic arguments. 2012-07-17 Janus Weil PR fortran/51081 * error.c (gfc_notify_std): Automatically print the relevant Fortran standard version. * arith.c (arith_power): Remove explicit standard reference string. * array.c (gfc_match_array_spec, gfc_match_array_constructor): Ditto. * check.c (gfc_check_a_p, gfc_check_besn, gfc_check_count, gfc_check_float, gfc_check_fn_rc2008, gfc_check_iand, gfc_check_ichar_iachar, gfc_check_ieor, gfc_check_index, gfc_check_ior, gfc_check_lbound, gfc_check_len_lentrim, check_rest, gfc_check_min_max, gfc_check_null, gfc_check_scan, gfc_check_selected_real_kind, gfc_check_shape, gfc_check_size, gfc_check_sngl, gfc_check_ubound, gfc_check_verify): Ditto. * data.c (gfc_assign_data_value): Ditto. * decl.c (var_element, char_len_param_value, match_char_length, gfc_verify_c_interop_param, match_pointer_init, variable_decl, gfc_match_decl_type_spec, gfc_match_import, match_attr_spec, gfc_match_prefix, gfc_match_suffix, match_ppc_decl, match_procedure_in_interface, gfc_match_procedure,gfc_match_entry, gfc_match_subroutine, gfc_match_end, gfc_match_codimension, gfc_match_protected, gfc_match_value, gfc_match_volatile, gfc_match_asynchronous, gfc_match_modproc, gfc_get_type_attr_spec, gfc_match_enum, match_procedure_in_type): Ditto. * expr.c (check_elemental, gfc_check_assign, gfc_check_pointer_assign): Ditto. * interface.c (gfc_match_abstract_interface, check_interface0): Ditto. * intrinsic.c (gfc_intrinsic_func_interface): Ditto. * io.c (format_lex, resolve_tag_format, resolve_tag, compare_to_allowed_values, gfc_match_open, gfc_match_rewind, gfc_resolve_dt, gfc_match_wait): Ditto. * match.c (match_arithmetic_if, gfc_match_if, gfc_match_critical, gfc_match_do, match_exit_cycle, gfc_match_pause, gfc_match_stop, gfc_match_lock, sync_statement, gfc_match_assign, gfc_match_goto, gfc_match_allocate, gfc_match_return, gfc_match_st_function): Ditto. * module.c (gfc_match_use, gfc_use_module): Ditto. * parse.c (parse_derived_contains, parse_block_construct, parse_associate, parse_contained): Ditto. * primary.c (match_hollerith_constant, match_boz_constant, match_real_constant, match_sym_complex_part, match_arg_list_function, build_actual_constructor, gfc_convert_to_structure_constructor): Ditto. * resolve.c (resolve_formal_arglist, resolve_entries, resolve_common_blocks, resolve_actual_arglist, gfc_resolve_index_1, gfc_resolve_iterator_expr, resolve_ordinary_assign, resolve_fl_var_and_proc, resolve_fl_variable_derived, resolve_fl_procedure, resolve_fl_derived0, resolve_fl_derived, resolve_fl_namelist, resolve_symbol, resolve_fntype): Ditto. * symbol.c (check_conflict, conflict, gfc_add_is_bind_c, gfc_add_extension, gfc_check_symbol_typed): Ditto. 2012-07-17 Tobias Burnus PR fortran/53985 * decl.c (gfc_verify_c_interop_param): Make warning conditional on -Wc-binding-type works and improve the wording. 2012-07-17 Tobias Burnus PR fortran/52101 * decl.c (match_char_length): Extra argument, show obsolenscent warning only if *length is used after the typename. (variable_decl, gfc_match_char_spec): Update call 2012-07-17 Tobias Burnus Steven G. Kargl PR fortran/49265 * decl.c (match_procedure_in_interface): Support "::" for Fortran 2008 and later. 2012-07-16 Thomas König PR fortran/53824 * resolve.c (resolve_allocate_deallocate): If both start indices are NULL, skip the test for equality. 2012-07-16 Steven Bosscher * f95-lang.c: Include dumpfile.h instead of tree-dump.h. * Make-lang.in: Fix dependencies. 2012-07-16 Janus Weil PR fortran/53956 * gfortran.h (gfc_copy_formal_args,gfc_copy_formal_args_ppc): Modified prototypes. * symbol.c (gfc_copy_formal_args): New argument 'if_src'. Copy if_source of dummy procedures. (gfc_copy_formal_args_ppc): Ditto. * resolve.c (resolve_procedure_interface): Pass IFSRC_DECL to gfc_copy_formal_args. (resolve_fl_derived0): Pass IFSRC_DECL to gfc_copy_formal_args_ppc. 2012-07-12 Tobias Burnus * trans-expr.c (conv_isocbinding_procedure): Generate c_f_pointer code inline. 2012-07-11 Steven Bosscher * trans.c: Do not include defaults.h. * trans-intrinsic.c: Likewise. 2012-07-08 Steven Bosscher * gfortran.h: Do not include coretypes.h here. Make it an error to include this before coretypes.h * openmp.c: Include coretypes.h. * interface.c: Likewise. * intrinsic.c: Likewise. * symbol.c: Likewise. * class.c: Likewise. * decl.c: Likewise. * matchexp.c: Likewise. * dump-parse-tree.c: Likewise. * array.c: Likewise. * constructor.c: Likewise. * error.c: Likewise. * data.c: Likewise. * expr.c: Likewise. * module.c: Likewise. * scanner.c: Likewise. * bbt.c: Likewise. * io.c: Likewise. * frontend-passes.c: Likewise. * resolve.c: Likewise. * st.c: Likewise. * target-memory.c: Likewise. * match.c: Likewise. * arith.c: Likewise. * parse.c: Likewise. * check.c: Likewise. * dependency.c: Likewise. * primary.c: Likewise. * misc.c: Likewise. * simplify.c: Likewise. 2012-07-05 Mikael Morin PR fortran/53732 * trans-array.c (gfc_add_loop_ss_code): Disable self recursive calls handling nested loop(s) if the subscript flag is true. 2012-07-05 Uros Bizjak PR fortran/53449 * parse.c (gfc_parse_file): Initialize errors_before. 2012-06-27 Janus Weil PR fortran/41951 PR fortran/49591 * interface.c (check_new_interface): Rename, add 'loc' argument, make non-static. (gfc_add_interface): Rename 'check_new_interface' * gfortran.h (gfc_check_new_interface): Add prototype. * resolve.c (resolve_typebound_intrinsic_op): Add typebound operator targets to non-typebound operator list. 2012-06-22 Janus Weil PR fortran/47710 PR fortran/53328 * interface.c (count_types_test, generic_correspondence, gfc_compare_interfaces): Ignore PASS arguments. (check_interface1, compare_parameter): Pass NULL arguments to gfc_compare_interfaces. * gfortran.h (gfc_compare_interfaces): Modified prototype. * expr.c (gfc_check_pointer_assign): Pass NULL arguments to gfc_compare_interfaces. * resolve.c (resolve_structure_cons): Ditto. (check_generic_tbp_ambiguity): Determine PASS arguments and pass them to gfc_compare_interfaces. 2012-06-21 Janne Blomqvist PR fortran/39654 * iresolve.c (gfc_resolve_ftell): Fix result kind and use new library function. 2012-06-18 Tobias Burnus * intrinsic.h (gfc_resolve_rank): New prototype. * intrinsic.c (add_functions): Use gfc_resolve_rank. * iresolve.c (add_functions): New function. * trans-intrinsic.c (gfc_conv_intrinsic_rank): New function. (gfc_conv_intrinsic_function): Call it. 2012-06-18 Tobias Burnus PR fortran/53692 * trans-array.c (set_loop_bounds): Don't scalarize via absent optional arrays. * resolve.c (resolve_elemental_actual): Don't stop resolving after printing a warning. 2012-06-18 Tobias Burnus PR fortran/53526 * trans-intrinsic.c (conv_intrinsic_move_alloc): Handle coarrays. 2012-06-18 Tobias Burnus PR fortran/53526 * check.c (gfc_check_move_alloc): Reject coindexed actual arguments and those with different corank. 2012-06-17 Tobias Burnus PR fortran/53691 PR fortran/53685 * check.c (gfc_calculate_transfer_sizes): Return if SIZE= is not constant or source-size cannot be determined. 2012-06-16 Tobias Burnus PR fortran/53642 PR fortran/45170 * frontend-passes.c (optimize_assignment): Don't remove RHS's trim when assigning to a deferred-length string. * trans-expr.c (gfc_trans_assignment_1): Ensure that the RHS string length is evaluated before the deferred-length LHS is reallocated. 2012-06-13 Tobias Burnus PR fortran/53643 * trans-decl.c (init_intent_out_dt): Fix for polymorphic arrays. * trans-array.c (structure_alloc_comps): Don't loop for scalar coarrays. 2012-06-13 Tobias Burnus PR fortran/53597 * decl.c (match_attr_spec): Only mark module variables as SAVE_IMPLICIT for Fortran 2008 and later. 2012-06-08 Janus Weil PR fortran/52552 * match.c (gfc_match_allocate): Modify order of checks. Change wording of error message. Remove FIXME note. * resolve.c (resolve_allocate_expr): Add a comment. 2012-06-07 Thomas König PR fortran/52861 * frontend-passes.c (optimize_assignment): Don't set the length of an empty string for deferred-length character variables. 2012-06-07 Thomas König PR fortran/52861 * frontend-passes.c (empty_string): Add prototype. (optimize_assignment): Set the length of an empty string constant to zero. 2012-06-04 Tobias Burnus PR fortran/50619 * resolve.c (build_default_init_expr): Don't initialize ASSOCIATE names. 2012-06-03 Alessandro Fanfarillo Tobias Burnus PR fortran/48831 * gfortran.h (gfc_check_init_expr): Add prototype declaration of function. * check.c (kind_check): Change if condition to use to gfc_check_init_expr. * expr.c (check_init_expr): Remove forward declaration and static keyword. Change name in gfc_check_init_expr. (scalarize_intrinsic_call, check_init_expr_arguments, check_inquiry, check_conversion, gfc_reduce_init_expr): Update call to gfc_check_init_expr. 2012-05-31 Steven Bosscher * trans-common.c: Do not include output.h. * trans-decl.c: Likewise. 2012-05-31 Tobias Burnus PR fortran/53521 * trans.c (gfc_deallocate_scalar_with_status): Properly handle the case size == 0. 2012-05-30 Tobias Burnus PR c/53502 * decl.c (match_attr_spec): Remove "typedef". 2012-05-30 Tobias Burnus * decl.c: Fix comment typos. * expr.c: Ditto. * frontend-passes.c: Ditto. * match.c: Ditto. * resolve.c: Ditto. * trans-array.c: Ditto. * trans-common.c: Ditto. * trans-intrinsic.c: Ditto. * trans-types.c: Ditto. 2012-05-23 Tobias Burnus PR fortran/51055 PR fortran/45170 * match.c (gfc_match_allocate): Set length_from_typespec for characters. * resolve.c (resolve_charlen): If set, don't check whether the len is a specification expression. 2012-05-22 Tobias Burnus PR fortran/53389 * trans-array.c (gfc_add_loop_ss_code): Don't evaluate expression, if ss->is_alloc_lhs is set. 2012-05-22 Dodji Seketeli PR c++/53322 * f95-lang.c (gfc_init_builtin_functions): Remove the unused typedef builtin_type. 2012-05-14 Janne Blomqvist PR fortran/52428 * gfortran.texi: Update _gfortran_set_options documentation. * invoke.texi: Remove runtime behavior description of -fno-range-check. * trans-decl.c (create_main_function): Don't pass the range-check setting to the library. 2012-05-14 Tobias Burnus PR fortran/49110 PR fortran/51055 PR fortran/53329 * trans-expr.c (gfc_trans_assignment_1): Fix allocation handling for assignment of function results to allocatable deferred-length strings. * trans-decl.c (gfc_create_string_length): For deferred-length module variables, include module name in the assembler name. (gfc_get_symbol_decl): Don't override the assembler name. 2012-05-14 Manuel López-Ibáñez PR 53063 * options.c (gfc_handle_option): Call lang-specific generated function. 2012-05-13 Alessandro Fanfarillo Tobias Burnus PR fortran/52158 PR fortran/45170 PR fortran/49430 * resolve.c (resolve_fl_derived0): Deferred character length procedure components are supported. * trans-expr.c (gfc_conv_procedure_call): Handle TBP with deferred-length results. (gfc_string_to_single_character): Add a new check to prevent NULL read. (gfc_conv_procedure_call): Remove unuseful checks on symbol's attributes. Add new checks to prevent NULL read on string length. 2012-05-12 Tobias Burnus PR fortran/49110 PR fortran/52843 * resolve.c (resolve_fl_procedure): Don't regard character(len=:) as character(*) in the diagnostic. 2012-05-11 Thomas Koenig PR fortran/52537 * frontend-passes.c (optimize_op): Change old-style comparison operators to new-style, simplify switch as a result. (empty_string): New function. (get_len_trim_call): New function. (optimize_comparison): If comparing to an empty string, use comparison of len_trim to zero. Use new-style comparison operators only. (optimize_trim): Use get_len_trim_call. 2012-05-11 Manuel López-Ibáñez PR 53063 * options.c: Include diagnostics.h instead of diagnostics-core.h. (set_Wall): Do not see warn_unused here. (gfc_handle_option): Set it here using handle_generated_option. 2012-05-08 Jan Hubicka * trans-common.c (create_common): Do not fake TREE_ASM_WRITTEN. * trans-decl.c (gfc_finish_cray_pointee): Likewise. 2012-05-07 Tobias Burnus PR fortran/53255 * resolve.c (resolve_typebound_static): Fix handling of overridden specific to generic operator. 2012-05-06 Tobias Burnus PR fortran/41587 * decl.c (build_struct): Don't ignore FAILED status. 2012-05-05 Paul Thomas PR fortran/41600 * trans-array.c (build_array_ref): New static function. (gfc_conv_array_ref, gfc_get_dataptr_offset): Call it. * trans-expr.c (gfc_get_vptr_from_expr): New function. (gfc_conv_derived_to_class): Add a new argument for a caller supplied vptr and use it if it is not NULL. (gfc_conv_procedure_call): Add NULL to call to above. symbol.c (gfc_is_associate_pointer): Return true if symbol is a class object. * trans-stmt.c (trans_associate_var): Handle class associate- names. * expr.c (gfc_get_variable_expr): Supply the array-spec if possible. * trans-types.c (gfc_typenode_for_spec): Set GFC_CLASS_TYPE_P for class types. * trans.h : Add prototypes for gfc_get_vptr_from_expr and gfc_conv_derived_to_class. Define GFC_CLASS_TYPE_P. * resolve.c (resolve_variable): For class arrays, ensure that the target expression has all the necessary _data references. (resolve_assoc_var): Throw a "not yet implemented" error for class array selectors that need a temporary. * match.c (copy_ts_from_selector_to_associate, select_derived_set_tmp, select_class_set_tmp): New functions. (select_type_set_tmp): Call one of last two new functions. (gfc_match_select_type): Copy_ts_from_selector_to_associate is called if associate-name is typed. PR fortran/53191 * resolve.c (resolve_ref): C614 applied to class expressions. 2012-05-05 Janne Blomqvist PR fortran/49010 PR fortran/24518 * intrinsic.texi (MOD, MODULO): Mention sign and magnitude of result. * simplify.c (gfc_simplify_mod): Use mpfr_fmod. (gfc_simplify_modulo): Likewise, use copysign to fix the result if zero. * trans-intrinsic.c (gfc_conv_intrinsic_mod): Remove fallback as builtin_fmod is always available. For modulo, call copysign to fix the result when signed zeros are enabled. 2012-05-05 Janne Blomqvist * gfortran.texi (GFORTRAN_TMPDIR): Rename to TMPDIR, explain algorithm for choosing temp directory. 2012-05-04 Tobias Burnus PR fortran/53175 * resolve.c (resolve_variable): Set public_used if a private module variable is used in a (public) specification expression. * trans-decl.c (gfc_finish_var_decl): Mark those TREE_PUBLIC. 2012-05-04 Tobias Burnus PR fortran/53111 * resolve.c (resolve_fl_derived): Fix -std=f95 diagnostic for generic vs. DT names. 2012-05-03 Tobias Burnus PR fortran/52864 * interface.c (compare_parameter_intent): Remove. (check_intents): Remove call, handle CLASS pointer. (compare_actual_formal): Handle CLASS pointer. 2012-04-30 Jan Hubicka * f95-lang.c (gfc_finish): Update comments. 2012-04-29 Thomas Koenig PR fortran/53148 * frontend-passes.c (create_var): If the statement has a label, put the label around the block. 2012-04-25 Tobias Burnus PR fortran/52196 * lang.opt (Wrealloc-lhs, Wrealloc-lhs-all): New flags. * gfortran.h (gfc_option_t): Add them. * options.c (gfc_init_options, gfc_post_options, gfc_handle_option): Handle them. * invoke.texi: Document them. * trans-expr.c (realloc_lhs_warning): New function. (gfc_trans_arrayfunc_assign, alloc_scalar_allocatable_for_assignment, gfc_trans_assignment_1): Use it. 2012-04-18 Steven Bosscher * trans-decl.c (gfc_trans_entry_master_switch): Build SWITCH_EXPR with NULL_TREE type instead of void_type_node. * trans-io.c (io_result): Likewise. * trans-stmt.c (gfc_trans_integer_select, gfc_trans_character_select): Likewise. 2012-04-16 Tobias Burnus PR fortran/52864 * expr.c (gfc_check_vardef_context): Fix assignment check for pointer components. 2012-04-16 Janus Weil PR fortran/52968 * class.c (gfc_build_class_symbol): Make sure the 'f2k_derived' namespace is present. 2012-04-15 Janus Weil PR fortran/51082 * trans-expr.c (gfc_conv_expr_reference): Check if the expression is a simple function call (or a more involved PPC reference). 2012-04-15 Tobias Burnus PR fortran/52916 PR fortran/40973 * gfortran.h (symbol_attribute): Add public_used. * interface.c (check_sym_interfaces, check_uop_interfaces, gfc_check_interfaces): Set it. * resolve.c (resolve_typebound_procedure): Ditto. * trans-decl.c (build_function_decl): Use it. 2012-04-11 Tobias Burnus PR fortran/52729 * resolve.c (resolve_symbol): Fix searching for parent NS decl. 2012-04-08 Tobias Burnus PR fortran/52751 * trans-decl.c (gfc_finish_var_decl): Don't set TREE_PUBLIC for PRIVATE module variables without C-binding label. PR fortran/40973 * trans-decl.c (build_function_decl): Ditto for procedures. 2012-04-07 Thomas Koenig PR fortran/52893 * frontend-passes.c: Keep track of wether we are in an implicit DO loop; do not do function elimination if we are. 2012-04-06 Thomas Koenig PR fortran/52668 * module.c: Only mark symbols as use_only if they have been imported via an only list. 2012-03-28 Paul Thomas Tobias Burnus PR fortran/52652 * match.c (gfc_match_allocate, gfc_match_deallocate): Change "not.. or" to "neither.. nor". * parse.c (decode_specification_statement): Correct error in chpice of matching function for "allocatable". 2012-03-23 Janne Blomqvist * gfortran.h (GFC_MAX_LINE): Remove unused macro. 2012-03-19 Francois-Xavier Coudert PR fortran/52559 * error.c (gfc_widechar_display_length): Consider tabs as one character wide, as they're displayed as spaces. (show_locus): Move tab handling to... (print_wide_char_into_buffer): ... here. 2012-03-17 Tobias Burnus PR fortran/52585 * trans-intrinsic.c (gfc_conv_associated): Fix handling of procpointer dummy arguments. 2012-03-16 Janne Blomqvist * trans-intrinsic.c (build_round_expr): Don't use BUILT_IN_IROUND for __float128. 2012-03-15 Janne Blomqvist * f95-lang.c (gfc_init_builtin_functions): Initialize BUILT_IN_IROUND. * mathbuiltins.def: Add IROUND. * trans-intrinsic.c (build_round_expr): Use BUILT_IN_IROUND if type size matches. (gfc_build_intrinsic_lib_fndecls): Build iround functions. 2012-03-12 Richard Guenther * f95-lang.c (builtin_type_for_size): Use gfc_type_for_size. 2012-03-12 Tobias Burnus PR fortran/52542 * decl.c (match_procedure_decl): If the interface is bind(C), the procedure is as well. 2012-03-10 Steven Bosscher * convert.c (convert): Fold BOOLEAN_TYPE types to the proper variant. 2012-03-09 Steven Bosscher * Make-lang.in (convert.o): Depend on convert.h. * convert.c: Header and comment cleanups. (gfc_thruthvalue_conversion): Rename static function to truthvalue_conversion. Do not use 'internal_error' from here, use 'gcc_unreachable' instead. (convert): Do not use 'error' for conversions to void, use 'gcc_unreachable' instead. Likewise for conversions to non-scalar types. Do not hanlde ENUMERAL_TYPE, the front end never creates them. Clean up #if 0 code. 2012-03-08 Tobias Burnus PR fortran/52469 * trans-types.c (gfc_get_function_type): Handle backend_decl of a procedure pointer. 2012-03-06 Steven Bosscher * f95-lang.c (yyerror, yylex): Remove. (clear_binding_stack): Remove, fold into its only user. (LANG_HOOKS_PRINT_IDENTIFIER): Do not re-define. (ridpointers): Remove. (gfc_eh_initialized_p): Make static. (gfc_truthvalue_conversion): Move to convert.c. (gfc_be_parse_file): Clear binding level stack when done. (gfc_print_identifier): Remove. (pushlevel): Remove ignored 'ignore' argument. Update all callers. (poplevel): Remove unused 'reverse' argument. Update all callers. (ggc_p): Remove. (gfc_builtin_function): Make static. Do not attempt to make RTL for builtin functions. * convert.c (gfc_truthvalue_conversion): Moved here from f95-lang.c, and made static. * trans.h (pushlevel, poplevel): Adjust prototypes. (gfc_truthvalue_conversion, gfc_builtin_function): Remove prototypes. * trans-openmp.c: Update calls to pushlevel and poplevel. * trans.c: Likewise. * trans-decl.c: Likewise. 2012-03-04 Mikael Morin PR fortran/50981 * gfortran.h (gfc_is_class_container_ref): New prototype. * class.c (gfc_is_class_container_ref): New function. * trans-expr.c (gfc_conv_procedure_call): Add a "_data" component reference to polymorphic actual arguments. 2012-03-04 Mikael Morin PR fortran/50981 * trans-expr.c (gfc_conv_procedure_call): Save se->ss's value. Handle the case of unallocated arrays passed to elemental procedures. 2012-03-04 Mikael Morin * trans.h (struct gfc_ss_info): Move can_be_null_ref component from the data::scalar subcomponent to the toplevel. * trans-expr.c (gfc_conv_expr): Update component reference. * trans-array.c (gfc_add_loop_ss_code): Ditto. (gfc_walk_elemental_function_args): Ditto. Move the conditional setting the field out of the scalar-only block. 2012-03-04 Francois-Xavier Coudert PR fortran/36160 * error.c (gfc_widechar_display_length, gfc_wide_display_length): New functions. (print_wide_char_into_buffer): Return length written. (show_locus): Fix locus displayed when wide characters are present. 2012-03-04 Francois-Xavier Coudert * module.c (gfc_use_module): Improve error message some more. 2012-03-03 Francois-Xavier Coudert PR fortran/52313 * module.c (gfc_use_module): Improve error messages. 2012-03-03 Tobias Burnus PR fortran/48820 * resolve.c (resolve_actual_arglist): Properly reset assumed_type_expr_allowed. 2012-03-03 Tobias Burnus * lang.opt (Wc-binding-type): New flag. * options.c (gfc_init_options, gfc_handle_option): Handle it. * invoke.texi (Wc-binding-type): Document it. * gfortran.h (gfc_option_t): Add warn_c_binding_type. * decl.c (verify_bind_c_sym): Handle -Wc-binding-type. * symbol.c (gfc_set_default_type, verify_bind_c_derived_type): Ditto. 2012-03-03 Tobias Burnus PR fortran/48820 * decl.c (gfc_match_decl_type_spec): Support type(*). (gfc_verify_c_interop): Allow type(*). * dump-parse-tree.c (show_typespec): Handle type(*). * expr.c (gfc_copy_expr): Ditto. * interface.c (compare_type_rank, compare_parameter, compare_actual_formal, gfc_procedure_use): Ditto. * libgfortran.h (bt): Add BT_ASSUMED. * misc.c (gfc_basic_typename, gfc_typename): Handle type(*). * module.c (bt_types): Ditto. * resolve.c (assumed_type_expr_allowed): New static variable. (resolve_actual_arglist, resolve_variable, resolve_symbol): Handle type(*). * trans-expr.c (gfc_conv_procedure_call): Ditto. * trans-types.c (gfc_typenode_for_spec, gfc_get_dtype): Ditto. 2012-03-02 Tobias Burnus PR fortran/52325 * primary.c (gfc_match_varspec): Add missing ;. 2012-03-02 Tobias Burnus PR fortran/52325 * primary.c (gfc_match_varspec): Add diagnostic for % with nonderived types. 2012-03-02 Tobias Burnus PR fortran/52270 * expr.c (gfc_check_vardef_context): Fix check for intent-in polymorphic pointer . * interface.c (compare_parameter): Allow passing TYPE to intent-in polymorphic pointer. 2012-03-02 Tobias Burnus PR fortran/52452 * resolve.c (resolve_intrinsic): Don't search for a function if we know that it is a subroutine. 2012-02-29 Paul Thomas PR fortran/52386 * trans-expr.c (fcncall_realloc_result): Dereference the descriptor if needed. 2012-02-22 Tobias Burnus PR fortran/52335 * io.c (gfc_match_open): Remove bogus F2003 DELIM= check. 2012-02-18 Tobias Burnus PR fortran/52295 * interface.c (check_interface0): Internal procs in generic interfaces are allowed in Fortran 2008. 2012-02-17 Tobias Burnus Roland Stigge PR translation/52273 * interface.c (compare_actual_formal): Fix typo "at at". 2012-02-17 Tobias Burnus * gfortran.texi (Q exponent-letter): Fix grammar. 2012-02-17 Tobias Burnus * gfortran.texi (Status): Fix typos. * invoke.texi (ffixed-form, fstack-arrays): Spell Fortran with a majuscule. 2012-02-17 Tobias Burnus Roland Stigge PR translation/52232 PR translation/52234 PR translation/52245 PR translation/52246 PR translation/52262 PR translation/52273 * io.c (gfc_match_open): Fix typo. * interface.c (compare_actual_formal): Ditto. * lang.opt (freal-4-real-8, freal-4-real-16, freal-8-real-16): Ditto. * match.c (alloc_opt_list, gfc_match_nullify): Ditto. * check.c (gfc_check_associated, gfc_check_null): Ditto. 2012-02-12 Mikael Morin PR fortran/50981 * trans-stmt.c (gfc_get_proc_ifc_for_call): New function. (gfc_trans_call): Use gfc_get_proc_ifc_for_call. 2012-02-12 Mikael Morin * trans-array.c (gfc_walk_elemental_function_args, gfc_walk_function_expr): Move call to gfc_get_proc_ifc_for_expr out of gfc_walk_elemental_function_args. * trans-stmt.c (gfc_trans_call): Ditto. * trans-array.h (gfc_get_proc_ifc_for_expr): New prototype. (gfc_walk_elemental_function_args): Update prototype. 2012-02-12 Mikael Morin * trans-array.c (gfc_get_proc_ifc_for_expr): New function. (gfc_walk_elemental_function_args): Move code to gfc_get_proc_ifc_for_expr and call it. 2012-02-08 Tobias Burnus PR fortran/52151 * trans-expr.c (fcncall_realloc_result): Set also the stride. 2012-02-07 Tobias Burnus PR fortran/51514 * trans-expr.c (gfc_conv_procedure_call): Add _data component for calls of scalar CLASS actuals to TYPE dummies. 2012-02-05 Thomas König PR fortran/48847 * trans-decl.c: Warn about unused dummy procedure arguments if -Wunused-dummy-argument is specified. Suppress middle-end warnings about procedure arguments. 2012-02-05 Paul Thomas * trans-array.c (gfc_array_allocate): Zero memory for all class array allocations. * trans-stmt.c (gfc_trans_allocate): Ditto for class scalars. PR fortran/52102 * trans-stmt.c (gfc_trans_allocate): Before correcting a class array reference, ensure that 'dataref' points to the _data component that is followed by the array reference.. 2012-02-02 Mikael Morin PR fortran/41587 PR fortran/46356 PR fortran/51754 PR fortran/50981 * class.c (insert_component_ref, class_data_ref_missing, gfc_fix_class_refs): New functions. * gfortran.h (gfc_fix_class_refs): New prototype. * trans-expr.c (gfc_conv_expr): Remove special case handling and call gfc_fix_class_refs instead. 2012-02-02 Paul Thomas PR fortran/52012 * trans-expr.c (fcncall_realloc_result): If variable shape is correct, retain the bounds, whatever they are. 2012-02-02 Tobias Burnus PR fortran/52093 * simplify.c (gfc_simplify_size): Handle INTRINSIC_PARENTHESES. 2012-02-01 Thomas König PR fortran/51958 * frontend-passes.c (convert_elseif): New function. (optimize_namespace): Call it. 2012-02-01 Tobias Burnus PR fortran/52024 * module.c (MOD_VERSION): Bump. (mio_typebound_proc): Read/write is_operator from/to the .mod file. 2012-02-01 Tobias Burnus PR fortran/52059 * trans-expr.c (gfc_conv_procedure_call): Add array ref only to variables. 2012-01-31 Tobias Burnus PR fortran/52024 * gfortran.h (gfc_tbp_generic): Store whether the generic is an operator. * decl.c (gfc_match_generic): Set that flag. * resolve.c (check_generic_tbp_ambiguity): Use it in the gfc_compare_interfaces check. 2012-01-31 Tobias Burnus PR fortran/52029 * class.c (gfc_find_derived_vtab): Mark _copy function as pure. 2012-01-31 Tobias Burnus PR fortran/52013 * class.c (get_unique_hashed_string): Adapt trim length. (gfc_build_class_symbol) Encode also corank in the container name. 2012-01-31 Paul Thomas PR fortran/52012 * trans-expr.c (fcncall_realloc_result): Correct calculation of result offset. 2012-01-29 Janne Blomqvist * module.c (pointer_info): Make true_name and module pointers rather than arrays, order pointers before other fields. (free_pi_tree): free true_name and module as well. (mio_read_string): Rename to read_string. (mio_write_string): Remove. (load_commons): Use read_string. (read_module): Use read_string rather than mio_internal_string. (write_blank_common): Call write_atom directly. (write_symbol): Likewise. 2012-01-29 Tobias Burnus PR fortran/41600 * expr.c (gfc_default_initializer): Convert the values if the type does not match. 2012-01-29 Tobias Burnus PR fortran/51972 * trans-array.c (structure_alloc_comps): Fix assignment of polymorphic components (polymorphic deep copying). 2012-01-29 Janne Blomqvist PR fortran/51808 * decl.c (set_binding_label): Make binding_label argument const. (curr_binding_label): Constify. * gfortran.h (gfc_symbol): Constify binding_label. (gfc_common_head): Likewise. (get_iso_c_sym): Likewise. * match.c (gfc_match_name_C): Constify buffer argument. * match.h (gfc_match_name_C): Likewise. * resolve.c (set_name_and_label): Constify binding_label argument. (gfc_iso_c_sub_interface): Constify binding_label variable. * symbol.c (get_iso_c_sym): Constify binding_label argument. 2012-01-29 Janne Blomqvist PR fortran/51808 * decl.c (set_binding_label): Move prototype from match.h to here. (curr_binding_label): Make a pointer rather than static array. (build_sym): Check sym->binding_label pointer rather than array, update set_binding_label call, handle curr_binding_label changes. (set_binding_label): Handle new curr_binding_label, dest_label double ptr, and sym->binding_label. (verify_bind_c_sym): Handle sym->binding_label being a pointer. (set_verify_bind_c_sym): Check sym->binding_label pointer rather than array, update set_binding_label call. (gfc_match_bind_c_stmt): Handle curr_binding_label change. (match_procedure_decl): Update set_binding_label call. (gfc_match_bind_c): Change binding_label to pointer, update gfc_match_name_C call. * gfortran.h (GFC_MAX_BINDING_LABEL_LEN): Remove macro. (gfc_symbol): Make binding_label a pointer. (gfc_common_head): Likewise. * match.c (gfc_match_name_C): Heap allocate bind(C) name. * match.h (gfc_match_name_C): Change prototype argument. (set_binding_label): Move prototype to decl.c. * module.c (struct pointer_info): Make binding_label a pointer. (free_pi_tree): Free unused binding_label. (mio_read_string): New function. (mio_write_string): New function. (load_commons): Redo reading of binding_label. (read_module): Likewise. (write_common_0): Change to write empty string instead of name if no binding_label. (write_blank_common): Write empty string for binding label. (write_symbol): Change to write empty string instead of name if no binding_label. * resolve.c (gfc_iso_c_func_interface): Don't set binding_label. (set_name_and_label): Make binding_label double pointer, use asprintf. (gfc_iso_c_sub_interface): Make binding_label a pointer. (resolve_bind_c_comms): Handle cases if gfc_common_head->binding_label is NULL. (gfc_verify_binding_labels): sym->binding_label is a pointer. * symbol.c (gfc_new_symbol): Rely on XCNEW zero init for binding_label. (gen_special_c_interop_ptr): Don't set binding label. (generate_isocbinding_symbol): Insert binding_label into symbol table. (get_iso_c_sym): Use pointer assignment instead of strcpy. * trans-common.c (gfc_sym_mangled_common_id): Handle com->binding_label being a pointer. * trans-decl.c (gfc_sym_mangled_identifier): Handle sym->binding_label being a pointer. (gfc_sym_mangled_function_id): Likewise. 2012-01-29 Tobias Burnus PR fortran/52038 * resolve.c (symbol_as): Remove unused, accidentally added function. 2012-01-28 Tobias Burnus PR fortran/51972 * trans-stmt.c (gfc_trans_allocate): Properly check whether we have a BT_CLASS which needs to be memset. 2012-01-27 Tobias Burnus PR fortran/52022 * trans-expr.c (gfc_conv_procedure_call): Fix passing of functions, which return allocatables. 2012-01-27 Tobias Burnus PR fortran/52016 * resolve.c (resolve_formal_arglist): Fix elemental constraint checks for polymorphic dummies also for pointers. 2012-01-27 Tobias Burnus PR fortran/51970 PR fortran/51977 * primary.c (gfc_match_varspec. gfc_match_rvalue): Set handle array spec for BT_CLASS. * expr.c (gfc_get_variable_expr, gfc_lval_expr_from_sym) * frontend-passes.c (create_var): Ditto. * resolve.c (resolve_actual_arglist, resolve_assoc_var): Ditto. * trans-decl.c (gfc_trans_deferred_vars): Use class_pointer instead of attr.pointer. (gfc_generate_function_code): Use CLASS_DATA (sym) for BT_CLASS. * trans-intrinsic.c (conv_intrinsic_move_alloc): Move assert. * trans-stmt.c (trans_associate_var): Ask for the descriptor. 2012-01-27 Tobias Burnus PR fortran/51953 * match.c (gfc_match_allocate): Allow more than allocate object with SOURCE=. 2012-01-27 Tobias Burnus PR fortran/52016 * resolve.c (resolve_formal_arglist): Fix elemental constraint checks for polymorphic dummies. 2012-01-27 Paul Thomas Tobias Burnus PR fortran/48705 PR fortran/51870 PR fortran/51943 PR fortran/51946 * trans-array.c (gfc_array_init_size): Add two extra arguments to convey the dynamic element size of a calls object and to return the number of elements that have been allocated. (gfc_array_allocate): Add the same arguments and use them to call gfc_array_init_size. Before the allocation dereference the data pointer, if necessary. Set the allocated array to zero if the class element size or expr3 are non-null. * trans-expr.c (gfc_conv_class_to_class): Give this function global scope. (get_class_array_ref): New function. (gfc_copy_class_to_class): New function. * trans-array.h : Update prototype for gfc_array_allocate. * trans-stmt.c (gfc_trans_allocate): For non-variable class STATUS expressions extract the class object and the dynamic element size. Use the latter to call gfc_array_allocate and the former for setting the vptr and, via gfc_copy_class_to_clasfc_cs, to copy to the allocated data. * trans.h : Prototypes for gfc_get_class_array_ref, gfc_copy_class_to_class and gfc_conv_class_to_class. 2012-01-25 Tobias Burnus * resolve.c (symbol_as): Check also for attr.class_ok. 2012-01-25 Tobias Burnus PR fortran/51995 * class.c (gfc_build_class_symbol): Fix invalid freeing issue with fclass->f2k_derived. 2012-01-25 Tobias Burnus PR fortran/51995 * class.c (gfc_build_class_symbol): Ensure that fclass->f2k_derived is set. 2012-01-25 Tobias Burnus PR fortran/51966 * resolve.c (resolve_structure_cons): Only create an array constructors for nonscalars. 2012-01-23 Tobias Burnus PR fortran/51948 * check.c (variable_check): Fix checking for variables and deeply nested BLOCKs. 2012-01-21 Tobias Burnus Steven G. Kargl PR fortran/50556 * symbol.c (check_conflict): namelist-group-name cannot have the SAVE attribute. 2012-01-21 Tobias Burnus PR fortran/51913 * interface.c (compare_parameter): Fix CLASS comparison. 2012-01-20 Tobias Burnus Janus Weil PR fortran/51056 * module.c (load_needed, read_module): Don't mark __vtab etc. as use_only. 2012-01-19 Tobias Burnus PR fortran/51904 * expr.c (gfc_build_intrinsic_call): Also set the symtree. 2012-01-18 Paul Thomas PR fortran/51634 * trans-expr.c (gfc_conv_procedure_call): Deallocate allocatable components of temporary class arguments. 2012-01-17 Tobias Burnus Janne Blomqvist PR fortran/51869 * trans-expr.c (alloc_scalar_allocatable_for_assignment): Nullify LHS after allocation, if it has allocatable components. * f95-lang.c (gfc_init_builtin_functions): Add BUILT_IN_CALLOC. 2012-01-16 Mikael Morin Tobias Burnus PR fortran/50981 * trans-array.c (gfc_walk_elemental_function_args): Fix passing of deallocated allocatables/pointers as absent argument. 2012-01-16 Tobias Burnus PR fortran/51809 * class.c (gfc_find_derived_vtab): Mark __vtab and __def_init as FL_VARIABLE not as FL_PARAMETER. * expr.c (gfc_simplify_expr): Remove special handling of __vtab. * resolve.c (resolve_values): Ditto. * trans-decl.c (gfc_get_symbol_decl): Mark __vtab and __def_init as TREE_READONLY. 2012-01-16 Zydrunas Gimbutas Andreas Kloeckner Steven G. Kargl PR fortran/48426 * gfortran.h (gfc_option_t): Add members flag_*_kind to store kind. * lang.opt: Add options -freal-4-real-8, -freal-4-real-10, -freal-4-real-16, -freal-8-real-4, -freal-8-real-10, -freal-8-real-16 and -finteger-4-integer-8. User-desired type conversion information. * decl.c (gfc_match_old_kind_spec,kind_expr): Type conversions in declaration parsing. * trans-types.c (gfc_init_kinds): User-specified type conversion checked for current backend. * primary.c (match_integer_constant,match_real_constant): Implement type conversion in constant parsing. * options.c (gfc_init_options,gfc_handle_option): Translate input options to flags in internal options data structure. * invoke.texi: Document new options. Re-order options in Options summary section. 2012-01-16 Paul Thomas * trans-array.c (gfc_trans_create_temp_array): In the case of a class array temporary, detect a null 'eltype' on entry and use 'initial' to provde the class reference and so, through the vtable, the element size for the dynamic type. * trans-stmt.c (gfc_conv_elemental_dependencies): For class expressions, set 'eltype' to null and pass the values via the 'initial' expression. 2012-01-14 Tobias Burnus PR fortran/51800 * resolve.c (build_default_init_expr): Also initialize nonconstant-length strings with -finit-character=. 2011-01-14 Tobias Burnus PR fortran/51816 * module.c (read_module): Don't make nonexisting intrinsic operators as found. (rename_list_remove_duplicate): New function. (gfc_use_modules): Use it. 2012-01-13 Paul Thomas PR fortran/48351 * trans-array.c (structure_alloc_comps): Suppress interative call to self, when current component is deallocated using gfc_trans_dealloc_allocated. * class.c (gfc_build_class_symbol): Copy the 'alloc_comp' attribute from the declared type to the class structure. 2012-01-13 Tobias Burnus PR fortran/51842 * fortran/trans-types.c (gfc_init_kinds): Use PTRDIFF_TYPE instead of a signed int of size POINTER_SIZE for gfc_index_integer_kind. 2012-01-12 Tobias Burnus PR fortran/36755 * intrinsic.texi (CHMOD): Extend a bit and remove statement that /bin/chmod is called. 2012-01-10 Gerald Pfeifer * gfortran.texi (Fortran 2003 Status): Fix grammar. 2012-01-10 Tobias Burnus PR fortran/51652 * resolve.c (resolve_allocate_expr): For non-deferred char lengths, check whether type-spec matches declaration. 2012-01-10 Tobias Burnus * resolve.c (resolve_ordinary_assign): Improve error wording. 2012-01-09 Paul Thomas PR fortran/51791 * interface.c (matching_typebound_op): Drill down through possible parentheses to obtain base expression. Do not test for 'class_ok' but, instead for the class structure components. * resolve.c (resolve_ordinary_assign): Extend error message for polymorphic assignment to advise checking for specific subroutine. PR fortran/51792 * resolve.c (resolve_typebound_function): Restore 'static' to declaration. 2012-01-09 Mikael Morin PR fortran/51758 * trans-array.c (gfc_walk_elemental_function_args): Skip over NULL() actual arguments. 2012-01-09 Tobias Burnus * gfortran.texi: Bump copyright year. (Fortran 2003 Status): Update polymorphism item, add item for generic interface with DT name. 2012-01-09 Tobias Burnus PR fortran/51578 * gfortran.h (gfc_use_list): * match.h (gfc_use_module): Rename to ... (gfc_use_modules): ... this. * module.c (use_locus, specified_nonint, specified_int): Remove global variable. (module_name): Change type to const char*, used with gfc_get_string. (module_list): New global variable. (free_rename): Free argument not global var. (gfc_match_use): Save match to module_list. (load_generic_interfaces, read_module): Don't free symtree. (write_dt_extensions, gfc_dump_module): Fix module-name I/O due to the type change of module_name. (write_symbol0, write_generic): Optimize due to the type change. (import_iso_c_binding_module, use_iso_fortran_env_module): Use locus of rename->where. (gfc_use_module): Take module_list as argument. (gfc_use_modules): New function. (gfc_module_init_2, gfc_module_done_2): Init module_list, rename_list. * parse.c (last_was_use_stmt): New global variable. (use_modules): New function. (decode_specification_statement, decode_statement): Move USE match up and call use_modules. (next_free, next_fixed): Call use_modules. (accept_statement): Don't call gfc_module_use. 2012-01-06 Tobias Burnus * trans-openmp.c (gfc_omp_clause_dtor, gfc_trans_omp_array_reduction): Update call to gfc_trans_dealloc_allocated. * trans.c (gfc_allocate_using_malloc): Fix spacing. (gfc_allocate_allocatable): For gfc_allocate_using_lib, jump to label_finish when an error occurs. (gfc_deallocate_with_status): Call caf_deregister for -fcoarray=lib. * trans.h (gfc_allocate_allocatable, gfc_deallocate_with_status): Update prototype. (gfor_fndecl_caf_deregister): New tree symbol. * trans-expr.c (gfc_conv_procedure_call): Update gfc_deallocate_with_status and gfc_trans_dealloc_allocated calls. * trans-array.c (gfc_array_allocate, gfc_trans_dealloc_allocated, structure_alloc_comps, gfc_trans_deferred_array): Ditto. (gfc_array_deallocate): Handle coarrays with -fcoarray=lib. * trans-array.h (gfc_array_deallocate, gfc_array_allocate, gfc_trans_dealloc_allocated): Update prototypes. * trans-stmt.c (gfc_trans_sync): Fix indentation. (gfc_trans_allocate): Fix errmsg padding and label handling. (gfc_trans_deallocate): Ditto and handle -fcoarray=lib. * expr.c (gfc_is_coarray): Fix algorithm for BT_CLASS. * libgfortran.h (GFC_STAT_STOPPED_IMAGE): Use large value to avoid other stats accidentally matching this one. * trans-decl.c (gfor_fndecl_caf_deregister): New global var. (gfc_build_builtin_function_decls): Fix prototype decl of caf_register and add decl for caf_deregister. (gfc_trans_deferred_vars): Handle CAF vars with -fcoarrays=lib. * trans-intrinsic.c (conv_intrinsic_move_alloc): Update call to gfc_deallocate_with_status. 2012-01-05 Paul Thomas PR fortran/PR48946 * resolve.c (resolve_typebound_static): If the typebound procedure is 'deferred' try to find the correct specific procedure in the derived type operator space itself. 2012-01-04 Mikael Morin PR fortran/50981 * trans-array.h (gfc_walk_elemental_function_args): New argument. * trans-intrinsic.c (gfc_walk_intrinsic_function): Update call. * trans-stmt.c (gfc_trans_call): Ditto. * trans-array.c (gfc_walk_function_expr): Ditto. (gfc_walk_elemental_function_args): Get the dummy argument list if possible. Check that the dummy and the actual argument are both optional, and set can_be_null_ref accordingly. 2012-01-04 Mikael Morin PR fortran/50981 * trans.h (struct gfc_ss_info): New field data::scalar::can_be_null_ref * trans-array.c: If the reference can be NULL, save the reference instead of the value. * trans-expr.c (gfc_conv_expr): If we have saved a reference, dereference it. 2012-01-04 Mikael Morin * trans-expr.c (gfc_conv_expr): Move address taking... (gfc_conv_expr_reference): ... here. 2012-01-04 Thomas Koenig PR fortran/49693 * trans-common.c (create_common): Update copyright years. Mark variables as used to avoid warnings about unused variables in common blocks. 2012-01-03 Hans-Peter Nilsson * gfortran.h (struct gfc_expr): Add missing "struct" qualifier for member base_expr. 2012-01-02 Paul Thomas PR fortran/51529 * trans-array.c (gfc_array_allocate): Null allocated memory of newly allocted class arrays. PR fortran/46262 PR fortran/46328 PR fortran/51052 * interface.c(build_compcall_for_operator): Add a type to the expression. * trans-expr.c (conv_base_obj_fcn_val): New function. (gfc_conv_procedure_call): Use base_expr to detect non-variable base objects and, ensuring that there is a temporary variable, build up the typebound call using conv_base_obj_fcn_val. (gfc_trans_class_assign): Pick out class procedure pointer assignments and do the assignment with no further prcessing. (gfc_trans_class_array_init_assign, gfc_trans_class_init_assign gfc_trans_class_assign): Move to top of file. * gfortran.h : Add 'base_expr' field to gfc_expr. * resolve.c (get_declared_from_expr): Add 'types' argument to switch checking of derived types on or off. (resolve_typebound_generic_call): Set the new argument. (resolve_typebound_function, resolve_typebound_subroutine): Set 'types' argument for get_declared_from_expr appropriately. Identify base expression, if not a variable, in the argument list of class valued calls. Assign it to the 'base_expr' field of the final expression. Strip away all references after the last class reference. 2012-01-02 Tobias Burnus PR fortran/51682 * trans-intrinsic.c (trans_this_image, trans_image_index, trans_num_images, conv_intrinsic_cobound): Fold_convert the caf_num_images/caf_this_images variables to the correct int kind. 2012-01-01 Jakub Jelinek * gfortranspec.c (lang_specific_driver): Update copyright notice dates. Copyright (C) 2012 Free Software Foundation, Inc. Copying and distribution of this file, with or without modification, are permitted in any medium without royalty provided the copyright notice and this notice are preserved.