summaryrefslogtreecommitdiffstats
path: root/gcc/fortran/trans.h
Commit message (Collapse)AuthorAgeFilesLines
...
* * arith.h: Update copyright years.tobi2007-04-171-1/+2
| | | | | | | | | | | | | | | | | | | | | | | * dependency.h: Likewise. * gfortran.h: Likewise. * lang-specs.h: Likewise. * parse.h: Likewise. * symbol.c: Likewise. * trans.h: Likewise. * trans.c: Likewise. * trans-array.c: Likewise. * trans-common.c: Likewise. * trans-const.h: Likewise. * trans-const.c: Likewise. * trans-decl.c: Likewise. * trans-expr.c: Likewise. * trans-io.c: Likewise. * trans-openmp.c: Likewise. * trans-types.h: Likewise. * types.def: Likewise. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@123911 138bc75d-0d04-0410-961f-82ee72b054a4
* PR fortran/31304fxcoudert2007-04-031-1/+0
| | | | | | | | | | | | | | | | | | | | | | | | * fortran/gfortran.h (gfc_charlen_int_kind): New prototype. * fortran/trans-types.c (gfc_charlen_int_kind): New variable. (gfc_init_types): Define gfc_charlen_int_kind. * fortran/trans.h (gfor_fndecl_string_repeat): Remove prototype. * fortran/trans-decl.c (gfor_fndecl_string_repeat): Delete. (gfc_build_intrinsic_function_decls): Don't set gfor_fndecl_string_repeat. * fortran/trans-intrinsic.c (gfc_conv_intrinsic_repeat): Rewrite so that we don't have to call a library function. * fortran/simplify.c (gfc_simplify_repeat): Perform the necessary checks on the NCOPIES argument, and work with arbitrary size arguments. * intrinsics/string_intrinsics.c (string_repeat): Remove. * gfortran.dg/repeat_2.f90: New test. * gfortran.dg/repeat_3.f90: New test. * gfortran.dg/repeat_4.f90: New test. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@123481 138bc75d-0d04-0410-961f-82ee72b054a4
* 2007-02-02 Paul Thomas <pault@gcc.gnu.org>pault2007-02-021-0/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | PR fortran/30284 PR fortran/30626 * trans-expr.c (gfc_conv_aliased_arg): Remove static attribute from function and make sure that substring lengths are translated. (is_aliased_array): Remove static attribute. * trans.c : Add prototypes for gfc_conv_aliased_arg and is_aliased_array. * trans-io.c (set_internal_unit): Add the post block to the arguments of the function. Use is_aliased_array to check if temporary is needed; if so call gfc_conv_aliased_arg. (build_dt): Pass the post block to set_internal_unit and add to the block after all io activiy is done. 2007-02-02 Paul Thomas <pault@gcc.gnu.org> PR fortran/30284 PR fortran/30626 * io/transfer.c (init_loop_spec, next_array_record): Change to lbound rather than unity base. 2007-02-02 Paul Thomas <pault@gcc.gnu.org> PR fortran/30284 * gfortran.dg/arrayio_11.f90.f90: New test. PR fortran/30626 * gfortran.dg/arrayio_12.f90.f90: New test. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@121500 138bc75d-0d04-0410-961f-82ee72b054a4
* 2007-01-27 Paul Thomas <pault@gcc.gnu.org>pault2007-01-271-0/+3
| | | | | | | | | | | | | | | | | | | | | | | | | PR fortran/30407 * trans-expr.c (gfc_conv_operator_assign): New function. * trans.h : Add prototype for gfc_conv_operator_assign. * trans-stmt.c (gfc_trans_where_assign): Add a gfc_symbol for a potential operator assignment subroutine. If it is non-NULL call gfc_conv_operator_assign instead of the first assignment. ( gfc_trans_where_2): In the case of an operator assignment, extract the argument expressions from the code for the subroutine call and pass the symbol to gfc_trans_where_assign. resolve.c (resolve_where, gfc_resolve_where_code_in_forall, gfc_resolve_forall_body): Resolve the subroutine call for operator assignments. 2007-01-27 Paul Thomas <pault@gcc.gnu.org> PR fortran/30407 * gfortran.dg/where_operator_assign_1.f90: New test. * gfortran.dg/where_operator_assign_2.f90: New test. * gfortran.dg/where_operator_assign_3.f90: New test. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@121235 138bc75d-0d04-0410-961f-82ee72b054a4
* 2006-12-05 Paul Thomas <pault@gcc.gnu.org>pault2006-12-051-0/+1
| | | | | | | | | | | | | | | | | | | | | | | | PR fortran/30003 * trans-array.c (gfc_trans_create_temp_array): Set the section ends to zero. (gfc_conv_array_transpose): Likewise. (gfc_conv_section_startstride): Declare an expression for end, set it from a the array reference and evaluate it for the info structure. Zero the ends in the ss structure and set end, used in the bounds check, from the info structure. trans.h: Add and end array to the gfc_ss_info structure. 2006-12-05 Paul Thomas <pault@gcc.gnu.org> PR fortran/30003 * gfortran.dg/allocatable_function_1.f90: Increase the number of expected calls of free to 10; the lhs section reference is now evaluated so there is another call to bar. Change the comment appropriately. * gfortran.dg/array_section_1.f90: New test. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@119556 138bc75d-0d04-0410-961f-82ee72b054a4
* Merge gimple-tuples-branch into mainline.aldyh2006-12-051-2/+6
| | | | git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@119546 138bc75d-0d04-0410-961f-82ee72b054a4
* * gcc/java/decl.c: Include langhooks.h.espindola2006-10-231-2/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | (builtin_function): Remove. (java_init_decl_processing): Replace calls to builtin_function with add_builtin_function. * gcc/java/Make-lang.in (jc1$(exeext)): Depend on and link with attribs.o. (java/decl.o): Depend on langhooks.h. * gcc/java/java-tree.h (builtin_function): Remove. * gcc/tree.c (local_define_builtin): Replace calls to lang_hooks.builtin_function with add_builtin_function. * gcc/objc/objc-act.c (synth_module_prologue): Replace calls to builtin_function with add_builtin_function. (build_next_objc_exception_stuff): Replace calls to builtin_function with add_builtin_function. (build_objc_exception_stuff): Replace calls to builtin_function with add_builtin_function. * gcc/objcp/objcp-decl.h (objcp_builtin_function): Remove. * gcc/cp/decl.c (builtin_function_1): Move common code to add_builtin_function. (builtin_function): Rename to cxx_builtin_function. Change the signature. * gcc/cp/call.c: Include langhooks.h. (build_java_interface_fn_ref): Replace calls to builtin_function with add_builtin_function. * gcc/cp/Make-lang.in (cp/call.o): Depend on langhooks.h. * gcc/cp/cp-objcp-common.h (LANG_HOOKS_BUILTIN_FUNCTION): Define as cxx_builtin_function. * gcc/cp/cp-tree.h (builtin_function): Rename to cxx_builtin_function. Change the signature. * gcc/c-objc-common.h (LANG_HOOKS_BUILTIN_FUNCTION): Define as c_builtin_function. * gcc/c-tree.h (builtin_function): Rename to c_builtin_function. Change the signature. * gcc/ada/utils.c (builtin_function): Rename to gnat_builtin_function. Move common code to add_builtin_function. * gcc/ada/misc.c (LANG_HOOKS_BUILTIN_FUNCTION): Define as gnat_builtin_function. * gcc/ada/gigi.h (builtin_function): Rename to gnat_builtin_function. Change the signature. * gcc/c-decl.c (builtin_function): Rename to c_builtin_function. Move common code to add_builtin_function. * gcc/fortran/Make-lang.in (f951$(exeext)): Depend on and link with attribs.o. * gcc/fortran/trans.h (builtin_function): Rename to gfc_builtin_function. Change the signature. * gcc/fortran/f95-lang.c (LANG_HOOKS_BUILTIN_FUNCTION): Define as gfc_builtin_function. (builtin_function): Rename to gfc_builtin_function. Move common code to builtin_function. (gfc_define_builtin): Replace calls to builtin_function with gfc_define_builtin. * gcc/langhooks.c (add_builtin_function): New function. (lhd_builtin_function): New function. * gcc/langhooks.h (struct lang_hooks): Change the signature of builtin_function. (add_builtin_function): New function. * gcc/treelang/treetree.c (builtin_function): Remove. * gcc/tree-ssa-loop-prefetch.c (tree_ssa_prefetch_arrays): Replace calls to lang_hooks.builtin_function with add_builtin_function. * gcc/c-common.c (decl_builtin_1): Replace calls to lang_hooks.builtin_function with add_builtin_function. * gcc/config/alpha/alpha.c (alpha_init_builtins): Replace calls to lang_hooks.builtin_function with add_builtin_function. * gcc/config/frv/frv.c (def_builtin): Replace calls to lang_hooks.builtin_function with add_builtin_function. * gcc/config/s390/s390.c (s390_init_builtins): Replace calls to lang_hooks.builtin_function with add_builtin_function. * gcc/config/sparc/sparc.c (def_builtin): Replace calls to lang_hooks.builtin_function with add_builtin_function. * gcc/config/i386/i386.c (def_builtin): Replace calls to lang_hooks.builtin_function with add_builtin_function. (def_builtin): Replace calls to lang_hooks.builtin_function with add_builtin_function. * gcc/config/sh/sh.c (sh_media_init_builtins): Replace calls to lang_hooks.builtin_function with add_builtin_function. * gcc/config/c4x/c4x.c (c4x_init_builtins): Replace calls to lang_hooks.builtin_function with add_builtin_function. * gcc/config/stormy16/stormy16.c (xstormy16_init_builtins): Replace calls to lang_hooks.builtin_function with add_builtin_function. * gcc/config/iq2000/iq2000.c (def_builtin): Replace calls to lang_hooks.builtin_function with add_builtin_function. * gcc/config/ia64/ia64.c (def_builtin): Replace calls to lang_hooks.builtin_function with add_builtin_function. * gcc/config/rs6000/rs6000.c (def_builtin): Replace calls to lang_hooks.builtin_function with add_builtin_function. (altivec_init_builtins): Replace calls to lang_hooks.builtin_function with add_builtin_function. * gcc/config/arm/arm.c (def_mbuiltin): Replace calls to lang_hooks.builtin_function with add_builtin_function. (arm_init_tls_builtins): Replace calls to lang_hooks.builtin_function with add_builtin_function. * gcc/config/mips/mips.c (mips_init_builtins): Replace calls to lang_hooks.builtin_function with add_builtin_function. * gcc/config/bfin/bfin.c (def_builtin): Replace calls to lang_hooks.builtin_function with add_builtin_function. * gcc/langhooks-def.h (lhd_builtin_function): New function. (LANG_HOOKS_BUILTIN_FUNCTION): Define as lhd_builtin_function. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@117981 138bc75d-0d04-0410-961f-82ee72b054a4
* PR fortran/26025fxcoudert2006-10-221-1/+8
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * lang.opt: Add -fexternal-blas and -fblas-matmul-limit options. * options.c (gfc_init_options): Initialize new flags. (gfc_handle_option): Handle new flags. * gfortran.h (gfc_option): Add flag_external_blas and blas_matmul_limit flags. * trans-expr.c (gfc_conv_function_call): Use new argument append_args, appending it at the end of the argument list built for a function call. * trans-stmt.c (gfc_trans_call): Use NULL_TREE for the new append_args argument to gfc_trans_call. * trans.h (gfc_conv_function_call): Update prototype. * trans-decl.c (gfc_build_intrinsic_function_decls): Add prototypes for BLAS ?gemm routines. * trans-intrinsic.c (gfc_conv_intrinsic_funcall): Generate the extra arguments given to the library matmul function, and give them to gfc_conv_function_call. * invoke.texi: Add documentation for -fexternal-blas and -fblas-matmul-limit. * m4/matmul.m4: Add possible call to gemm routine. * generated/matmul_r8.c: Regenerate. * generated/matmul_r16.c: Regenerate. * generated/matmul_c8.c: Regenerate. * generated/matmul_i8.c: Regenerate. * generated/matmul_c16.c: Regenerate. * generated/matmul_r10.c: Regenerate. * generated/matmul_r4.c: Regenerate. * generated/matmul_c10.c: Regenerate. * generated/matmul_c4.c: Regenerate. * generated/matmul_i4.c: Regenerate. * generated/matmul_i16.c: Regenerate. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@117948 138bc75d-0d04-0410-961f-82ee72b054a4
* 2006-10-19 Paul Thomas <pault@gcc.gnu.org>pault2006-10-191-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | PR fortran/29216 PR fortran/29314 * gfortran.h : Add EXEC_INIT_ASSIGN. * dump-parse-tree.c (gfc_show_code_node): The same. * trans-openmp.c (gfc_trans_omp_array_reduction): Set new argument for gfc_trans_assignment to false. * trans-stmt.c (gfc_trans_forall_1): The same. * trans-expr.c (gfc_conv_function_call, gfc_trans_assign, gfc_trans_arrayfunc_assign, gfc_trans_assignment): The same. In the latter function, use the new flag to stop the checking of the lhs for deallocation. (gfc_trans_init_assign): New function. * trans-stmt.h : Add prototype for gfc_trans_init_assign. * trans.c (gfc_trans_code): Implement EXEC_INIT_ASSIGN. * trans.h : Add new boolean argument to the prototype of gfc_trans_assignment. * resolve.c (resolve_allocate_exp): Replace EXEC_ASSIGN by EXEC_INIT_ASSIGN. (resolve_code): EXEC_INIT_ASSIGN does not need resolution. (apply_default_init): New function. (resolve_symbol): Call it for derived types that become defined but which do not already have an initialization expression.. * st.c (gfc_free_statement): Include EXEC_INIT_ASSIGN. 2006-10-19 Paul Thomas <pault@gcc.gnu.org> PR fortran/29216 * gfortran.dg/result_default_init_1.f90: New test. PR fortran/29314 * gfortran.dg/automatic_default_init_1.f90: New test. * gfortran.dg/alloc_comp_basics_1.f90: Reduce deallocate count from 38 to 33. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@117879 138bc75d-0d04-0410-961f-82ee72b054a4
* 2006-10-05 Erik Edelmann <edelmann@gcc.gnu.org>pault2006-10-081-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Paul Thomas <pault@gcc.gnu.org> PR fortran/20541 * interface.c (gfc_compare_derived_types): Add comparison of the allocatable field. * intrinsic.c (add_subroutines): Add MOVE_ALLOC. * trans-expr.c (gfc_conv_aliased_arg, gfc_trans_subarray_assign, gfc_trans_subcomponent_assign, gfc_conv_string_parameter, gfc_trans_scalar_assign): Add extra arguments l_is_temp and r_is_var to references to latter function. (gfc_conv_function_call): Add enum for types of argument and an associated variable parm_kind. Deallocate components of INTENT(OUT) and non-variable arrays. (gfc_trans_subcomponent_assign): Add block to assign arrays to allocatable components. (gfc_trans_scalar_assign): Add block to handle assignments of derived types with allocatable components, using the above new arguments to control allocation/deallocation of memory and the copying of allocated arrays. * trans-array.c (gfc_array_allocate): Remove old identification of pointer and replace with that of an allocatable array. Add nullify of structures with allocatable components. (gfc_conv_array_initializer): Treat EXPR_NULL. (gfc_conv_array_parameter): Deallocate allocatable components of non-variable structures. (gfc_trans_dealloc_allocated): Use second argument of library deallocate to inhibit, without error, freeing NULL pointers. (get_full_array_size): New function to return the size of a full array. (gfc_duplicate_allocatable): New function to allocate and copy allocated data. (structure_alloc_comps): New recursive function to deallocate, nullify or copy allocatable components. (gfc_nullify_alloc_comp, gfc_deallocate_alloc_comp, gfc_copy_alloc_comp): New interface functions to call previous. (gfc_trans_deferred_array): Add the code to nullify allocatable components, when entering scope, and to deallocate them on leaving. Do not call gfc_trans_static_array_pointer and return for structures with allocatable components and default initializers. * symbol.c (gfc_set_component_attr): Set allocatable field. (gfc_get_component_attr): Set the allocatable attribute. * intrinsic.h : Prototype for gfc_check_move_alloc. * decl.c (build_struct): Apply TR15581 constraints for allocatable components. (variable_decl): Default initializer is always NULL for allocatable components. (match_attr_spec): Allow, or not, allocatable components, according to the standard in force. * trans-array.h : Prototypes for gfc_nullify_alloc_comp, gfc_deallocate_alloc_comp, gfc_copy_alloc_comp and gfc_duplicate_allocatable. * gfortran.texi : Add mention of TR15581 extensions. * gfortran.h : Add attribute alloc_comp, add gfc_components field allocatable and add the prototype for gfc_expr_to_initialize. * trans-stmt.c (generate_loop_for_temp_to_lhs, generate_loop_for_rhs_to_temp, gfc_trans_where_assign, gfc_trans_where_3): Add extra arguments to calls to gfc_trans_scalar_assign and set appropriately. (gfc_trans_allocate): Nullify allocatable components. (gfc_trans_deallocate): Deallocate to ultimate allocatable components but stop at ultimate pointer components. * module.c (mio_symbol_attribute, mio_symbol_attribute, mio_component): Add module support for allocatable components. * trans-types.c (gfc_get_derived_type): Treat allocatable components. * trans.h : Add two boolean arguments to gfc_trans_scalar_assign. * resolve.c (resolve_structure_cons): Check conformance of constructor element and the component. (resolve_allocate_expr): Add expression to nullify the constructor expression for allocatable components. (resolve_transfer): Inhibit I/O of derived types with allocatable components. (resolve_fl_derived): Skip check of bounds of allocatable components. * trans-decl.c (gfc_get_symbol_decl): Add derived types with allocatable components to deferred variable. (gfc_trans_deferred_vars): Make calls for derived types with allocatable components to gfc_trans_deferred_array. (gfc_generate_function_code): Nullify allocatable component function result on entry. * parse.c (parse_derived): Set symbol attr.allocatable if allocatable components are present. * check.c (gfc_check_allocated): Enforce attr.allocatable for intrinsic arguments. (gfc_check_move_alloc): Check arguments of move_alloc. * primary.c (gfc_variable_attr): Set allocatable attribute. * intrinsic.texi : Add index entry and section for for move_alloc. PR fortran/29115 * resolve.c (resolve_structure_cons): It is an error if the pointer component elements of a derived type constructor are not pointer or target. PR fortran/29211 * trans-stmt.c (generate_loop_for_temp_to_lhs, generate_loop_for_rhs_to_temp): Provide a string length for the temporary by copying that of the other side of the scalar assignment. 2006-10-05 Paul Thomas <pault@gcc.gnu.org> Erik Edelmann <edelmann@gcc.gnu.org> PR libgfortran/20541 * Makefile.in : Add move_alloc. * intrinsics/move_alloc.c: New function. * Makefile.am : Add move_alloc. 2006-10-05 Erik Edelmann <edelmann@gcc.gnu.org> Paul Thomas <pault@gcc.gnu.org> PR fortran/20541 * gfortran.dg/alloc_comp_basics_1.f90: New test. * gfortran.dg/alloc_comp_basics_2.f90: New test. * gfortran.dg/alloc_comp_assign_1.f90: New test. * gfortran.dg/alloc_comp_assign_2.f90: New test. * gfortran.dg/alloc_comp_assign_3.f90: New test. * gfortran.dg/alloc_comp_assign_4.f90: New test. * gfortran.dg/alloc_comp_constraint_1.f90: New test. * gfortran.dg/alloc_comp_constraint_2.f90: New test. * gfortran.dg/alloc_comp_constraint_3.f90: New test. * gfortran.dg/alloc_comp_constructor_1.f90: New test. * gfortran.dg/alloc_comp_constructor_2.f90: New test. * gfortran.dg/alloc_comp_initializer_1.f90: New test. * gfortran.dg/alloc_comp_std.f90: New test. * gfortran.dg/move_alloc.f90: New test. PR fortran/29115 * gfortran.dg/derived_constructor_comps_2.f90: New test. PR fortran/29211 * gfortran.dg/forall_char_dependencies_1.f90: New test. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@117558 138bc75d-0d04-0410-961f-82ee72b054a4
* PR fortran/28163fxcoudert2006-07-121-1/+0
| | | | | | | | | | | | | * trans-expr.c (gfc_trans_string_copy): Generate inline code to perform string copying instead of calling a library function. * trans-decl.c (gfc_build_intrinsic_function_decls): Don't build decl for copy_string. * trans.h (gfor_fndecl_copy_string): Remove prototype. * intrinsics/string_intrinsics.c (copy_string): Remove function. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@115372 138bc75d-0d04-0410-961f-82ee72b054a4
* PR fortran/27916jakub2006-06-091-0/+1
| | | | | | | | | | | | * trans-openmp.c (gfc_omp_clause_default_ctor): New function. * trans.h (gfc_omp_clause_default_ctor): New prototype. * f95-lang.c (LANG_HOOKS_OMP_CLAUSE_DEFAULT_CTOR): Define. * testsuite/libgomp.fortran/pr27916-1.f90: New test. * testsuite/libgomp.fortran/pr27916-2.f90: New test. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@114520 138bc75d-0d04-0410-961f-82ee72b054a4
* * trans.c (gfc_msg_bounds, gfc_msg_fault, gfc_msg_wrong_return):fxcoudert2006-06-031-1/+8
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Add strings for common runtime error messages. (gfc_trans_runtime_check): Add a locus argument, use a string and not a string tree for the message. * trans.h (gfc_trans_runtime_check): Change prototype accordingly. (gfc_msg_bounds, gfc_msg_fault, gfc_msg_wrong_return): Add proto. * trans-const.c (gfc_strconst_bounds, gfc_strconst_fault, gfc_strconst_wrong_return, gfc_strconst_current_filename): Remove. (gfc_init_constants): Likewise. * trans-const.h: Likewise. * trans-decl.c (gfc_build_builtin_function_decls): Call to _gfortran_runtime_error has only one argument, the message string. * trans-array.h (gfc_conv_array_ref): Add a symbol argument and a locus. * trans-array.c (gfc_trans_array_bound_check): Build precise error messages. (gfc_conv_array_ref): Use the new symbol argument and the locus to build more precise error messages. (gfc_conv_ss_startstride): More precise error messages. * trans-expr.c (gfc_conv_variable): Give symbol reference and locus to gfc_conv_array_ref. (gfc_conv_function_call): Use the new prototype for gfc_trans_runtime_check. * trans-stmt.c (gfc_trans_goto): Build more precise error message. * trans-io.c (set_string): Likewise. * trans-intrinsic.c (gfc_conv_intrinsic_bound): Use new prototype for gfc_trans_runtime_check. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@114346 138bc75d-0d04-0410-961f-82ee72b054a4
* 2006-05-07 Paul Thomas <pault@gcc.gnu.org>pault2006-05-071-0/+3
| | | | | | | | | | | | | | | | | | PR fortran/24813 * trans-array.c (get_array_ctor_strlen): Remove static attribute. * trans.h: Add prototype for get_array_ctor_strlen. * trans-intrinsic.c (gfc_conv_intrinsic_len): Switch on EXPR_ARRAY and call get_array_ctor_strlen. 2006-05-07 Paul Thomas <pault@gcc.gnu.org> PR fortran/24813 * gfortran.dg/char_cons_len_1.f90: New test. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@113594 138bc75d-0d04-0410-961f-82ee72b054a4
* 2006-04-03 Paul Thomas <pault@gcc.gnu.org>pault2006-04-031-0/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | PR fortran/26981 * trans.h : Prototype for gfc_conv_missing_dummy. * trans-expr (gfc_conv_missing_dummy): New function (gfc_conv_function_call): Call it and tidy up some of the code. * trans-intrinsic (gfc_conv_intrinsic_function_args): The same. PR fortran/26976 * array.c (gfc_array_dimen_size): If available, return shape[dimen]. * resolve.c (resolve_function): If available, use the argument shape for the function expression. * iresolve.c (gfc_resolve_transfer): Set shape[0] = size. 2006-04-03 Paul Thomas <pault@gcc.gnu.org> PR fortran/26981 * gfortran.dg/missing_optional_dummy_1.f90: New test. PR fortran/26976 * gfortran.dg/compliant_elemental_intrinsics_1.f90: New test. * gfortran.dg/initialization_1.f90: Make assignment compliant. * gfortran.dg/transfer_array_intrinsic_1.f90: Simplify. * gfortran.dg/transfer_array_intrinsic_2.f90: Make assignments compliant and detect bigendian-ness. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@112634 138bc75d-0d04-0410-961f-82ee72b054a4
* 2006-03-09 Paul Thomas <pault@gcc.gnu.org>pault2006-03-091-0/+4
| | | | | | | | | | | | | | | | | | | 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-09 Paul Thomas <pault@gcc.gnu.org> * PR fortran/26257 gfortran.dg/auto_char_len_3.f90: New test git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@111860 138bc75d-0d04-0410-961f-82ee72b054a4
* 2006-03-06 Paul Thomas <pault@gcc.gnu.org>pault2006-03-061-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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-06 Paul Thomas <pault@gcc.gnu.org> PR fortran/26107 * pure_dummy_length_1.f90: New test. PR fortran/19546 * gfortran.dg/parent_result_ref_1.f90: New test. * gfortran.dg/parent_result_ref_2.f90: New test. * gfortran.dg/parent_result_ref_3.f90: New test. * gfortran.dg/parent_result_ref_4.f90: New test. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@111793 138bc75d-0d04-0410-961f-82ee72b054a4
* 2006-03-03 Thomas Koenig <Thomas.Koenig@online.de>tkoenig2006-03-031-0/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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-03 Thomas Koenig <Thomas.Koenig@online.de> PR fortran/25031 * runtime/memory.c: Adjust copyright years. (allocate_array): New function. (allocate64_array): New function. * libgfortran.h (error_codes): Add ERROR_ALLOCATION. 2006-03-03 Thomas Koenig <Thomas.Koenig@online.de> PR fortran/25031 * multiple_allocation_1.f90: New test. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@111677 138bc75d-0d04-0410-961f-82ee72b054a4
* gcc/fortran/jakub2006-02-141-0/+13
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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. gcc/testsuite/ 2006-02-14 Jakub Jelinek <jakub@redhat.com> Diego Novillo <dnovillo@redhat.com> Uros Bizjak <uros@kss-loka.si> * gfortran.dg/gomp: New directory. libgomp/ 2006-02-14 Jakub Jelinek <jakub@redhat.com> * testsuite/libgomp.fortran/vla7.f90: Add -w to options. Remove tests for returning assumed character length arrays. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@110984 138bc75d-0d04-0410-961f-82ee72b054a4
* Backport from gomp-20050608-branchjakub2006-02-061-0/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * 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. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@110653 138bc75d-0d04-0410-961f-82ee72b054a4
* Add 2006 copyright year.fengwang2006-01-091-1/+1
| | | | git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@109490 138bc75d-0d04-0410-961f-82ee72b054a4
* fortran ChangeLog entry:fengwang2006-01-091-0/+3
| | | | | | | | | | | | | | | | | | | | | | | | | 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. testsuite ChangeLog entry: 2006-01-09 Feng Wang <fengwang@nudt.edu.cn> PR fortran/12456 * gfortran.dg/single_char_string.f90: New test. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@109489 138bc75d-0d04-0410-961f-82ee72b054a4
* 2005-12-16 Richard Guenther <rguenther@suse.de>rguenth2005-12-161-3/+0
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * trans.h (tree): Remove declaration of gfc_build_function_call. * trans.c (gfc_build_function_call): Remove. (gfc_build_array_ref): Use build_function_call_expr. (gfc_trans_runtime_check): Likewise. * trans-array.c (gfc_trans_allocate_array_storage): Likewise. (gfc_grow_array): Likewise. (gfc_trans_array_ctor_element): Likewise. (gfc_trans_array_constructor_value): Likewise. (gfc_array_allocate): Likewise. (gfc_array_deallocate): Likewise. (gfc_trans_auto_array_allocation): Likewise. (gfc_trans_dummy_array_bias): Likewise. (gfc_conv_array_parameter): Likewise. * trans-expr.c (gfc_conv_power_op): Likewise. (gfc_conv_string_tmp): Likewise. (gfc_conv_concat_op): Likewise. (gfc_conv_expr_op): Likewise. (gfc_trans_string_copy): Likewise. * trans-decl.c (build_entry_thunks): Likewise. (gfc_generate_function_code): Likewise. (gfc_generate_constructors): Likewise. * trans-io.c (gfc_trans_open): Likewise. (gfc_trans_close): Likewise. (build_filepos): Likewise. (gfc_trans_inquire): Likewise. (transfer_namelist_element): Likewise. (build_dt): Likewise. (gfc_trans_dt_end): Likewise. (transfer_expr): Likewise. (transfer_array_desc): Likewise. * trans-stmt.c (gfc_trans_pause): Likewise. (gfc_trans_stop): Likewise. (gfc_trans_character_select): Likewise. (gfc_do_allocate): Likewise. (gfc_trans_assign_need_temp): Likewise. (gfc_trans_pointer_assign_need_temp): Likewise. (gfc_trans_forall_1): Likewise. (gfc_trans_where): Likewise. (gfc_trans_allocate): Likewise. (gfc_trans_deallocate): Likewise. * trans-intrinsic.c (gfc_conv_intrinsic_aint): Likewise. (gfc_conv_intrinsic_lib_function): Likewise. (gfc_conv_intrinsic_exponent): Likewise. (gfc_conv_intrinsic_abs): Likewise. (gfc_conv_intrinsic_sign): Likewise. (gfc_conv_intrinsic_ctime): Likewise. (gfc_conv_intrinsic_fdate): Likewise. (gfc_conv_intrinsic_ttynam): Likewise. (gfc_conv_intrinsic_ishftc): Likewise. (gfc_conv_intrinsic_len_trim): Likewise. (gfc_conv_intrinsic_index): Likewise. (gfc_conv_intrinsic_size): Likewise. (gfc_conv_intrinsic_strcmp): Likewise. (gfc_conv_intrinsic_adjust): Likewise. (gfc_conv_associated): Likewise. (gfc_conv_intrinsic_scan): Likewise. (gfc_conv_intrinsic_verify): Likewise. (call_builtin_clz): Likewise. (gfc_conv_intrinsic_si_kind): Likewise. (gfc_conv_intrinsic_sr_kind): Likewise. (gfc_conv_intrinsic_trim): Likewise. (gfc_conv_intrinsic_repeat): Likewise. (gfc_conv_intrinsic_iargc): Likewise. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@108687 138bc75d-0d04-0410-961f-82ee72b054a4
* 2005-12-16 Richard Guenther <rguenther@suse.de>rguenth2005-12-161-3/+0
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * trans.h (gfc_build_indirect_ref): Remove declaration. * trans.c (gfc_build_indirect_ref): Remove. * trans-array.c (gfc_trans_array_ctor_element): Use build_fold_indirect_ref instead of gfc_build_indirect_ref. (gfc_trans_array_constructor_value): Likewise. (gfc_conv_array_index_offset): Likewise. (gfc_conv_scalarized_array_ref): Likewise. (gfc_conv_array_ref): Likewise. (gfc_trans_dummy_array_bias): Likewise. (gfc_conv_expr_descriptor): Likewise. (gfc_conv_array_parameter): Likewise. * trans-decl.c (gfc_finish_cray_pointee): Likewise. (gfc_get_symbol_decl): Likewise. * trans-expr.c (gfc_conv_substring): Likewise. (gfc_conv_component_ref): Likewise. (gfc_conv_variable): Likewise. (gfc_add_interface_mapping): Likewise. (gfc_conv_function_call): Likewise. * trans-intrinsic.c (gfc_conv_intrinsic_ichar): Likewise. (gfc_conv_intrinsic_transfer): Likewise. * trans-io.c (nml_get_addr_expr): Likewise. (transfer_namelist_element): Likewise. (transfer_expr): Likewise. * trans-stmt.c (gfc_trans_nested_forall_loop): Likewise. (allocate_temp_for_forall_nest_1): Likewise. (gfc_trans_forall_1): Likewise. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@108678 138bc75d-0d04-0410-961f-82ee72b054a4
* 2005-12-02 Richard Guenther <rguenther@suse.de>rguenth2005-12-021-1/+1
| | | | | | | | * trans.h (build1_v): Use build1, not build to build the void typed tree. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@107917 138bc75d-0d04-0410-961f-82ee72b054a4
* * intrinsic.c (add_functions): Add ctime and fdate intrinsics.fxcoudert2005-11-061-0/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | (add_subroutines): Likewise. * intrinsic.h: Prototypes for gfc_check_ctime, gfc_check_ctime_sub, gfc_check_fdate_sub, gfc_resolve_ctime, gfc_resolve_fdate, gfc_resolve_ctime_sub, gfc_resolve_fdate_sub. * gfortran.h: Add GFC_ISYM_CTIME and GFC_ISYM_FDATE. * iresolve.c (gfc_resolve_ctime, gfc_resolve_fdate, gfc_resolve_ctime_sub, gfc_resolve_fdate_sub): New functions. * trans-decl.c (gfc_build_intrinsic_function_decls): Add gfor_fndecl_fdate and gfor_fndecl_ctime. * check.c (gfc_check_ctime, gfc_check_ctime_sub, gfc_check_fdate_sub): New functions. * trans-intrinsic.c (gfc_conv_intrinsic_ctime, gfc_conv_intrinsic_fdate): New functions. (gfc_conv_intrinsic_function): Add cases for GFC_ISYM_CTIME and GFC_ISYM_FDATE. * intrinsic.texi: Documentation for the new CTIME and FDATE intrinsics. * trans.h: Declarations for gfor_fndecl_ctime and gfor_fndecl_fdate. * intrinsics/ctime.c: New file. * configure.ac: Add check for ctime. * Makefile.am: Add ctime.c * configure: Regenerate. * config.h.in: Regenerate. * Makefile.in: Regenerate. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@106558 138bc75d-0d04-0410-961f-82ee72b054a4
* * intrinsic.c (add_functions): Add function version of TTYNAM.fxcoudert2005-11-051-0/+1
| | | | | | | | | | | | | | | | | | * intrinsic.h: Add prototypes for gfc_check_ttynam and gfc_resolve_ttynam. * gfortran.h: Add case for GFC_ISYM_TTYNAM. * iresolve.c (gfc_resolve_ttynam): New function. * trans-decl.c (gfc_build_intrinsic_function_decls): Add a tree for function call to library ttynam. * check.c (gfc_check_ttynam): New function. * trans-intrinsic.c (gfc_conv_intrinsic_ttynam): New function. (): Call gfc_conv_intrinsic_ttynam. * trans.h: Add prototype for gfor_fndecl_ttynam. * intrinsics/tty.c (ttynam): New function. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@106522 138bc75d-0d04-0410-961f-82ee72b054a4
* * trans.h (gfc_conv_cray_pointee): Remove.jakub2005-10-251-3/+0
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | * trans-expr.c (gfc_conv_variable): Revert 2005-10-24 change. * trans-array.c (gfc_conv_array_parameter): Likewise. * trans-decl.c (gfc_conv_cray_pointee): Remove. (gfc_finish_cray_pointee): New function. (gfc_finish_var_decl): Use it. Don't return early for Cray pointees. (gfc_create_module_variable): Revert 2005-10-24 change. * decl.c (cray_pointer_decl): Update comment. * gfortran.texi: Don't mention Cray pointees aren't visible in the debugger. * symbol.c (check_conflict): Add conflict between cray_pointee and in_common resp. in_equivalence. * resolve.c (resolve_equivalence): Revert 2005-10-24 change. testsuite/ * gfortran.dg/cray_pointers_4.f90: New test. * module.c (ab_attribute): Add AB_CRAY_POINTER and AB_CRAY_POINTEE. (attr_bits): Likewise. (mio_symbol_attribute): Save and restore cray_pointe{r,e} attributes. (mio_symbol): For cray_pointee write/read cp_pointer reference. testsuite/ * gfortran.dg/cray_pointers_5.f90: New test. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@105891 138bc75d-0d04-0410-961f-82ee72b054a4
* Commit for Asher Langtonsteven2005-10-241-0/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | PR fortran/17031 PR fortran/22282 fortran/ * check.c (gfc_check_loc) : New function * decl.c (variable_decl): New variables cp_as and sym. Added a check for variables that have already been declared as Cray Pointers, so we can get the necessary attributes without adding a new symbol. (attr_decl1): Added code to catch pointee symbols and "fix" their array specs. (cray_pointer_decl): New method. (gfc_match_pointer): Added Cray pointer parsing code. (gfc_mod_pointee_as): New method. * expr.c (gfc_check_assign): added a check to catch vector-type assignments to pointees with an unspecified final dimension. * gfortran.h: (GFC_ISYM_LOC): New. (symbol_attribute): Added cray_pointer and cray_pointee bits. (gfc_array_spec): Added cray_pointee and cp_was_assumed bools. (gfc_symbol): Added gfc_symbol *cp_pointer. (gfc_option): Added flag_cray_pointer. (gfc_add_cray_pointee): Declare. (gfc_add_cray_pointer ): Declare. (gfc_mod_pointee_as): Declare. * intrinsic.c (add_functions): Add code for loc() intrinsic. * intrinsic.h (gfc_check_loc): Declare. (gfc_resolve_loc): Declare. * iresolve.c (gfc_resolve_loc): New. * lang.opt: Added fcray-pointer flag. * options.c (gfc_init_options): Intialized gfc_match_option.flag_cray_pointer. (gfc_handle_option): Deal with -fcray-pointer. * parse.c:(resolve_equivalence): Added code prohibiting Cray pointees in equivalence statements. * resolve.c (resolve_array_ref): Added code to prevent bounds checking for Cray Pointee arrays. (resolve_equivalence): Prohibited pointees in equivalence statements. * symbol.c (check_conflict): Added Cray pointer/pointee attribute checking. (gfc_add_cray_pointer): New (gfc_add_cray_pointee): New (gfc_copy_attr): New code for Cray pointers and pointees * trans-array.c (gfc_trans_auto_array_allocation): Added code to prevent space from being allocated for pointees. (gfc_conv_array_parameter): Added code to catch pointees and correctly set their base address. * trans-decl.c (gfc_finish_var_decl): Added code to prevent pointee declarations from making it to the back end. (gfc_create_module_variable): Same. * trans-expr.c (gfc_conv_variable): added code to detect and translate pointees. (gfc_conv_cray_pointee): New. * trans-intrinsic.c (gfc_conv_intrinsic_loc): New. (gfc_conv_intrinsic_function): added entry point for loc translation. * trans.h (gfc_conv_cray_pointee): Declare. * gfortran.texi: Added section on Cray pointers, removed Cray pointers from list of proposed extensions * intrinsic.texi: Added documentation for loc intrinsic. * invoke.texi: Documented -fcray-pointer flag testsuite/ PR fortran/17031 PR fortran/22282 * gfortran.dg/cray_pointers_1.f90: New test. * gfortran.dg/cray_pointers_2.f90: New test. * gfortran.dg/cray_pointers_3.f90: New test. * gfortran.dg/loc_1.f90: New test. * gfortran.dg/loc_2.f90: New test. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@105859 138bc75d-0d04-0410-961f-82ee72b054a4
* * gfortran.h: Add bitmasks for different FPE traps. Add fpefxcoudert2005-10-121-0/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | member to options_t. * invoke.texi: Document the new -ffpe-trap option. * lang.opt: Add -ffpe-trap option. * options.c (gfc_init_options): Initialize the FPE option. (gfc_handle_fpe_trap_option): New function to parse the argument of the -ffpe-trap option. (gfc_handle_option): Add case for -ffpe-trap. * trans-decl.c: Declare a tree for the set_fpe library function. (gfc_build_builtin_function_decls): Build this tree. (gfc_generate_function_code): Generate a call to set_fpe at the beginning of the main program. * trans.h: New tree for the set_fpe library function. * Makefile.am: Add fpu.c to the build process, and target-dependent code as fpu-target.h. * Makefile.in: Regenerate. * configure.ac: Add call to configure.host to set FPU_HOST_HEADER. * configure: Regenerate. * config.h.in: Regenerate. * aclocal.m4: Regenerate. * configure.host: New script to determine which host-dependent code should go in. * libgfortran.h: Add fpe option, remove previous fpu_ options. Add bitmasks for different FPE traps. Add prototype for set_fpu. * runtime/environ.c: Remove environment variables to control fpu behaviour. * runtime/fpu.c (set_fpe): New function for the front-end. * runtime/main.c (init): Set FPU state. * config: New directory to store host-dependent code. * config/fpu-387.h: New file with code handling the i387 FPU. * config/fpu-glibc.h: New file with code for glibc systems. * config/fpu-generic.h: Fallback for the most generic host. Issue warnings. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@105328 138bc75d-0d04-0410-961f-82ee72b054a4
* PR libfortran/19308fxcoudert2005-10-031-1/+6
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | PR fortran/20120 PR libfortran/22437 * Makefile.am: Add generated files for large real and integers kinds. Add a rule to create the kinds.inc c99_protos.inc files. Use kinds.inc to preprocess Fortran generated files. * libgfortran.h: Add macro definitions for GFC_INTEGER_16_HUGE, GFC_REAL_10_HUGE and GFC_REAL_16_HUGE. Add types gfc_array_i16, gfc_array_r10, gfc_array_r16, gfc_array_c10, gfc_array_c16, gfc_array_l16. * mk-kinds-h.sh: Define macros HAVE_GFC_LOGICAL_* and HAVE_GFC_COMPLEX_* when these types are available. * intrinsics/ishftc.c (ishftc16): New function for GFC_INTEGER_16. * m4/all.m4, m4/any.m4, m4/count.m4, m4/cshift1.m4, m4/dotprod.m4, m4/dotprodc.m4, m4/dotprodl.m4, m4/eoshift1.m4, m4/eoshift3.m4, m4/exponent.m4, m4/fraction.m4, m4/in_pack.m4, m4/in_unpack.m4, m4/matmul.m4, m4/matmull.m4, m4/maxloc0.m4, m4/maxloc1.m4, m4/maxval.m4, m4/minloc0.m4, m4/minloc1.m4, m4/minval.m4, m4/mtype.m4, m4/nearest.m4, m4/pow.m4, m4/product.m4, m4/reshape.m4, m4/set_exponent.m4, m4/shape.m4, m4/specific.m4, m4/specific2.m4, m4/sum.m4, m4/transpose.m4: Protect generated functions with appropriate "#if defined (HAVE_GFC_type_kind)" preprocessor directives. * Makefile.in: Regenerate. * all files in generated/: Regenerate. * f95-lang.c (DO_DEFINE_MATH_BUILTIN): Add support for long double builtin function. (gfc_init_builtin_functions): Add mfunc_longdouble, mfunc_clongdouble and func_clongdouble_longdouble trees. Build them for round, trunc, cabs, copysign and pow functions. * iresolve.c (gfc_resolve_reshape, gfc_resolve_transpose): Add case for kind 10 and 16. * trans-decl.c: Add trees for cpowl10, cpowl16, ishftc16, exponent10 and exponent16. (gfc_build_intrinsic_function_decls): Build nodes for int16, real10, real16, complex10 and complex16 types. Build all possible combinations for function _gfortran_pow_?n_?n. Build function calls cpowl10, cpowl16, ishftc16, exponent10 and exponent16. * trans-expr.c (gfc_conv_power_op): Add case for integer(16), real(10) and real(16). * trans-intrinsic.c: Add suppport for long double builtin functions in BUILT_IN_FUNCTION, LIBM_FUNCTION and LIBF_FUNCTION macros. (gfc_conv_intrinsic_aint): Add case for integer(16), real(10) and real(16) kinds. (gfc_build_intrinsic_lib_fndecls): Add support for real10_decl and real16_decl in library functions. (gfc_get_intrinsic_lib_fndecl): Add cases for real and complex kinds 10 and 16. (gfc_conv_intrinsic_exponent): Add cases for real(10) and real(16) kinds. (gfc_conv_intrinsic_sign): Likewise. (gfc_conv_intrinsic_ishftc): Add case for integer(16) kind. * trans-types.c (gfc_get_int_type, gfc_get_real_type, gfc_get_complex_type, gfc_get_logical_type): Doesn't error out in the case of kinds not available. * trans.h: Declare trees for cpowl10, cpowl16, ishftc16, exponent10 and exponent16. * gfortran.dg/large_real_kind_2.F90: New test. * gfortran.dg/large_integer_kind_2.f90: New test. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@104889 138bc75d-0d04-0410-961f-82ee72b054a4
* PR fortran/19239rsandifo2005-09-091-2/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * Makefile.in (fortran/trans-expr.o): Depend on dependency.h. * dependency.h (gfc_ref_needs_temporary_p): Declare. * dependency.c (gfc_ref_needs_temporary_p): New function. (gfc_check_fncall_dependency): Use it instead of inlined check. By so doing, take advantage of the fact that character substrings within an array reference also need a temporary. * trans.h (GFC_SS_VECTOR): Adjust comment. * trans-array.c (gfc_free_ss): Remove GFC_SS_VECTOR case. (gfc_set_vector_loop_bounds): New function. (gfc_add_loop_ss_code): Call it after evaluating the subscripts of a GFC_SS_SECTION. Deal with the GFC_SS_VECTOR case by evaluating the vector expression and caching its descriptor for use within the loop. (gfc_conv_array_index_ref, gfc_conv_vector_array_index): Delete. (gfc_conv_array_index_offset): Handle scalar, vector and range dimensions as separate cases of a switch statement. In the vector case, use the loop variable to calculate a vector index and use the referenced element as the dimension's index. Perform bounds checking on this final index. (gfc_conv_section_upper_bound): Return null for vector indexes. (gfc_conv_section_startstride): Give vector indexes a start value of 0 and a stride of 1. (gfc_conv_ss_startstride): Adjust for new GFC_SS_VECTOR representation. (gfc_conv_expr_descriptor): Expand comments. Generalize the handling of the !want_pointer && !direct_byref case. Use gfc_ref_needs_temporary_p to decide whether the variable case needs a temporary. (gfc_walk_variable_expr): Handle DIMEN_VECTOR by creating a GFC_SS_VECTOR index. * trans-expr.c: Include dependency.h. (gfc_trans_arrayfunc_assign): Fail if the target needs a temporary. 2005-09-09 Richard Sandiford <richard@codesourcery.com> PR fortran/21104 * trans.h (gfc_interface_sym_mapping, gfc_interface_mapping): Moved from trans-expr.c. (gfc_init_interface_mapping, gfc_free_interface_mapping) (gfc_add_interface_mapping, gfc_finish_interface_mapping) (gfc_apply_interface_mapping): Declare. * trans-array.h (gfc_set_loop_bounds_from_array_spec): Declare. (gfc_trans_allocate_temp_array): Add pre and post block arguments. * trans-array.c (gfc_set_loop_bounds_from_array_spec): New function. (gfc_trans_allocate_array_storage): Replace loop argument with separate pre and post blocks. (gfc_trans_allocate_temp_array): Add pre and post block arguments. Update call to gfc_trans_allocate_array_storage. (gfc_trans_array_constructor, gfc_conv_loop_setup): Adjust for new interface to gfc_trans_allocate_temp_array. * trans-expr.c (gfc_interface_sym_mapping, gfc_interface_mapping): Moved to trans.h. (gfc_init_interface_mapping, gfc_free_interface_mapping) (gfc_add_interface_mapping, gfc_finish_interface_mapping) (gfc_apply_interface_mapping): Make extern. (gfc_conv_function_call): Build an interface mapping for array return values too. Call gfc_set_loop_bounds_from_array_spec. Adjust call to gfc_trans_allocate_temp_array so that code is added to SE rather than LOOP. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@104077 138bc75d-0d04-0410-961f-82ee72b054a4
* PR fortran/21104rsandifo2005-09-091-0/+70
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | * trans.h (gfc_interface_sym_mapping, gfc_interface_mapping): Moved from trans-expr.c. (gfc_init_interface_mapping, gfc_free_interface_mapping) (gfc_add_interface_mapping, gfc_finish_interface_mapping) (gfc_apply_interface_mapping): Declare. * trans-array.h (gfc_set_loop_bounds_from_array_spec): Declare. (gfc_trans_allocate_temp_array): Add pre and post block arguments. * trans-array.c (gfc_set_loop_bounds_from_array_spec): New function. (gfc_trans_allocate_array_storage): Replace loop argument with separate pre and post blocks. (gfc_trans_allocate_temp_array): Add pre and post block arguments. Update call to gfc_trans_allocate_array_storage. (gfc_trans_array_constructor, gfc_conv_loop_setup): Adjust for new interface to gfc_trans_allocate_temp_array. * trans-expr.c (gfc_interface_sym_mapping, gfc_interface_mapping): Moved to trans.h. (gfc_init_interface_mapping, gfc_free_interface_mapping) (gfc_add_interface_mapping, gfc_finish_interface_mapping) (gfc_apply_interface_mapping): Make extern. (gfc_conv_function_call): Build an interface mapping for array return values too. Call gfc_set_loop_bounds_from_array_spec. Adjust call to gfc_trans_allocate_temp_array so that code is added to SE rather than LOOP. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@104075 138bc75d-0d04-0410-961f-82ee72b054a4
* PR fortran/12840rsandifo2005-09-091-0/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * trans.h (gfor_fndecl_internal_realloc): Declare. (gfor_fndecl_internal_realloc64): Declare. * trans-decl.c (gfor_fndecl_internal_realloc): New variable. (gfor_fndecl_internal_realloc64): New variable. (gfc_build_builtin_function_decls): Initialize them. * trans-array.h (gfc_trans_allocate_temp_array): Add a fourth argument. * trans-array.c (gfc_trans_allocate_array_storage): Add an argument to say whether the array can grow later. Don't allocate the array on the stack if so. Don't call malloc for zero-sized arrays. (gfc_trans_allocate_temp_array): Add a similar argument here. Pass it along to gfc_trans_allocate_array_storage. (gfc_get_iteration_count, gfc_grow_array): New functions. (gfc_iterator_has_dynamic_bounds): New function. (gfc_get_array_constructor_element_size): New function. (gfc_get_array_constructor_size): New function. (gfc_trans_array_ctor_element): Replace pointer argument with a descriptor tree. (gfc_trans_array_constructor_subarray): Likewise. Take an extra argument to say whether the variable-sized part of the constructor must be allocated using realloc. Grow the array when this argument is true. (gfc_trans_array_constructor_value): Likewise. (gfc_get_array_cons_size): Delete. (gfc_trans_array_constructor): If the loop bound has not been set, split the allocation into a static part and a dynamic part. Set loop->to to the bounds for static part before allocating the temporary. Adjust call to gfc_trans_array_constructor_value. (gfc_conv_loop_setup): Allow any constructor to determine the loop bounds. Check whether the constructor has a dynamic size and prefer to use something else if so. Expect the loop bound to be set later. Adjust call to gfc_trans_allocate_temp_array. * trans-expr.c (gfc_conv_function_call): Adjust another call here. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@104073 138bc75d-0d04-0410-961f-82ee72b054a4
* PR libfortran/20006fxcoudert2005-08-111-0/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | * gfortran.h: Add is_main_program member to symbol_attribute. * trans-decl: Add a gfor_fndecl_set_std tree. (gfc_build_builtin_function_decls): Create it. (gfc_generate_function_code): Add this call at the beginning of the main program. * trans.c (gfc_generate_code): Move main_program and attr. * trans.h: Add declaration for gfor_fndecl_set_std. * Makefile.am: Add file runtime/compile_options.c. * Makefile.in: Regenerate. * libgfortran.h: Create structure compile_options_t. Define the compile_options variable and GFC_STD_ macros. * runtime/compile_options.c: New file. * runtime/error.c (notify_std): New function. * runtime/main.c (init): Call init_compile_options during initialization. * io/format.c: Use the new notify_std function for the $ descriptor extension. * gfortran.dg/runtime_warning_1.f90: New test. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@102990 138bc75d-0d04-0410-961f-82ee72b054a4
* * decl.c, dump-parse-tree.c, gfortran.texi, intrinsic.texi,kazu2005-08-061-2/+2
| | | | | | | | | invoke.texi, resolve.c, trans-array.c, trans-array.h, trans-common.c, trans-expr.c, trans-io.c, trans.h: Fix comment/doc typos. Follow spelling conventions. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@102806 138bc75d-0d04-0410-961f-82ee72b054a4
* 2005-08-04 Paul Brook <paul@codesourcery.com>pbrook2005-08-041-8/+3
| | | | | | | | | | * trans-expr.c (gfc_conv_expr, gfc_conv_expr_type): Update comments. (gfc_conv_expr_lhs): Fix assertion. (gfc_conv_expr_val): Merge post block. Set se.expr to new value. * trans.h: Move and update comments. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@102729 138bc75d-0d04-0410-961f-82ee72b054a4
* Update FSF address.kcook2005-06-251-2/+2
| | | | git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@101310 138bc75d-0d04-0410-961f-82ee72b054a4
* * trans-expr.c (gfc_conv_function_call): Return int instead ofjakub2005-06-131-4/+1
| | | | | | | | | | | | | | | | void. Use a local variable for has_alternate_specifier and return it. Avoid modification of function type's return value in place, since it may be shared. * trans.h (has_alternate_specifier): Remove. (gfc_conv_function_call): Change return type. * trans-stmt.c (has_alternate_specifier): Remove. (gfc_trans_call): Add a local has_alternate_specifier variable, set it from gfc_conv_function_call return value. * gfortran.dg/altreturn_1.f90: New test. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@100878 138bc75d-0d04-0410-961f-82ee72b054a4
* * data.c, parse.c, trans-array.c, trans-decl.c,kazu2005-05-261-2/+2
| | | | | | | | trans-intrinsic.c, trans-stmt.c, trans-types.c, trans.c, trans.h: Fix comment typos. Follow spelling conventions. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@100219 138bc75d-0d04-0410-961f-82ee72b054a4
* * decl.c, f95-lang.c, interface.c, module.c, trans-stmt.c,kazu2005-04-011-3/+3
| | | | | | | trans.h: Fix comment typos. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@97364 138bc75d-0d04-0410-961f-82ee72b054a4
* fortran/fengwang2005-03-151-0/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | 2005-03-15 Feng Wang <fengwang@nudt.edu.cn> PR fortran/18827 * io.c (resolve_tag): Add checking on assigned label. (match_dt_format): Does not set symbol assign attribute. * match.c (gfc_match_goto):Does not set symbol assign attribute. * resolve.c (resolve_code): Add checking on assigned label. * trans-common.c (build_field): Deals with common variable assigned a label. * trans-stmt.c (gfc_conv_label_variable): New function. (gfc_trans_label_assign): Use it. (gfc_trans_goto): Ditto. * trans-io.c (set_string): Ditto. * trans.h (gfc_conv_label_variable): Add prototype. testsuite/ 2005-03-15 Feng Wang <fengwang@nudt.edu.cn> PR fortran/18827 * gfortran.dg/assign_2.f90: New test. * gfortran.dg/assign_3.f90: New test. * gfortran.dg/assign.f90: New test. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@96467 138bc75d-0d04-0410-961f-82ee72b054a4
* fortran/tobi2005-03-121-0/+3
| | | | | | | | | | | | | | | | | | | | | PR fortran/20361 * trans-array.c (gfc_stack_space_left): Remove unused variable. (gfc_can_put_var_on_stack): Move to trans-decl.c, remove #if 0'ed code. * trans-array.h (gfc_stack_space_left, gfc_can_put_var_on_stack): Remove declaration / prototype. * trans-common.c (build_equiv_decl): Give union a name. Check if it can be put on the stack. * trans-decl.c (gfc_stack_space_left): Move function here. (gfc_build_qualified_array): Fix comment typo. * trans.h (gfc_put_var_on_stack): Add prototype. testsuite/ PR fortran/20361 * gfortran.dg/largeequiv_1.f90: New test. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@96352 138bc75d-0d04-0410-961f-82ee72b054a4
* * decl.c, resolve.c, trans-array.c, trans.h: Fix comment typo(s).reichelt2005-02-241-1/+1
| | | | git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@95518 138bc75d-0d04-0410-961f-82ee72b054a4
* * data.c, dependency.c, f95-lang.c, io.c, trans-array.c,kazu2005-01-231-5/+5
| | | | | | | | | trans-decl.c, trans-expr.c, trans-intrinsic.c, trans-io.c, trans-stmt.c, trans-types.c, trans.h: Fix comment typos. Follow spelling conventions. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@94111 138bc75d-0d04-0410-961f-82ee72b054a4
* PR fortran/13010pbrook2004-11-161-0/+2
| | | | | | | | | | | | | | | | | * trans-array.c (gfc_trans_allocate_temp_array): Use gfc_get_dtype. (gfc_array_init_size, gfc_conv_expr_descriptor): Ditto. * trans-types.c (gfc_get_dtype): Accept array type rather than element type. (gfc_get_nodesc_array_type): Don't set GFC_TYPE_ARRAY_DTYPE. (gfc_get_array_type_bounds): Ditto. (gfc_get_derived_type): Recurse into derived type pointers. * trans-types.h (gfc_get_dtype): Add prototype. * trans.h (GFC_TYPE_ARRAY_DTYPE): Add comment. testsuite/ * gfortran.dg/der_pointer_1.f90: New test. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@90714 138bc75d-0d04-0410-961f-82ee72b054a4
* * arith.c, array.c, decl.c, expr.c, f95-lang.c, gfortran.h,kazu2004-11-081-1/+1
| | | | | | | | | | gfortranspec.c, interface.c, intrinsic.c, iresolve.c, match.c, module.c, parse.c, parse.h, primary.c, resolve.c, scanner.c, trans-array.c, trans-array.h, trans-expr.c, trans-intrinsic.c, trans-io.c, trans-stmt.c, trans.h: Fix comment formatting. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@90266 138bc75d-0d04-0410-961f-82ee72b054a4
* 2004-10-04 Tobias Schlueter <tobias.schlueter@physik.uni-muenchen.de>pbrook2004-10-041-0/+2
| | | | | | | | | | | | | | Paul Brook <paul@codesourcery.com> * trans-array.c (gfc_conv_expr_descriptor): Check for substriungs. Use gfc_get_expr_charlen. * trans-expr.c (gfc_get_expr_charlen): New function. * trans.h (gfc_get_expr_charlen): Add prototype. testsuite/ * gfortran.dg/pr17612.f90: New test. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@88483 138bc75d-0d04-0410-961f-82ee72b054a4
* * array.c, data.c, decl.c, dependency.c, error.c, f95-lang.c,kazu2004-09-161-4/+4
| | | | | | | | | | | interface.c, intrinsic.c, io.c, misc.c, module.c, parse.h, resolve.c, scanner.c, trans-array.c, trans-array.h, trans-common.c, trans-const.h, trans-decl.c, trans-expr.c, trans-intrinsic.c, trans-stmt.c, trans-types.c, trans.c, trans.h: Fix comment typos. Follow spelling conventions. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@87605 138bc75d-0d04-0410-961f-82ee72b054a4
* * data.c, decl.c, f95-lang.c, gfortran.h, match.c,kazu2004-09-141-1/+1
| | | | | | | | | trans-array.c, trans-common.c, trans-expr.c, trans-intrinsic.c, trans-stmt.c, trans-types.c, trans.h: Fix comment typos. Follow spelling conventions. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@87492 138bc75d-0d04-0410-961f-82ee72b054a4
OpenPOWER on IntegriCloud