OSDN Git Service

2006-02-24 Paul Thomas <pault@gcc.gnu.org>
[pf3gnuchains/gcc-fork.git] / gcc / fortran / ChangeLog
index 37f100d..f000725 100644 (file)
@@ -1,3 +1,838 @@
+2006-02-24  Paul Thomas  <pault@gcc.gnu.org>
+
+       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  <eedelman@gcc.gnu.org>
+
+       * module.c (read_module): Remove redundant code lines.
+
+2006-02-20 Rafael \81Ávila de Esp\81índola <rafael.espindola@gmail.com>
+       * Make-lang.in (FORTRAN): Remove
+       (.PHONY): Remove F95 and f95. Add fortran
+
+2006-02-20  Roger Sayle  <roger@eyesopen.com>
+
+       * 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  <roger@eyesopen.com>
+
+       * 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  <Thomas.Koenig@online.de>
+
+        * gfortran.texi:  Document environment variables which
+        influence runtime behavior.
+
+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