+2006-02-19 H.J. Lu <hongjiu.lu@intel.com>
+
+ * 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 <eedelman@gcc.gnu.org>
+
+ PR fortran/26201
+ * intrinsic.c (gfc_convert_type_warn): Call
+ gfc_intrinsic_symbol() on the newly created symbol.
+
+2005-02-19 Paul Thomas <pault@gcc.gnu.org>
+
+ 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 <roger@eyesopen.com>
+
+ * 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 <dannysmith@users.sourceforeg.net>
+
+ * 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 <richard@codesourcery.com>
+
+ * trans-common.c: Include rtl.h earlier.
+ * trans-decl.c: Likewise.
+
+2006-02-16 Jakub Jelinek <jakub@redhat.com>
+
+ 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.
+
+2005-02-16 Paul Thomas <pault@gcc.gnu.org>
+
+ 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 <toon@moene.indiv.nluug.nl>
+
+ PR fortran/26054
+ * options.c: Do not warn for Fortran 2003 features by default.
+
+2006-02-15 Tobias Schl\81üter <tobias.schlueter@physik.uni-muenchen.de>
+
+ * 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 <jakub@redhat.com>
+
+ 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 <Thomas.Koenig@online.de>
+
+ 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\81üter <tobias.schlueter@physik.uni-muenchen.de>
+
+ PR fortran/26277
+ * io.c (match_ltag): Mark label as referenced.
+
+2006-02-14 Jakub Jelinek <jakub@redhat.com>
+ Richard Henderson <rth@redhat.com>
+ Diego Novillo <dnovillo@redhat.com>
+
+ * 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 <pinskia@physics.uc.edu>
+ Jakub Jelinek <jakub@redhat.com>
+
+ 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 <pault@gcc.gnu.org>
+
+ 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 <eedelman@gcc.gnu.org>
+
+ 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 <kargls@comcast.net>
+
+ 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\81üter <tobias.schlueter@physik.uni-muenchen.de>
+
+ 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\81üter <tobias.schlueter@physik.uni-muenchen.de>
+
+ * 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 <pault@gcc.gnu.org>
+
+ 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 <coudert@clipper.ens.fr>
+
+ PR libfortran/25425
+ * trans-decl.c (gfc_generate_function_code): Add new argument,
+ pedantic, to set_std call.
+
+2005-02-06 Thomas Koenig <Thomas.Koenig@online.de>
+
+ 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 <roger@eyesopen.com>
+
+ * 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 <jakub@redhat.com>
+
+ 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 <roger@eyesopen.com>
+
+ * 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 <hongjiu.lu@intel.com>
+
+ PR fortran/26041
+ PR fortran/26064
+ * resolve.c (resolve_types): New function.
+ (resolve_codes): Likewise.
+ (gfc_resolve): Use them.
+
+2006-02-05 Roger Sayle <roger@eyesopen.com>
+
+ * trans-stmt.c (gfc_evaluate_where_mask): Use LOGICAL*1 for WHERE
+ masks instead of LOGICAL*4.
+
+2006-02-05 Jakub Jelinek <jakub@redhat.com>
+
+ * resolve.c (resolve_symbol): Initialize constructor_expr to NULL.
+
+2006-02-04 Thomas Koenig <Thomas.Koenig@online.de>
+
+ 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 <kargls@comcast>
+ Paul Thomas <pault@gcc.gnu.org>
+
+ PR fortran/20845
+ * resolve.c (resolve_symbol): Default initialization of derived type
+ component reguires the SAVE attribute.
+
+2006-02-02 Steven G. Kargl <kargls@comcast>
+
+ 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 <Thomas.Koenig@online.de>
+
+ 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.
+
+2005-01-30 Erik Edelmann <eedelman@gcc.gnu.org>
+
+ 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 <pault@gcc.gnu.org>
+
+ 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 <pault@gcc.gnu.org>
+
+ 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.
+
+2005-01-27 Paul Thomas <pault@gcc.gnu.org>
+
+ 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 <jakub@redhat.com>
+
+ 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.
+
+2005-01-27 Erik Edelmann <eedelman@gcc.gnu.org>
+
+ * symbol.c (free_old_symbol): Fix confusing comment, and add code
+ to free old_symbol->formal.
+
+2005-01-26 Paul Thomas <pault@gcc.gnu.org>
+
+ 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.
+
+2005-01-25 Erik Edelmann <eedelman@gcc.gnu.org>
+
+ PR fortran/25716
+ * symbol.c (free_old_symbol): New function.
+ (gfc_commit_symbols): Use it.
+ (gfc_commit_symbol): New function.
+ (gfc_use_derived): Use it.
+ * gfortran.h: Add prototype for gfc_commit_symbol.
+ * intrinsic.c (gfc_find_function): Search in 'conversion'
+ if not found in 'functions'.
+ (gfc_convert_type_warn): Add a symtree to the new
+ expression node, and commit the new symtree->n.sym.
+ * resolve.c (gfc_resolve_index): Make sure typespec is
+ properly initialized.
+
+2005-01-23 Paul Thomas <pault@gcc.gnu.org>
+
+ PR fortran/25901
+ * decl.c (get_proc_name): Replace subroutine and function attributes
+ in "already defined" test by the formal arglist pointer being non-NULL.
+
+ Fix regression in testing of admissability of attributes.
+ * symbol.c (gfc_add_attribute): If the current_attr has non-zero
+ intent, do not do the check for a dummy being used.
+ * decl.c (attr_decl1): Add current_attr.intent as the third argument
+ in the call to gfc_add_attribute.
+ * gfortran.h: Add the third argument to the prototype for
+ gfc_add_attribute.
+
+2006-01-21 Joseph S. Myers <joseph@codesourcery.com>
+
+ * gfortranspec.c (lang_specific_driver): Update copyright notice
+ date.
+
+2005-01-21 Paul Thomas <pault@gcc.gnu.org>
+
+ PR fortran/25124
+ PR fortran/25625
+ * decl.c (get_proc_name): If there is an existing
+ symbol in the encompassing namespace, call errors
+ if it is a procedure of the same name or the kind
+ field is set, indicating a type declaration.
+
+ PR fortran/20881
+ PR fortran/23308
+ PR fortran/25538
+ PR fortran/25710
+ * decl.c (add_global_entry): New function to check
+ for existing global symbol with this name and to
+ create new one if none exists.
+ (gfc_match_entry): Call add_global_entry before
+ matching argument lists for subroutine and function
+ entries.
+ * gfortran.h: Prototype for existing function,
+ global_used.
+ * resolve.c (resolve_global_procedure): New function
+ to check global symbols for procedures.
+ (resolve_call, resolve_function): Calls to this
+ new function for non-contained and non-module
+ procedures.
+ * match.c (match_common): Add check for existing
+ global symbol, creat one if none exists and emit
+ error if there is a clash.
+ * parse.c (global_used): Remove static and use the
+ gsymbol name rather than the new_block name, so that
+ the function can be called from resolve.c.
+ (parse_block_data, parse_module, add_global_procedure):
+ Improve checks for existing gsymbols. Emit error if
+ already defined or if references were to another type.
+ Set defined flag.
+
+ PR fortran/PR24276
+ * trans-expr.c (gfc_conv_aliased_arg): New function called by
+ gfc_conv_function_call that coverts an expression for an aliased
+ component reference to a derived type array into a temporary array
+ of the same type as the component. The temporary is passed as an
+ actual argument for the procedure call and is copied back to the
+ derived type after the call.
+ (is_aliased_array): New function that detects an array reference
+ that is followed by a component reference.
+ (gfc_conv_function_call): Detect an aliased actual argument with
+ is_aliased_array and convert it to a temporary and back again
+ using gfc_conv_aliased_arg.
+
+2006-01-19 Tobias Schl\81üter <tobias.schlueter@physik.uni-muenchen.de>
+
+ * gfortranspec.c: Update copyright years.
+ * trans.c: Likewise.
+ * trans-array.c: Likewise.
+ * trans-array.h: Likewise.
+ * trans-decl.c: Likewise.
+ * trans-stmt.c: Likewise.
+ * trans-stmt.h: Likewise.
+ * trans-types.c: Likewise.
+
+2006-01-18 Tobias Schl\81üter <tobias.schlueter@physik.uni-muenchen.de>
+
+ PR fortran/18540
+ PR fortran/18937
+ * gfortran.h (BBT_HEADER): Move definition up.
+ (gfc_st_label): Add BBT_HEADER, remove 'prev' and 'next'.
+ * 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.
+ * decl.c (match_char_length, gfc_match_old_kind_spec): Do away
+ with 'cnt'.
+ (warn_unused_label): Adapt to binary tree.
+ * match.c (gfc_match_small_literal_int): Only set cnt if non-NULL.
+ * primary.c (match_kind_param): Do away with cnt.
+
+2006-01-18 Paul Thomas <pault@gcc.gnu.org>
+
+ PR fortran/20869
+ PR fortran/20875
+ PR fortran/25024
+ * symbol.c (check_conflict): Add pointer valued elemental
+ functions and internal procedures with the external attribute
+ to the list of conflicts.
+ (gfc_add_attribute): New catch-all function to perform the
+ checking of symbol attributes for attribute declaration
+ statements.
+ * decl.c (attr_decl1): Call gfc_add_attribute for each of -
+ (gfc_match_external, gfc_match_intent, gfc_match_intrinsic,
+ gfc_match_pointer, gfc_match_dimension, gfc_match_target):
+ Remove spurious calls to checks in symbol.c. Set the
+ attribute directly and use the call to attr_decl() for
+ checking.
+ * gfortran.h: Add prototype for gfc_add_attribute.
+
+ PR fortran/25785
+ * resolve.c (resolve_function): Exclude PRESENT from assumed size
+ argument checking. Replace strcmp's with comparisons with generic
+ codes.
+
+2006-01-16 Rafael \81Ávila de Esp\81índola <rafael.espindola@gmail.com>
+
+ * gfortranspec.c (lang_specific_spec_functions): Remove.
+
+2006-01-16 Richard Guenther <rguenther@suse.de>
+
+ * trans-stmt.c (gfc_trans_if_1): Use fold_buildN and build_int_cst.
+ (gfc_trans_arithmetic_if): Likewise.
+ (gfc_trans_simple_do): Likewise.
+ (gfc_trans_do): Likewise.
+ (gfc_trans_do_while): Likewise.
+ (gfc_trans_logical_select): Likewise.
+ (gfc_trans_forall_loop): Likewise.
+ (generate_loop_for_temp_to_lhs): Likewise.
+ (generate_loop_for_rhs_to_temp): Likewise.
+ (gfc_trans_allocate): Likewise.
+ * trans.c (gfc_add_expr_to_block): Do not fold expr again.
+
+2006-01-16 Richard Guenther <rguenther@suse.de>
+
+ * trans-expr.c (gfc_conv_function_call): Use fold_build2.
+ * trans-stmt.c (gfc_trans_goto): Likewise. Use build_int_cst.
+ * trans.c (gfc_trans_runtime_check): Don't fold the condition
+ again.
+
+2006-01-13 Steven G. Kargl <kargls@comcast.net>
+
+ PR fortran/25756
+ * symbol.c (gfc_free_st_label): Give variable meaningful name. Remove
+ unneeded parenthesis. Fix-up the head of the list (2 lines gleaned
+ from g95).
+
+2006-01-13 Diego Novillo <dnovillo@redhat.com>
+
+ * trans.c (gfc_add_expr_to_block): Do not fold tcc_statement
+ nodes.
+
+2006-01-11 Tobias Schl\81üter <tobias.schlueter@physik.uni-muenchen.de>
+
+ * parse.c (next_fixed): Remove superfluous string concatenation.
+
+2006-01-11 Bernhard Fischer <rep.nop@aon.at>
+
+ PR fortran/25486
+ * scanner.c (load_line): use maxlen to determine the line-length used
+ for padding lines in fixed form.
+
+2005-01-11 Paul Thomas <pault@gcc.gnu.org>
+
+ PR fortran/25730
+ * trans-types.c (copy_dt_decls_ifequal): Copy backend decl for
+ character lengths.
+
+2006-01-09 Andrew Pinski <pinskia@physics.uc.edu>
+
+ fortran/24936
+ * trans-stmt.c (gfc_trans_pointer_assign_need_temp): Use fold_convert
+ to avoid type mismatch.
+
+2006-01-09 Andrew Pinski <pinskia@physics.uc.edu>
+
+ PR fortran/21977
+ * trans-decl.c (gfc_generate_function_code): Move the NULLing of
+ current_fake_result_decl down to below generate_local_vars.
+
+2006-01-09 Feng Wang <fengwang@nudt.edu.cn>
+
+ PR fortran/12456
+ * trans-expr.c (gfc_to_single_character): New function that converts
+ string to single character if its length is 1.
+ (gfc_build_compare_string):New function that compare string and handle
+ single character specially.
+ (gfc_conv_expr_op): Use gfc_build_compare_string.
+ (gfc_trans_string_copy): Use gfc_to_single_character.
+ * trans-intrinsic.c (gfc_conv_intrinsic_strcmp): Use
+ gfc_build_compare_string.
+ * trans.h (gfc_build_compare_string): Add prototype.
+
+2006-01-09 Feng Wang <fengwang@nudt.edu.cn>
+
+ * simplify.c (gfc_simplify_char): Use UCHAR_MAX instead of literal
+ constant.
+ (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 <eedelman@gcc.gnu.org>
+
+ PR fortran/25093
+ * resolve.c (resolve_fntype): Check that PUBLIC functions
+ aren't of PRIVATE type.
+
+2005-01-07 Tobias Schl"uter <tobias.schlueter@physik.uni-muenchen.de>
+
+ * decl.c (gfc_match_function_decl): Correctly error out in case of
+ omitted function argument list.
+
+2006-01-07 Paul Thomas <pault@gcc.gnu.org>
+
+ PR fortran/22146
+ * trans-array.c (gfc_reverse_ss): Remove static attribute.
+ (gfc_walk_elemental_function_args): Replace gfc_expr * argument for
+ the function call with the corresponding gfc_actual_arglist*. Change
+ code accordingly.
+ (gfc_walk_function_expr): Call to gfc_walk_elemental_function_args
+ now requires the actual argument list instead of the expression for
+ the function call.
+ * trans-array.h: Modify the prototype for gfc_walk_elemental_function_args
+ and provide a prototype for gfc_reverse_ss.
+ * trans-stmt.h (gfc_trans_call): Add the scalarization code for the case
+ where an elemental subroutine has array valued actual arguments.
+
+ PR fortran/25029
+ PR fortran/21256
+ PR fortran/20868
+ PR fortran/20870
+ * resolve.c (check_assumed_size_reference): New function to check for upper
+ bound in assumed size array references.
+ (resolve_assumed_size_actual): New function to do a very restricted scan
+ of actual argument expressions of those procedures for which incomplete
+ assumed size array references are not allowed.
+ (resolve_function, resolve_call): Switch off assumed size checking of
+ actual arguments, except for elemental procedures and intrinsic
+ inquiry functions, in some circumstances.
+ (resolve_variable): Call check_assumed_size_reference.
+
+2006-01-05 Jerry DeLisle <jvdelisle@gcc.gnu.org>
+
+ PR fortran/24268
+ * io.c (next_char_not_space): New function that returns the next
+ character that is not white space.
+ (format_lex): Use the new function to skip whitespace within
+ a format string.
+
+2006-01-05 Erik Edelmann <eedelman@gcc.gnu.org>
+
+ PR fortran/23675
+ * expr.c (gfc_expr_set_symbols_referenced): New function.
+ * gfortran.h: Add a function prototype for it.
+ * resolve.c (resolve_function): Use it for
+ use associated character functions lengths.
+ * expr.c, gfortran.h, resolve.c: Updated copyright years.
+
2006-01-03 Steven G. Kargl <kargls@comcast.net>
PR fortran/25101