X-Git-Url: http://git.sourceforge.jp/view?p=pf3gnuchains%2Fgcc-fork.git;a=blobdiff_plain;f=gcc%2Ffortran%2FChangeLog;h=da2cc08106245711a560f047e2594888b77f584f;hp=a6904954f789c653b73fb576206b75c226d5428d;hb=f23886abacad045dae2b04895dddea4aaec2db1c;hpb=900c3ad8cdd727398c4e68e778816443fa1d9398 diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog index a6904954f78..da2cc081062 100644 --- a/gcc/fortran/ChangeLog +++ b/gcc/fortran/ChangeLog @@ -1,4 +1,1206 @@ -2005-01-25 Erik Edelmann +2006-03-22 Thomas Koenig + + PR fortran/19303 + * gfortran.h (gfc_option_t): Add record_marker. + * lang.opt: Add -frecord-marker=4 and -frecord-marker=8. + * trans-decl.c: Add gfor_fndecl_set_record_marker. + (gfc_build_builtin_function_decls): Set + gfor_fndecl_set_record_marker. + (gfc_generate_function_code): If we are in the main program + and -frecord-marker was provided, call set_record_marker. + * options.c (gfc_handle_option): Add handling for + -frecord-marker=4 and -frecord-marker=8. + * invoke.texi: Document -frecord-marker. + +2006-03-22 Paul Thomas + + PR fortran/17298 + * trans-intrinsic.c (gfc_conv_intrinsic_array_transfer): New + function to implement array valued TRANSFER intrinsic. + (gfc_conv_intrinsic_function): Call the new function if TRANSFER + and non-null se->ss. + (gfc_walk_intrinsic_function): Treat TRANSFER as one of the + special cases by calling gfc_walk_intrinsic_libfunc directly. + +2006-03-21 Toon Moene + + * options.c (gfc_init_options): Initialize + flag_argument_noalias to 3. + +2006-03-20 Thomas Koenig + + PR fortran/20935 + * iresolve.c (gfc_resolve_maxloc): If mask is scalar, + prefix the function name with an "s". If the mask is scalar + or if its kind is smaller than gfc_default_logical_kind, + coerce it to default kind. + (gfc_resolve_maxval): Likewise. + (gfc_resolve_minloc): Likewise. + (gfc_resolve_minval): Likewise. + (gfc_resolve_product): Likewise. + (gfc_resolve_sum): Likewise. + +2006-03-19 Paul Thomas + + PR fortran/26741 + *expr.c (external_spec_function): Permit elemental functions. + + PR fortran/26716 + *interface.c (compare_actual_formal): Detect call for procedure + usage and require rank checking, in this case, for assumed shape + and deferred shape arrays. + (gfc_procedure_use): Revert to pre-PR25070 call to + compare_actual_formal that does not require rank checking.. + +2006-03-16 Roger Sayle + + * gfortran.h (gfc_equiv_info): Add length field. + * trans-common.c (copy_equiv_list_to_ns): Set the length field. + * dependency.c (gfc_are_equivalenced_arrays): Use both the offset + and length fields to determine whether the two equivalenced symbols + overlap in memory. + +2006-03-14 Jerry DeLisle + + PR fortran/19101 + * gfortran.h: Add warn_ampersand. + * invoke.texi: Add documentation for new option. + * lang.opt: Add Wampersand. + * options.c (gfc_init_options): Initialize warn_ampersand. + (gfc_post_options): Set the warn if pedantic. + (set_Wall): Set warn_ampersand. + (gfc_handle_option: Add Wampersand for itself, -std=f95, and -std=f2003. + * scanner.c (gfc_next_char_literal): Add test for missing '&' in + continued character constant and give warning if missing. + +2006-03-14 Steven G. Kargl + + PR 18537 + * gfortran.h: Wrap Copyright line. + (gfc_option_t): add warn_tabs member. + * lang.opt: Update Coyright year. Add the Wtabs. + * invoke.texi: Document -Wtabs. + * scanner.c (gfc_gobble_whitespace): Use warn_tabs. Add linenum to + suppress multiple warnings. + (load_line): Use warn_tabs. Add linenum, current_line, seen_comment + to suppress multiple warnings. + * options.c (gfc_init_options): Initialize warn_tabs. + (set_Wall): set warn_tabs for -Wall. + (gfc_post_options): Adjust flag_tabs depending on -pedantic. + (gfc_handle_option): Process command-line option -W[no-]tabs + +2006-03-13 Paul Thomas + + PR fortran/25378 + * trans-intrinsic.c (gfc_conv_intrinsic_minmaxloc): Set the initial position to zero and + modify the condition for updating it, to implement the F2003 requirement for all(mask) + is false. + +2006-03-13 Jakub Jelinek + + * trans-openmp.c (gfc_trans_omp_variable): Handle references + to parent result. + * trans-expr.c (gfc_conv_variable): Remove useless setting + of parent_flag, formatting. + + * trans-decl.c (gfc_get_fake_result_decl): Re-add setting of + GFC_DECL_RESULT flag. + +2003-03-11 Roger Sayle + + * dependency.c (gfc_dep_compare_expr) : Allow unary and + binary operators to compare equal if their operands are equal. + : Allow "constant" intrinsic conversion functions + to compare equal, if their operands are equal. + +2006-03-11 Erik Edelmann + + * symbol.c (check_conflict): Allow allocatable function results, + except for elemental functions. + * trans-array.c (gfc_trans_allocate_temp_array): Rename to ... + (gfc_trans_create_temp_array): ... this, and add new argument + callee_alloc. + (gfc_trans_array_constructor, gfc_conv_loop_setup): Update call + to gfc_trans_allocate_temp_array. + * trans-array.h (gfc_trans_allocate_temp_array): Update prototype. + * trans-expr.c (gfc_conv_function_call): Use new arg of + gfc_trans_create_temp_array avoid pre-allocation of temporary + result variables of pointer AND allocatable functions. + (gfc_trans_arrayfunc_assign): Return NULL for allocatable + functions. + * resolve.c (resolve_symbol): Copy value of 'allocatable' attribute + from sym->result to sym. + +2006-03-09 Erik Edelmann + + * trans-expr.c (gfc_add_interface_mapping): Copy 'allocatable' + attribute from sym to new_sym. Call build_fold_indirect_ref() + for allocatable arguments. + +2006-03-09 Paul Thomas + + PR fortran/26257 + * trans-array.c (gfc_conv_expr_descriptor): Exclude calculation of + the offset and data when se->data_not_needed is set. + * trans.h: Include the data_not_need bit in gfc_se. + * trans-intrinsic.c (gfc_conv_intrinsic_size): Set it for SIZE. + +2006-03-06 Paul Thomas + Erik Edelmann + + * trans-array.c (gfc_trans_dealloc_allocated): New function. + (gfc_trans_deferred_array): Use it, instead of inline code. + * trans-array.h: Prototype for gfc_trans_dealloc_allocated(). + * trans-expr.c (gfc_conv_function_call): Deallocate allocated + ALLOCATABLE, INTENT(OUT) arguments upon procedure entry. + +2006-03-06 Paul Thomas + + PR fortran/26107 + * resolve.c (resolve_function): Add name after test for pureness. + + PR fortran/19546 + * trans-expr.c (gfc_conv_variable): Detect reference to parent result, + store current_function_decl, replace with parent, whilst calls are + made to gfc_get_fake_result_decl, and restore afterwards. Signal this + to gfc_get_fake_result_decl with a new argument, parent_flag. + * trans-stmt.c (gfc_trans_return): gfc_get_fake_result_decl 2nd arg + is set to zero. + * trans.h: Add parent_flag to gfc_get_fake_result_decl prototype. + * trans-decl.c (gfc_get_fake_result_decl): On parent_flag, being set, + add decl to parent function. Replace refs to current_fake_result_decl + with refs to this_result_decl. + (gfc_generate_function_code): Null parent_fake_result_decl before the + translation of code for contained procedures. Set parent_flag to zero + in call to gfc_get_fake_result_decl. + * trans-intrinsic.c (gfc_conv_intrinsic_len): The same. + +2006-03-05 Steven G. Kargl + + * simplify.c (gfc_simplify_verify): Fix return when SET=''. + +2006-03-05 Erik Edelmann + + PR fortran/16136 + * symbol.c (conf_std): New macro. + (check_conflict): Use it to allow ALLOCATABLE dummy + arguments for F2003. + * trans-expr.c (gfc_conv_function_call): Pass the + address of the array descriptor when dummy argument is + ALLOCATABLE. + * interface.c (compare_allocatable): New function. + (compare_actual_formal): Use it. + * resolve.c (resolve_deallocate_expr, + resolve_allocate_expr): Check that INTENT(IN) variables + aren't (de)allocated. + * gfortran.texi (Fortran 2003 status): List ALLOCATABLE + dummy arguments as supported. + +2006-03-03 Roger Sayle + + * dependency.c (gfc_check_element_vs_element): Revert last change. + +2006-03-03 Roger Sayle + + * dependency.c (gfc_check_element_vs_element): Consider two + unordered scalar subscripts as (potentially) equal. + +2006-03-03 Roger Sayle + + * dependency.c (gfc_check_dependency): Call gfc_dep_resolver to + check whether two array references have a dependency. + (gfc_check_element_vs_element): Assume lref and rref must be + REF_ARRAYs. If gfc_dep_compare_expr returns -2, assume these + references could potentially overlap. + (gfc_dep_resolver): Whitespace and comment tweaks. Assume a + dependency if the references have different depths. Rewrite + final term to clarrify we only have a dependency for overlaps. + +2006-03-03 Thomas Koenig + + PR fortran/25031 + * trans-array.h: Adjust gfc_array_allocate prototype. + * trans-array.c (gfc_array_allocate): Change type of + gfc_array_allocatate to bool. Function returns true if + it operates on an array. Change second argument to gfc_expr. + Find last reference in chain. + If the function operates on an allocatable array, emit call to + allocate_array() or allocate64_array(). + * trans-stmt.c (gfc_trans_allocate): Code to follow to last + reference has been moved to gfc_array_allocate. + * trans.h: Add declaration for gfor_fndecl_allocate_array and + gfor_fndecl_allocate64_array. + (gfc_build_builtin_function_decls): Add gfor_fndecl_allocate_array + and gfor_fndecl_allocate64_array. + +2006-03-01 Roger Sayle + + * trans-stmt.c (generate_loop_for_temp_to_lhs): Add an additional + INVERT argument to invert the sense of the WHEREMASK argument. + Remove unneeded code to AND together a list of masks. + (generate_loop_for_rhs_to_temp): Likewise. + (gfc_trans_assign_need_temp): Likewise. + (gfc_trans_forall_1): Likewise. + (gfc_evaluate_where_mask): Likewise, add a new INVERT argument + to specify the sense of the MASK argument. + (gfc_trans_where_assign): Likewise. + (gfc_trans_where_2): Likewise. Restructure code that decides + whether we need to allocate zero, one or two temporary masks. + If this is a top-level WHERE (i.e. the incoming MASK is NULL), + we only need to allocate at most one temporary mask, and can + invert it's sense to provide the complementary pending execution + mask. Only calculate the size of the required temporary arrays + if we need any. + (gfc_trans_where): Update call to gfc_trans_where_2. + +2006-03-01 Paul Thomas + + * iresolve.c (gfc_resolve_dot_product): Remove any difference in + treatment of logical types. + * trans-intrinsic.c (gfc_conv_intrinsic_dot_product): New function. + + PR fortran/26393 + * trans-decl.c (gfc_get_symbol_decl): Extend condition that symbols + must be referenced to include unreferenced symbols in an interface + body. + + PR fortran/20938 + * trans-array.c (gfc_conv_resolve_dependencies): Add call to + gfc_are_equivalenced_arrays. + * symbol.c (gfc_free_equiv_infos, gfc_free_equiv_lists): New + functions. (gfc_free_namespace): Call them. + * trans-common.c (copy_equiv_list_to_ns): New function. + (add_equivalences): Call it. + * gfortran.h: Add equiv_lists to gfc_namespace and define + gfc_equiv_list and gfc_equiv_info. + * dependency.c (gfc_are_equivalenced_arrays): New function. + (gfc_check_dependency): Call it. + * dependency.h: Prototype for gfc_are_equivalenced_arrays. + +2006-03-01 Roger Sayle + + * dependency.c (gfc_is_same_range): Compare the stride, lower and + upper bounds when testing array reference ranges for equality. + (gfc_check_dependency): Fix indentation whitespace. + (gfc_check_element_vs_element): Likewise. + (gfc_dep_resolver): Likewise. + +2006-02-28 Thomas Koenig + + * trans-intrinsic.c (gfc_conv_intrinsic_minmaxloc): + If the mask expression exists and has rank 0, enclose the + generated loop in an "if (mask)". Put the default + initialization into the else branch. + +2006-02-25 Thomas Koenig + + PR fortran/23092 + * trans-intrinsic.c (gfc_conv_intrinsic_arith): If the + mask expression exists and has rank 0, enclose the generated + loop in an "if (mask)". + * (gfc_conv_intrinsic_minmaxloc): Likewise. + +2006-02-24 Paul Thomas + + PR fortran/26409 + * resolve.c (resolve_contained_functions, resolve_types, + gfc_resolve): Revert patch of 2006-02-19. + +2006-02-24 Paul Thomas + + PR fortran/24519 + * dependency.c (gfc_is_same_range): Correct typo. + (gfc_check_section_vs_section): Call gfc_is_same_range. + + PR fortran/25395 + * trans-common.c (add_equivalences): Add a new flag that is set when + an equivalence is seen that prevents more from being reset until the + start of a new traversal of the list, thus ensuring completion of + all the equivalences. + +2006-02-23 Erik Edelmann + + * module.c (read_module): Remove redundant code lines. + +2006-02-20 Rafael Ávila de Espíndola + * Make-lang.in (FORTRAN): Remove + (.PHONY): Remove F95 and f95. Add fortran + +2006-02-20 Roger Sayle + + * trans-stmt.c (gfc_trans_where_2): Avoid updating unused current + execution mask for empty WHERE/ELSEWHERE clauses. Don't allocate + temporary mask arrays if they won't be used. + +2006-02-20 Roger Sayle + + * trans-stmt.c (gfc_trans_where_assign): Remove code to handle + traversing a linked list of MASKs. The MASK is now always a + single element requiring no ANDing during the assignment. + +2006-02-19 Thomas Koenig + + * gfortran.texi: Document environment variables which + influence runtime behavior. + +2006-02-19 H.J. Lu + + * resolve.c (resolve_contained_functions): Call resolve_entries + first. + (resolve_types): Remove calls to resolve_entries and + resolve_contained_functions. + (gfc_resolve): Call resolve_contained_functions. + +2006-02-19 Erik Edelmann + + PR fortran/26201 + * intrinsic.c (gfc_convert_type_warn): Call + gfc_intrinsic_symbol() on the newly created symbol. + +2006-02-19 Paul Thomas + + PR fortran/25054 + * resolve.c (is_non_constant_shape_array): New function. + (resolve_fl_variable): Remove code for the new function and call it. + (resolve_fl_namelist): New function. Add test for namelist array + with non-constant shape, using is_non_constant_shape_array. + (resolve_symbol): Remove code for resolve_fl_namelist and call it. + + PR fortran/25089 + * match.c (match_namelist): Increment the refs field of an accepted + namelist object symbol. + * resolve.c (resolve_fl_namelist): Test namelist objects for a conflict + with contained or module procedures. + +2006-02-18 Roger Sayle + + * trans-stmt.c (struct temporary_list): Delete. + (gfc_trans_where_2): Major reorganization. Remove no longer needed + TEMP argument. Allocate and deallocate the control mask and + pending control mask locally. + (gfc_trans_forall_1): Delete TEMP local variable, and update + call to gfc_trans_where_2. No need to deallocate arrays after. + (gfc_evaluate_where_mask): Major reorganization. Change return + type to void. Pass in parent execution mask, MASK, and two + already allocated mask arrays CMASK and PMASK. On return + CMASK := MASK & COND, PMASK := MASK & !COND. MASK, CMASK and + CMASK may all be NULL, or refer to the same temporary arrays. + (gfc_trans_where): Update call to gfc_trans_where_2. We no + longer need a TEMP variable or to deallocate temporary arrays + allocated by gfc_trans_where_2. + +2006-02-18 Danny Smith + + * gfortran.h (gfc_add_attribute): Change uint to unsigned int. + * symbol.c (gfc_add_attribute): Likewise for definition. + * resolve.c (resolve_global_procedure): Likewise for variable 'type'. + +2006-02-17 Richard Sandiford + + * trans-common.c: Include rtl.h earlier. + * trans-decl.c: Likewise. + +2006-02-16 Jakub Jelinek + + PR fortran/26224 + * parse.c (parse_omp_do, parse_omp_structured_block): Call + gfc_commit_symbols and gfc_warning_check. + + * openmp.c (resolve_omp_clauses): Add a dummy case label to workaround + PR middle-end/26316. + +2006-02-16 Paul Thomas + + PR fortran/24557 + * trans-expr.c (gfc_add_interface_mapping): Use the actual argument + for character(*) arrays, rather than casting to the type and kind + parameters of the formal argument. + +2006-02-15 Toon Moene + + PR fortran/26054 + * options.c: Do not warn for Fortran 2003 features by default. + +2006-02-15 Tobias Schlüter + + * check.c: Update copyright years. + + * check.c (gfc_check_minloc_maxloc, check_reduction): Don't call + dim_range_check on not-present optional dim argument. + +2006-02-15 Jakub Jelinek + + PR libgomp/25938 + PR libgomp/25984 + * Make-lang.in (install-finclude-dir): New goal. + (fortran.install-common): Depend on install-finclude-dir. + * lang-specs.h: If not -nostdinc, add -I finclude. + +2006-02-14 Thomas Koenig + + PR fortran/25045 + * check.c (dim_check): Perform all checks if dim is optional. + (gfc_check_minloc_maxloc): Use dim_check and dim_rank_check + to check dim argument. + (check_reduction): Likewise. + +2006-02-14 Tobias Schlüter + + PR fortran/26277 + * io.c (match_ltag): Mark label as referenced. + +2006-02-14 Jakub Jelinek + Richard Henderson + Diego Novillo + + * invoke.texi: Document -fopenmp. + * gfortran.texi (Extensions): Document OpenMP. + + Backport from gomp-20050608-branch + * trans-openmp.c: Call build_omp_clause instead of + make_node when creating OMP_CLAUSE_* trees. + (gfc_trans_omp_reduction_list): Remove argument 'code'. + Adjust all callers. + + * trans.h (build4_v): Define. + * trans-openmp.c: Call build4_v to create OMP_PARALLEL nodes. + Call build3_v to create OMP_SECTIONS nodes. + + PR fortran/25162 + * openmp.c (gfc_match_omp_variable_list): Call gfc_set_sym_referenced + on all symbols added to the variable list. + + * openmp.c (gfc_match_omp_clauses): Fix check for non-INTRINSIC + procedure symbol in REDUCTION. + + * trans-openmp.c (gfc_trans_omp_array_reduction): Use gfc_add + for MINUS_EXPR OMP_CLAUSE_REDUCTION_CODE. + + * trans-openmp.c (gfc_trans_omp_do): Add PBLOCK argument. If PBLOCK + is non-NULL, evaluate INIT/COND/INCR and chunk size expressions in + that statement block. + (gfc_trans_omp_parallel_do): Pass non-NULL PBLOCK to gfc_trans_omp_do + for non-ordered non-static combined loops. + (gfc_trans_omp_directive): Pass NULL PBLOCK to gfc_trans_omp_do. + + * openmp.c: Include target.h and toplev.h. + (gfc_match_omp_threadprivate): Emit diagnostic if target does + not support TLS. + * Make-lang.in (fortran/openmp.o): Add dependencies on + target.h and toplev.h. + + * trans-decl.c (gfc_get_fake_result_decl): Set GFC_DECL_RESULT. + * trans-openmp.c (gfc_omp_privatize_by_reference): Make + DECL_ARTIFICIAL vars predetermined shared except GFC_DECL_RESULT. + (gfc_omp_disregard_value_expr): Handle GFC_DECL_RESULT. + (gfc_trans_omp_variable): New function. + (gfc_trans_omp_variable_list, gfc_trans_omp_reduction_list): Use it. + * trans.h (GFC_DECL_RESULT): Define. + + * trans-openmp.c (gfc_omp_firstprivatize_type_sizes): New function. + * f95-lang.c (LANG_HOOKS_OMP_FIRSTPRIVATIZE_TYPE_SIZES): Define. + * trans.h (gfc_omp_firstprivatize_type_sizes): New prototype. + + * trans-openmp.c (gfc_omp_privatize_by_reference): Return + true if a pointer has GFC_DECL_SAVED_DESCRIPTOR set. + (gfc_trans_omp_array_reduction, gfc_trans_omp_reduction_list): New + functions. + (gfc_trans_omp_clauses): Add WHERE argument. Call + gfc_trans_omp_reduction_list rather than gfc_trans_omp_variable_list + for reductions. + (gfc_trans_omp_do, gfc_trans_omp_parallel, gfc_trans_omp_parallel_do, + gfc_trans_omp_parallel_sections, gfc_trans_omp_parallel_workshare, + gfc_trans_omp_sections, gfc_trans_omp_single): Adjust + gfc_trans_omp_clauses callers. + + * openmp.c (omp_current_do_code): New var. + (gfc_resolve_omp_do_blocks): New function. + (gfc_resolve_omp_parallel_blocks): Call it. + (gfc_resolve_do_iterator): Add CODE argument. Don't propagate + predetermination if argument is !$omp do or !$omp parallel do + iteration variable. + * resolve.c (resolve_code): Call gfc_resolve_omp_do_blocks + for EXEC_OMP_DO. Adjust gfc_resolve_do_iterator caller. + * fortran.h (gfc_resolve_omp_do_blocks): New prototype. + (gfc_resolve_do_iterator): Add CODE argument. + + * trans.h (gfc_omp_predetermined_sharing, + gfc_omp_disregard_value_expr, gfc_omp_private_debug_clause): New + prototypes. + (GFC_DECL_COMMON_OR_EQUIV, GFC_DECL_CRAY_POINTEE): Define. + * trans-openmp.c (gfc_omp_predetermined_sharing, + gfc_omp_disregard_value_expr, gfc_omp_private_debug_clause): New + functions. + * trans-common.c (build_equiv_decl, build_common_decl, + create_common): Set GFC_DECL_COMMON_OR_EQUIV flag on the decls. + * trans-decl.c (gfc_finish_cray_pointee): Set GFC_DECL_CRAY_POINTEE + on the decl. + * f95-lang.c (LANG_HOOKS_OMP_PREDETERMINED_SHARING, + LANG_HOOKS_OMP_DISREGARD_VALUE_EXPR, + LANG_HOOKS_OMP_PRIVATE_DEBUG_CLAUSE): Define. + + * openmp.c (resolve_omp_clauses): Remove extraneous comma. + + * symbol.c (check_conflict): Add conflict between cray_pointee and + threadprivate. + * openmp.c (gfc_match_omp_threadprivate): Fail if + gfc_add_threadprivate returned FAILURE. + (resolve_omp_clauses): Diagnose Cray pointees in SHARED, + {,FIRST,LAST}PRIVATE and REDUCTION clauses and Cray pointers in + {FIRST,LAST}PRIVATE and REDUCTION clauses. + + * resolve.c (omp_workshare_flag): New variable. + (resolve_function): Diagnose use of non-ELEMENTAL user defined + function in WORKSHARE construct. + (resolve_code): Cleanup forall_save use. Make sure omp_workshare_flag + is set to correct value in different contexts. + + * openmp.c (resolve_omp_clauses): Replace %s with '%s' when printing + variable name. + (resolve_omp_atomic): Likewise. + + PR fortran/24493 + * scanner.c (skip_free_comments): Set at_bol at the beginning of the + loop, not before it. + (skip_fixed_comments): Handle ! comments in the middle of line here + as well. + (gfc_skip_comments): Use skip_fixed_comments for FIXED_FORM even if + not at BOL. + (gfc_next_char_literal): Fix expected canonicalized *$omp string. + + * trans-openmp.c (gfc_trans_omp_do): Use make_node and explicit + initialization to build OMP_FOR instead of build. + + * trans-decl.c (gfc_gimplify_function): Invoke + diagnose_omp_structured_block_errors. + + * trans-openmp.c (gfc_trans_omp_master): Use OMP_MASTER. + (gfc_trans_omp_ordered): Use OMP_ORDERED. + + * gfortran.h (gfc_resolve_do_iterator, gfc_resolve_blocks, + gfc_resolve_omp_parallel_blocks): New prototypes. + * resolve.c (resolve_blocks): Renamed to... + (gfc_resolve_blocks): ... this. Remove static. + (gfc_resolve_forall): Adjust caller. + (resolve_code): Only call gfc_resolve_blocks if code->block != 0 + and not for EXEC_OMP_PARALLEL* directives. Call + gfc_resolve_omp_parallel_blocks for EXEC_OMP_PARALLEL* directives. + Call gfc_resolve_do_iterator if resolved successfully EXEC_DO + iterator. + * openmp.c: Include pointer-set.h. + (omp_current_ctx): New variable. + (gfc_resolve_omp_parallel_blocks, gfc_resolve_do_iterator): New + functions. + * Make-lang.in (fortran/openmp.o): Depend on pointer-set.h. + + * openmp.c (gfc_match_omp_clauses): For max/min/iand/ior/ieor, + look up symbol if it exists, use its name instead and, if it is not + INTRINSIC, issue diagnostics. + + * parse.c (parse_omp_do): Handle implied end do properly. + (parse_executable): If parse_omp_do returned ST_IMPLIED_ENDDO, + return it instead of continuing. + + * trans-openmp.c (gfc_trans_omp_critical): Update for changed + operand numbering. + (gfc_trans_omp_do, gfc_trans_omp_parallel, gfc_trans_omp_parallel_do, + gfc_trans_omp_parallel_sections, gfc_trans_omp_parallel_workshare, + gfc_trans_omp_sections, gfc_trans_omp_single): Likewise. + + * trans.h (gfc_omp_privatize_by_reference): New prototype. + * f95-lang.c (LANG_HOOKS_OMP_PRIVATIZE_BY_REFERENCE): Redefine + to gfc_omp_privatize_by_reference. + * trans-openmp.c (gfc_omp_privatize_by_reference): New function. + + * trans-stmt.h (gfc_trans_omp_directive): Add comment. + + * openmp.c (gfc_match_omp_variable_list): Add ALLOW_COMMON argument. + Disallow COMMON matching if it is set. + (gfc_match_omp_clauses, gfc_match_omp_flush): Adjust all callers. + (resolve_omp_clauses): Show locus in error messages. Check that + variable types in reduction clauses are appropriate for reduction + operators. + + * resolve.c (resolve_symbol): Don't error if a threadprivate module + variable isn't SAVEd. + + * trans-openmp.c (gfc_trans_omp_do): Put count into BLOCK, not BODY. + Fix typo in condition. Fix DOVAR initialization. + + * openmp.c (gfc_match_omp_clauses): Match min/iand/ior/ieor + rather than .min. etc. + + * trans-openmpc.c (omp_not_yet): Remove. + (gfc_trans_omp_parallel_do): Keep listprivate clause on parallel. + Force creation of BIND_EXPR around the workshare construct. + (gfc_trans_omp_parallel_sections): Likewise. + (gfc_trans_omp_parallel_workshare): Likewise. + + * types.def (BT_I16, BT_FN_I16_VPTR_I16, + BT_FN_BOOL_VPTR_I16_I16, BT_FN_I16_VPTR_I16_I16): Add. + + * trans-openmp.c (gfc_trans_omp_clauses): Create OMP_CLAUSE_DEFAULT. + (gfc_trans_omp_code): New function. + (gfc_trans_omp_do): Use it, remove omp_not_yet uses. + (gfc_trans_omp_parallel, gfc_trans_omp_single): Likewise. + (gfc_trans_omp_sections): Likewise. Only treat empty last section + specially if lastprivate clause is present. + * f95-lang.c (gfc_init_builtin_functions): Create BUILT_IN_TRAP + builtin. + + * trans-openmp.c (gfc_trans_omp_variable_list): Update for + OMP_CLAUSE_DECL name change. + (gfc_trans_omp_do): Likewise. + + * trans-openmp.c (gfc_trans_omp_clauses): Create OMP_CLAUSE_REDUCTION + clauses. + (gfc_trans_omp_atomic): Build OMP_ATOMIC instead of expanding + sync builtins directly. + (gfc_trans_omp_single): Build OMP_SINGLE statement. + + * trans-openmp.c (gfc_trans_add_clause): New. + (gfc_trans_omp_variable_list): Take a tree code and build the clause + node here. Link it to the head of a list. + (gfc_trans_omp_clauses): Update to match. + (gfc_trans_omp_do): Use gfc_trans_add_clause. + + * trans-openmp.c (gfc_trans_omp_clauses): Change second argument to + gfc_omp_clauses *. Use gfc_evaluate_now instead of creating + temporaries by hand. + (gfc_trans_omp_atomic, gfc_trans_omp_critical): Use buildN_v macros. + (gfc_trans_omp_do): New function. + (gfc_trans_omp_master): Dont' check for gfc_trans_code returning NULL. + (gfc_trans_omp_parallel): Adjust gfc_trans_omp_clauses caller. + Use buildN_v macros. + (gfc_trans_omp_parallel_do, gfc_trans_omp_parallel_sections, + gfc_trans_omp_parallel_workshare, gfc_trans_omp_sections, + gfc_trans_omp_single, gfc_trans_omp_workshare): New functions. + (gfc_trans_omp_directive): Use them. + * parse.c (parse_omp_do): Allow new_st.op == EXEC_NOP. + * openmp.c (resolve_omp_clauses): Check for list items present + in multiple clauses. + (resolve_omp_do): Check that iteration variable is not THREADPRIVATE + and is not present in any clause variable lists other than PRIVATE + or LASTPRIVATE. + + * gfortran.h (symbol_attribute): Add threadprivate bit. + (gfc_common_head): Add threadprivate member, change use_assoc + and saved into char to save space. + (gfc_add_threadprivate): New prototype. + * symbol.c (check_conflict): Handle threadprivate. + (gfc_add_threadprivate): New function. + (gfc_copy_attr): Copy threadprivate. + * trans-openmp.c (gfc_trans_omp_clauses): Avoid creating a temporary + if IF or NUM_THREADS is constant. Create OMP_CLAUSE_SCHEDULE and + OMP_CLAUSE_ORDERED. + * resolve.c (resolve_symbol): Complain if a THREADPRIVATE symbol + outside a module and not in COMMON has is not SAVEd. + (resolve_equivalence): Ensure THREADPRIVATE objects don't get + EQUIVALENCEd. + * trans-common.c: Include target.h and rtl.h. + (build_common_decl): Set DECL_TLS_MODEL if THREADPRIVATE. + * trans-decl.c: Include rtl.h. + (gfc_finish_var_decl): Set DECL_TLS_MODEL if THREADPRIVATE. + * dump-parse-tree.c (gfc_show_attr): Handle THREADPRIVATE. + * Make-lang.in (fortran/trans-decl.o): Depend on $(RTL_H). + (fortran/trans-common.o): Depend on $(RTL_H) and $(TARGET_H). + * openmp.c (gfc_match_omp_variable_list): Ensure COMMON block + is from current namespace. + (gfc_match_omp_threadprivate): Rewrite. + (resolve_omp_clauses): Check some clause restrictions. + * module.c (ab_attribute): Add AB_THREADPRIVATE. + (attr_bits): Add THREADPRIVATE. + (mio_symbol_attribute, mio_symbol_attribute): Handle threadprivate. + (load_commons, write_common, write_blank_common): Adjust for type + change of saved, store/load threadprivate bit from the integer + as well. + + * types.def (BT_FN_UINT_UINT): New. + (BT_FN_VOID_UINT_UINT): Remove. + + * trans-openmp.c (gfc_trans_omp_clauses, gfc_trans_omp_barrier, + gfc_trans_omp_critical, gfc_trans_omp_flush, gfc_trans_omp_master, + gfc_trans_omp_ordered, gfc_trans_omp_parallel): New functions. + (gfc_trans_omp_directive): Use them. + + * openmp.c (expr_references_sym): Add SE argument, don't look + into SE tree. + (is_conversion): New function. + (resolve_omp_atomic): Adjust expr_references_sym callers. Handle + promoted expressions. + * trans-openmp.c (gfc_trans_omp_atomic): New function. + (gfc_trans_omp_directive): Call it. + + * f95-lang.c (builtin_type_for_size): New function. + (gfc_init_builtin_functions): Initialize synchronization and + OpenMP builtins. + * types.def: New file. + * Make-lang.in (f95-lang.o): Depend on $(BUILTINS_DEF) and + fortran/types.def. + + * trans-openmp.c: Rename GOMP_* tree codes into OMP_*. + + * dump-parse-tree.c (show_symtree): Don't crash if ns->proc_name + is NULL. + + * dump-parse-tree.c (gfc_show_namelist, gfc_show_omp_node): New + functions. + (gfc_show_code_node): Call gfc_show_omp_node for EXEC_OMP_* nodes. + + * parse.c (parse_omp_do): Call pop_state before next_statement. + * openmp.c (expr_references_sym, resolve_omp_atomic, resolve_omp_do): + New functions. + (gfc_resolve_omp_directive): Call them. + * match.c (match_exit_cycle): Issue error if EXIT or CYCLE statement + leaves an OpenMP structured block or if EXIT terminates !$omp do + loop. + + * Make-lang.in (F95_PARSER_OBJS): Add fortran/openmp.o. + (F95_OBJS): Add fortran/trans-openmp.o. + (fortran/trans-openmp.o): Depend on $(GFORTRAN_TRANS_DEPS). + * lang.opt: Add -fopenmp option. + * options.c (gfc_init_options): Initialize it. + (gfc_handle_option): Handle it. + * gfortran.h (ST_OMP_ATOMIC, ST_OMP_BARRIER, ST_OMP_CRITICAL, + ST_OMP_END_CRITICAL, ST_OMP_END_DO, ST_OMP_END_MASTER, + ST_OMP_END_ORDERED, ST_OMP_END_PARALLEL, ST_OMP_END_PARALLEL_DO, + ST_OMP_END_PARALLEL_SECTIONS, ST_OMP_END_PARALLEL_WORKSHARE, + ST_OMP_END_SECTIONS, ST_OMP_END_SINGLE, ST_OMP_END_WORKSHARE, + ST_OMP_DO, ST_OMP_FLUSH, ST_OMP_MASTER, ST_OMP_ORDERED, + ST_OMP_PARALLEL, ST_OMP_PARALLEL_DO, ST_OMP_PARALLEL_SECTIONS, + ST_OMP_PARALLEL_WORKSHARE, ST_OMP_SECTIONS, ST_OMP_SECTION, + ST_OMP_SINGLE, ST_OMP_THREADPRIVATE, ST_OMP_WORKSHARE): New + statement codes. + (OMP_LIST_PRIVATE, OMP_LIST_FIRSTPRIVATE, OMP_LIST_LASTPRIVATE, + OMP_LIST_COPYPRIVATE, OMP_LIST_SHARED, OMP_LIST_COPYIN, + OMP_LIST_PLUS, OMP_LIST_REDUCTION_FIRST, OMP_LIST_MULT, + OMP_LIST_SUB, OMP_LIST_AND, OMP_LIST_OR, OMP_LIST_EQV, + OMP_LIST_NEQV, OMP_LIST_MAX, OMP_LIST_MIN, OMP_LIST_IAND, + OMP_LIST_IOR, OMP_LIST_IEOR, OMP_LIST_REDUCTION_LAST, OMP_LIST_NUM): + New OpenMP variable list types. + (gfc_omp_clauses): New typedef. + (gfc_get_omp_clauses): Define. + (EXEC_OMP_CRITICAL, EXEC_OMP_DO, EXEC_OMP_FLUSH, EXEC_OMP_MASTER, + EXEC_OMP_ORDERED, EXEC_OMP_PARALLEL, EXEC_OMP_PARALLEL_DO, + EXEC_OMP_PARALLEL_SECTIONS, EXEC_OMP_PARALLEL_WORKSHARE, + EXEC_OMP_SECTIONS, EXEC_OMP_SINGLE, EXEC_OMP_WORKSHARE, + EXEC_OMP_ATOMIC, EXEC_OMP_BARRIER, EXEC_OMP_END_NOWAIT, + EXEC_OMP_END_SINGLE): New OpenMP gfc_exec_op codes. + (struct gfc_code): Add omp_clauses, omp_name, omp_namelist + and omp_bool fields to ext union. + (flag_openmp): Declare. + (gfc_free_omp_clauses, gfc_resolve_omp_directive): New prototypes. + * scanner.c (openmp_flag, openmp_locus): New variables. + (skip_free_comments, skip_fixed_comments, gfc_next_char_literal): + Handle OpenMP directive lines and conditional compilation magic + comments. + * parse.h (COMP_OMP_STRUCTURED_BLOCK): New compile state. + * parse.c (decode_omp_directive, parse_omp_do, parse_omp_atomic, + parse_omp_structured_block): New functions. + (next_free, next_fixed): Parse OpenMP directives. + (case_executable, case_exec_markers, case_decl): Add ST_OMP_* + codes. + (gfc_ascii_statement): Handle ST_OMP_* codes. + (parse_executable): Rearrange the loop slightly, so that + parse_omp_do can return next_statement. + * match.h (gfc_match_omp_eos, gfc_match_omp_atomic, + gfc_match_omp_barrier, gfc_match_omp_critical, gfc_match_omp_do, + gfc_match_omp_flush, gfc_match_omp_master, gfc_match_omp_ordered, + gfc_match_omp_parallel, gfc_match_omp_parallel_do, + gfc_match_omp_parallel_sections, gfc_match_omp_parallel_workshare, + gfc_match_omp_sections, gfc_match_omp_single, + gfc_match_omp_threadprivate, gfc_match_omp_workshare, + gfc_match_omp_end_nowait, gfc_match_omp_end_single): New prototypes. + * resolve.c (resolve_blocks): Ignore EXEC_OMP_* block directives. + (resolve_code): Call gfc_resolve_omp_directive on EXEC_OMP_* + directives. + * trans.c (gfc_trans_code): Call gfc_trans_omp_directive for + EXEC_OMP_* directives. + * st.c (gfc_free_statement): Handle EXEC_OMP_* statement freeing. + * trans-stmt.h (gfc_trans_omp_directive): New prototype. + * openmp.c: New file. + * trans-openmp.c: New file. + +2006-02-13 Andrew Pinski + Jakub Jelinek + + PR fortran/26246 + * trans-decl.c (gfc_get_symbol_decl, gfc_get_fake_result_decl): Use + gfc_add_decl_to_function rather than gfc_finish_var_decl on length. + +2006-02-13 Paul Thomas + + PR fortran/26074 + PR fortran/25103 + * resolve.c (resolve_symbol): Extend the requirement that module + arrays have constant bounds to those in the main program. At the + same time simplify the array bounds, to avoiding trapping parameter + array references, and exclude automatic character length from main + and modules. Rearrange resolve_symbol and resolve_derived to put as + each flavor together, as much as is possible and move all specific + code for flavors FL_VARIABLE, FL_PROCEDURE and FL_PARAMETER into new + functions. + (resolve_fl_var_and_proc, resolve_fl_variable, resolve_fl_procedure): + New functions to do work of resolve_symbol. + (resolve_index_expr): New function that is called from resolved_symbol + and is extracted from resolve_charlen. + (resolve_charlen): Call this new function. + (resolve_fl_derived): Renamed resolve_derived to be consistent with + the naming of the new functions for the other flavours. Change the + charlen checking so that the style is consistent with other similar + checks. Add the generation of the gfc_dt_list, removed from resolve_ + symbol. + + PR fortran/20861 + * resolve.c (resolve_actual_arglist): Prevent internal procedures + from being dummy arguments. + + PR fortran/20871 + * resolve.c (resolve_actual_arglist): Prevent pure but non-intrinsic + procedures from being dummy arguments. + + PR fortran/25083 + * resolve.c (check_data_variable): Add test that data variable is in + COMMON. + + PR fortran/25088 + * resolve.c (resolve_call): Add test that the subroutine does not + have a type. + +2006-02-12 Erik Edelmann + + PR fortran/25806 + * trans-array.c (gfc_trans_allocate_array_storage): New argument + dealloc; free the temporary only if dealloc is true. + (gfc_trans_allocate_temp_array): New argument bool dealloc, to be + passed onwards to gfc_trans_allocate_array_storage. + (gfc_trans_array_constructor, gfc_conv_loop_setup): Update call to + gfc_trans_allocate_temp_array. + * trans-array.h (gfc_trans_allocate_temp_array): Update function + prototype. + * trans-expr.c (gfc_conv_function_call): Set new argument 'dealloc' + to gfc_trans_allocate_temp_array to false in case of functions + returning pointers. + (gfc_trans_arrayfunc_assign): Return NULL for functions returning + pointers. + +2006-02-10 Steven G. Kargl + + PR fortran/20858 + *decl.c (variable_decl): Improve error message. Remove initialization + typespec. Wrap long line. + *expr.c (gfc_check_pointer_assign): Permit checking of type, kind type, + and rank. + *simplify.c (gfc_simplify_null): Ensure type, kind type, and rank + are set. + + +2006-02-10 Tobias Schlüter + + PR fortran/14771 + * arith.c (eval_intrinsic): Accept INTRINSIC_PARENTHESES. + * expr.c (check_intrinsic_op): Likewise. + * module.c (mio_expr): Likewise. + +2006-02-09 Tobias Schlüter + + * dump-parse-tree.c: Update copyright years. + * matchexp.c: Likewise. + * module.c: Likewise. + + PR fortran/14771 + * gfortran.h (gfc_intrinsic_op): Add INTRINSIC_PARENTHESES. + * dump-parse-tree (gfc_show_expr): Handle INTRINSIC_PARENTHESES. + * expr.c (simplify_intrinsic_op): Treat INTRINSIC_PARENTHESES as + if it were INTRINSIC_UPLUS. + * resolve.c (resolve_operator): Handle INTRINSIC_PARENTHESES. + * match.c (intrinsic_operators): Add INTRINSIC_PARENTHESES. + * matchexp.c (match_primary): Record parentheses surrounding + numeric expressions. + * module.c (intrinsics): Add INTRINSIC_PARENTHESES for module + dumping. + * trans-expr.c (gfc_conv_expr_op): Handle INTRINSIC_PARENTHESES. + +2006-02-09 Paul Thomas + + PR fortran/26038 + * trans-stmt.c (gfc_trans_allocate): Provide assumed character length + scalar with missing backend_decl for the hidden dummy charlen. + + PR fortran/25059 + * interface.c (gfc_extend_assign): Remove detection of non-PURE + subroutine in assignment interface, with gfc_error, and put it in + * resolve.c (resolve_code). + + PR fortran/25070 + * interface.c (gfc_procedure_use): Flag rank checking for non- + elemental, contained or interface procedures in call to + (compare_actual_formal), where ranks are checked for assumed + shape arrays.. + +2006-02-08 Francois-Xavier Coudert + + PR libfortran/25425 + * trans-decl.c (gfc_generate_function_code): Add new argument, + pedantic, to set_std call. + +2006-02-06 Thomas Koenig + + PR libfortran/23815 + * gfortran.texi: Document the GFORTRAN_CONVERT_UNIT environment + variable. + * invoke.texi: Mention the "Runtime" chapter. + Document the -fconvert= option. + * gfortran.h: Add options_convert. + * lang.opt: Add fconvert=little-endian, fconvert=big-endian, + fconvert=native and fconvert=swap. + * trans-decl.c (top level): Add gfor_fndecl_set_convert. + (gfc_build_builtin_function_decls): Set gfor_fndecl_set_convert. + (gfc_generate_function_code): If -fconvert was specified, + and this is the main program, add a call to set_convert(). + * options.c: Handle the -fconvert options. + +2006-02-06 Roger Sayle + + * trans-stmt.c (gfc_evaluate_where_mask): Allow the NMASK argument + to be NULL to indicate that the not mask isn't required. + (gfc_trans_where_2): Remove PMASK argument. Avoid calculating the + pending mask for the last clause of a WHERE chain. Update recursive + call. + (gfc_trans_forall_1): Update call to gfc_trans_where_2. + (gfc_trans_where): Likewise. + +2006-02-06 Jakub Jelinek + + Backport from gomp-20050608-branch + * trans-decl.c (create_function_arglist): Handle dummy functions. + + * trans-decl.c (gfc_get_symbol_decl): Revert explicit setting of + TYPE_SIZE_UNIT. + (gfc_trans_vla_type_sizes): Also "gimplify" + GFC_TYPE_ARRAY_DATAPTR_TYPE for GFC_DESCRIPTOR_TYPE_P types. + * trans-array.c (gfc_trans_deferred_array): Call + gfc_trans_vla_type_sizes. + + * trans-decl.c (saved_function_decls, saved_parent_function_decls): + Remove unnecessary initialization. + (create_function_arglist): Make sure __result has complete type. + (gfc_get_fake_result_decl): Change current_fake_result_decl into + a tree chain. For entry master, create a separate variable + for each result name. For BT_CHARACTER results, call + gfc_finish_var_decl on length even if it has been already created, + but not pushdecl'ed. + (gfc_trans_vla_type_sizes): For function/entry result, adjust + result value type, not the FUNCTION_TYPE. + (gfc_generate_function_code): Adjust for current_fake_result_decl + changes. + (gfc_trans_deferred_vars): Likewise. Call gfc_trans_vla_type_sizes + even on result if it is assumed-length character. + + * trans-decl.c (gfc_trans_dummy_character): Add SYM argument. + Call gfc_trans_vla_type_sizes. + (gfc_trans_auto_character_variable): Call gfc_trans_vla_type_sizes. + (gfc_trans_vla_one_sizepos, gfc_trans_vla_type_sizes_1, + gfc_trans_vla_type_sizes): New functions. + (gfc_trans_deferred_vars): Adjust gfc_trans_dummy_character + callers. Call gfc_trans_vla_type_sizes on assumed-length + character parameters. + * trans-array.c (gfc_trans_array_bounds, + gfc_trans_auto_array_allocation, gfc_trans_dummy_array_bias): Call + gfc_trans_vla_type_sizes. + * trans.h (gfc_trans_vla_type_sizes): New prototype. + + * trans-decl.c (gfc_build_qualified_array): For non-assumed-size + arrays without constant size, create also an index var for + GFC_TYPE_ARRAY_SIZE (type). If the type is incomplete, complete + it as 0..size-1. + (gfc_create_string_length): Don't call gfc_defer_symbol_init + if just creating DECL_ARGUMENTS. + (gfc_get_symbol_decl): Call gfc_finish_var_decl and + gfc_defer_symbol_init even if ts.cl->backend_decl is already + set to a VAR_DECL that doesn't have DECL_CONTEXT yet. + (create_function_arglist): Rework, so that hidden length + arguments for CHARACTER parameters are created together with + the parameters. Resolve ts.cl->backend_decl for CHARACTER + parameters. If the argument is a non-constant length array + or CHARACTER, ensure PARM_DECL has different type than + its DECL_ARG_TYPE. + (generate_local_decl): Call gfc_get_symbol_decl even + for non-referenced non-constant length CHARACTER parameters + after optionally issuing warnings. + * trans-array.c (gfc_trans_array_bounds): Set last stride + to GFC_TYPE_ARRAY_SIZE (type) to initialize it as well. + (gfc_trans_dummy_array_bias): Initialize GFC_TYPE_ARRAY_SIZE (type) + variable as well. + + * trans-expr.c (gfc_conv_expr_val): Fix comment typo. + + * trans-stmt.c (gfc_trans_simple_do): Fix comment. + +2006-02-04 Roger Sayle + + * dependency.c (gfc_check_dependency): Remove unused vars and nvars + arguments. Replace with an "identical" argument. A full array + reference to the same symbol is a dependency if identical is true. + * dependency.h (gfc_check_dependency): Update prototype. + * trans-array.h (gfc_check_dependency): Delete duplicate prototype. + * trans-stmt.c: #include dependency.h for gfc_check_dependency. + (gfc_trans_forall_1): Update calls to gfc_check_dependency. + (gfc_trans_where_2): Likewise. Remove unneeded variables. + (gfc_trans_where_3): New function for simple non-dependent WHEREs. + (gfc_trans_where): Call gfc_trans_where_3 to translate simple + F90-style WHERE statements without internal dependencies. + * Make-lang.in (trans-stmt.o): Depend upon dependency.h. + +2006-02-05 H.J. Lu + + PR fortran/26041 + PR fortran/26064 + * resolve.c (resolve_types): New function. + (resolve_codes): Likewise. + (gfc_resolve): Use them. + +2006-02-05 Roger Sayle + + * trans-stmt.c (gfc_evaluate_where_mask): Use LOGICAL*1 for WHERE + masks instead of LOGICAL*4. + +2006-02-05 Jakub Jelinek + + * resolve.c (resolve_symbol): Initialize constructor_expr to NULL. + +2006-02-04 Thomas Koenig + + PR fortran/25075 + check.c (identical_dimen_shape): New function. + (check_dot_product): Use identical_dimen_shape() to check sizes + for dot_product. + (gfc_check_matmul): Likewise. + (gfc_check_merge): Check conformance between tsource and fsource + and between tsource and mask. + (gfc_check_pack): Check conformance between array and mask. + +2006-02-03 Steven G. Kargl + Paul Thomas + + PR fortran/20845 + * resolve.c (resolve_symbol): Default initialization of derived type + component reguires the SAVE attribute. + +2006-02-02 Steven G. Kargl + + PR fortran/24958 + match.c (gfc_match_nullify): Free the list from head not tail. + + PR fortran/25072 + * match.c (match_forall_header): Fix internal error caused by bogus + gfc_epxr pointers. + + +2006-01-31 Thomas Koenig + + PR fortran/26039 + expr.c (gfc_check_conformance): Reorder error message + to avoid plural. + check.c(gfc_check_minloc_maxloc): Call gfc_check_conformance + for checking arguments array and mask. + (check_reduction): Likewise. + +2006-01-30 Erik Edelmann + + PR fortran/24266 + * trans-io.c (set_internal_unit): Check the rank of the + expression node itself instead of its symbol. + +2006-01-29 Paul Thomas + + PR fortran/18578 + PR fortran/18579 + PR fortran/20857 + PR fortran/20885 + * interface.c (compare_actual_formal): Error for INTENT(OUT or INOUT) + if actual argument is not a variable. + +2006-01-28 Paul Thomas + + PR fortran/17911 + * expr.c (gfc_check_assign, gfc_check_pointer_assign): Emit error if + the lvalue is a use associated procedure. + + PR fortran/20895 + PR fortran/25030 + * expr.c (gfc_check_pointer_assign): Emit error if lvalue and rvalue + character lengths are not the same. Use gfc_dep_compare_expr for the + comparison. + * gfortran.h: Add prototype for gfc_dep_compare_expr. + * dependency.h: Remove prototype for gfc_dep_compare_expr. + +2006-01-27 Paul Thomas + + PR fortran/25964 + * resolve.c (resolve_function): Add GFC_ISYM_LOC to the list of + generic_ids exempted from assumed size checking. + +2006-01-27 Jakub Jelinek + + PR fortran/25324 + * Make-lang.in (fortran/scanner.o): Depend on toplev.h. + * lang.opt (fpreprocessed): New option. + * scanner.c: Include toplev.h. + (gfc_src_file, gfc_src_preprocessor_lines): New variables. + (preprocessor_line): Unescape filename if there were any + backslashes. + (load_file): If initial and gfc_src_file is not NULL, + use it rather than opening the file. If gfc_src_preprocessor_lines + has non-NULL elements, pass it to preprocessor_line. + (unescape_filename, gfc_read_orig_filename): New functions. + * gfortran.h (gfc_option_t): Add flag_preprocessed. + (gfc_read_orig_filename): New prototype. + * options.c (gfc_init_options): Clear flag_preprocessed. + (gfc_post_options): If flag_preprocessed, call + gfc_read_orig_filename. + (gfc_handle_option): Handle OPT_fpreprocessed. + * lang-specs.h: Pass -fpreprocessed to f951 if preprocessing + sources. + +2006-01-27 Erik Edelmann + + * symbol.c (free_old_symbol): Fix confusing comment, and add code + to free old_symbol->formal. + +2006-01-26 Paul Thomas + + PR fortran/25964 + * resolve.c (resolve_function): Exclude statement functions from + global reference checking. + + PR fortran/25084 + PR fortran/20852 + PR fortran/25085 + PR fortran/25086 + * resolve.c (resolve_function): Declare a gfc_symbol to replace the + references through the symtree to the symbol associated with the + function expresion. Give error on reference to an assumed character + length function is defined in an interface or an external function + that is not a dummy argument. + (resolve_symbol): Give error if an assumed character length function + is array-valued, pointer-valued, pure or recursive. Emit warning + that character(*) value functions are obsolescent in F95. + + PR fortran/25416 + * trans-expr.c (gfc_conv_function_call): The above patch to resolve.c + prevents any assumed character length function call from getting here + except intrinsics such as SPREAD. In this case, ensure that no + segfault occurs from referencing non-existent charlen->length-> + expr_type and provide a backend_decl for the charlen from the charlen + of the first actual argument. + + Cure temp name confusion. + * trans-expr.c (gfc_get_interface_mapping_array): Change name of + temporary from "parm" to "ifm" to avoid clash with temp coming from + trans-array.c. + +2006-01-25 Erik Edelmann PR fortran/25716 * symbol.c (free_old_symbol): New function. @@ -13,7 +1215,7 @@ * resolve.c (gfc_resolve_index): Make sure typespec is properly initialized. -2005-01-23 Paul Thomas +2006-01-23 Paul Thomas PR fortran/25901 * decl.c (get_proc_name): Replace subroutine and function attributes @@ -32,7 +1234,7 @@ * gfortranspec.c (lang_specific_driver): Update copyright notice date. -2005-01-21 Paul Thomas +2006-01-21 Paul Thomas PR fortran/25124 PR fortran/25625 @@ -102,6 +1304,9 @@ * io.c (format_asterisk): Adapt initializer. * resolve.c (resolve_branch): Allow FORTRAN 66 cross-block GOTOs as extension. + (warn_unused_label): Take gfc_st_label label as argument, adapt to + new data structure. + (gfc_resolve): Adapt call to warn_unused_label. * symbol.c (compare_st_labels): New function. (gfc_free_st_label, free_st_labels, gfc_get_st_label): Convert to using balanced binary tree. @@ -182,7 +1387,7 @@ * scanner.c (load_line): use maxlen to determine the line-length used for padding lines in fixed form. -2005-01-11 Paul Thomas +2006-01-11 Paul Thomas PR fortran/25730 * trans-types.c (copy_dt_decls_ifequal): Copy backend decl for @@ -220,13 +1425,13 @@ (gfc_simplify_ichar): Get the result from unsinged char and in the range 0 to UCHAR_MAX instead of CHAR_MIN to CHAR_MAX. -2005-01-08 Erik Edelmann +2006-01-08 Erik Edelmann PR fortran/25093 * resolve.c (resolve_fntype): Check that PUBLIC functions aren't of PRIVATE type. -2005-01-07 Tobias Schl"uter +2006-01-07 Tobias Schl"uter * decl.c (gfc_match_function_decl): Correctly error out in case of omitted function argument list.