1. 24 Mar, 2007 1 commit
    • pault's avatar
      2007-03-24 Paul Thomas <pault@gcc.gnu.org> · 7f7ca309
      pault authored
      	PR fortran/31215
      	* trans-expr.c (gfc_apply_interface_mapping_to_expr): Return
      	int result that is non-zero if the expression is the function
      	result.  Only the characteristics of the result expression
      	can be used in a procedure interface, so simplify LEN in situ
      	using its character length.
      
      	PR fortran/31219
      	PR fortran/31200
      	* trans-expr.c (gfc_conv_function_call): Do not use
      	gfc_conv_expr_reference for actual pointer function with formal
      	target because a temporary is created that does not transfer
      	the reference correctly.  Do not indirect formal pointer
      	functions since it is the function reference that is needed.
      
      2007-03-24  Paul Thomas  <pault@gcc.gnu.org>
      
      	PR fortran/31219
      	* gfortran.dg/pointer_function_actual_1.f90: New test.
      
      	PR fortran/31200
      	* gfortran.dg/pointer_function_actual_2.f90: New test.
      
      	PR fortran/31215
      	* gfortran.dg/result_in_spec_1.f90: New test.
      
      
      git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@123183 138bc75d-0d04-0410-961f-82ee72b054a4
      7f7ca309
  2. 19 Mar, 2007 1 commit
  3. 17 Mar, 2007 1 commit
    • fxcoudert's avatar
      PR fortran/31120 · 6929935b
      fxcoudert authored
      	* trans-expr.c (gfc_conv_powi): Make n argument unsigned hwi.
      	(gfc_conv_cst_int_power): Handle integer exponent with care,
      	since it might be too large for us.
      
      	* gfortran.dg/integer_exponentiation_2.f90: New test.
      
      
      git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@123028 138bc75d-0d04-0410-961f-82ee72b054a4
      6929935b
  4. 28 Feb, 2007 1 commit
    • burnus's avatar
      2007-02-28 Tobias Burnus <burnus@net-b.de> · b8128c7b
      burnus authored
      	    Paul Thomas  <pault@gcc.gnu.org>
      
      	PR fortran/30888
      	PR fortran/30887
      	* resolve.c (resolve_actual_arglist): Allow by-value
      	arguments and non-default-kind for %VAL().
      	* trans-expr.c (conv_arglist_function): Allow
      	non-default-kind for %VAL().
      
      testsuite/
      2007-02-28  Tobias Burnus  <burnus@net-b.de>
      	    Paul Thomas  <pault@gcc.gnu.org>
      
      	PR fortran/30888
      	PR fortran/30887
      	* c_by_val_1.f: Test %VAL() with non-default kind.
      	* c_by_val.c: Ditto.
      	* c_by_val_4.f: New test.
      
      
      
      git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@122409 138bc75d-0d04-0410-961f-82ee72b054a4
      b8128c7b
  5. 15 Feb, 2007 1 commit
    • sandra's avatar
      2007-02-15 Sandra Loosemore <sandra@codesourcery.com> · c2f47e15
      sandra authored
      	    Brooks Moses  <brooks.moses@codesourcery.com>
      	    Lee Millward  <lee.millward@codesourcery.com>
      
      	* tree.h (enum tree_code_class): Add tcc_vl_exp.
      	(VL_EXP_CLASS_P): New.
      	(TREE_OPERAND_CHECK): Use TREE_OPERAND_LENGTH instead of
      	TREE_CODE_LENGTH.
      	(TREE_OPERAND_CHECK_CODE): Likewise.
      	(GIMPLE_STMT_OPERAND_CHECK): Likewise.
      	(TREE_RTL_OPERAND_CHECK): Likewise.
      	(tree_operand_check_failed): Make second parameter the whole tree
      	instead of its code.  Fixed callers.
      	(VL_EXP_CHECK): New.
      	(TREE_OPERAND_LENGTH): New.
      	(VL_EXP_OPERAND_LENGTH): New.
      	(CALL_EXPR_FN): New.
      	(CALL_EXPR_STATIC_CHAIN): New.
      	(CALL_EXPR_ARGS): New.
      	(CALL_EXPR_ARG): New.
      	(call_expr_nargs): New.
      	(CALL_EXPR_ARGP): New.
      	(build_nt_call_list): Declare.
      	(build_vl_exp_stat): Declare.
      	(build_vl_exp): New.
      	(build_call_list): Declare.
      	(build_call_nary): Declare.
      	(build_call_valist): Declare.
      	(build_call_array): Declare.
      	(call_expr_arg): Declare.
      	(call_expr_argp): Declare.
      	(call_expr_arglist): Declare.
      	(fold_build_call_list): Declare.
      	(fold_build_call_list_initializer): Declare.
      	(fold_call_expr): Declare to replace fold_builtin.
      	(fold_builtin_fputs): Update to agree with modified definition.
      	(fold_builtin_strcpy): Likewise.
      	(fold_builtin_strncpy): Likewise.
      	(fold_builtin_memory_chk): Likewise.
      	(fold_builtin_stxcpy_chk): Likewise.
      	(fold_builtin_strncpy_chk): Likewise.
      	(fold_builtin_next_arg): Likewise.
      	(fold_build_call_expr): Declare.
      	(fold_builtin_call_list): Declare.
      	(fold_builtin_call_valist): Declare.
      	(build_call_expr): Declare.
      	(validate_arglist): Update to agree with modified definition.
      	(tree_operand_length): New.
      	(call_expr_arg_iterator): New.
      	(init_call_expr_arg_iterator): New.
      	(next_call_expr_arg): New.
      	(first_call_expr_arg): New.
      	(more_call_expr_args_p): New.
      	(FOR_EACH_CALL_EXPR_ARG): New.
      
      	* tree.c (tree_code_class_string): Add entries for tcc_vl_exp
      	and tcc_gimple_stmt.
      	(tree_code_size): Update documentation.  Use sizeof (tree) rather
      	than sizeof (char *).
      	(tree_size): Likewise.  Add case for tcc_vl_exp.
      	(tree_node_structure): Add case for tcc_vl_exp.
      	(contains_placeholder_p): Likewise.
      	(substitute_in_expr): Likewise.
      	(substitute_placeholder_in_expr): Likewise.
      	(stabilize_reference_1): Likewise.
      	(build3_stat): Remove logic for CALL_EXPRs.  Replace with assertion
      	to diagnose breakage of this interface for constructing CALL_EXPRs.
      	(build_nt): Add similar assertion here.
      	(build_nt_call_list): New.
      	(simple_cst_equal) <CALL_EXPR>: Rewrite to use new accessors.
      	(iterative_hash_expr): Use TREE_OPERAND_LENGTH instead of
      	TREE_CODE_LENGTH.
      	(get_callee_fndecl): Use new CALL_EXPR accessors.
      	(tree_operand_check_failed): Change parameters to pass entire node
      	instead of its code, so that we can call TREE_OPERAND_LENGTH on it.
      	(process_call_operands): New.
      	(build_vl_exp_stat): New.
      	(build_call_list): New.
      	(build_call_nary): New.
      	(build_call_valist): New.
      	(build_call_array): New.
      	(walk_tree): Use TREE_OPERAND_LENGTH instead of TREE_CODE_LENGTH.
      	(call_expr_arglist): New.
      
      	* tree.def (CALL_EXPR): Change representation of CALL_EXPRs to use
      	tcc_vl_exp instead of a fixed-size tcc_expression.
      
      	* doc/c-tree.texi (CALL_EXPR): Document new representation and
      	accessors for CALL_EXPRs.
      	(AGGR_INIT_EXPR): Likewise.
      
      2007-02-15  Sandra Loosemore  <sandra@codesourcery.com>
      	    Brooks Moses  <brooks.moses@codesourcery.com>
      	    Lee Millward  <lee.millward@codesourcery.com>
      
      	* builtins.c (c_strlen): Return NULL_TREE instead of 0.
      	(expand_builtin_nonlocal_goto): Change parameter to be entire
      	CALL_EXPR instead of an arglist.  Use new CALL_EXPR accessors.
      	(expand_builtin_prefetch): Likewise.
      	(expand_builtin_classify_type): Likewise.
      	(mathfn_built_in): Return NULL_TREE instead of 0.
      	(expand_errno_check): Use new CALL_EXPR accessors.
      	(expand_builtin_mathfn): Use new CALL_EXPR accessors and constructors.
      	Return NULL_RTX instead of 0.
      	(expand_builtin_mathfn_2): Likewise.
      	(expand_builtin_mathfn_3): Likewise.
      	(expand_builtin_interclass_mathfn): Likewise.
      	(expand_builtin_sincos): Likewise.
      	(expand_builtin_cexpi): Likewise.
      	(expand_builtin_int_roundingfn): Likewise.
      	(expand_builtin_int_roundingfn_2): Likewise.
      	(expand_builtin_pow): Likewise.
      	(expand_builtin_powi): Likewise.
      	(expand_builtin_strlen): Pass entire CALL_EXPR as parameter instead
      	of arglist, fixing callers appropriately.  Use new CALL_EXPR
      	accessors and constructors.  Return NULL_RTX instead of 0.
      	(expand_builtin_strstr): Likewise.
      	(expand_builtin_strchr): Likewise.
      	(expand_builtin_strrchr): Likewise.
      	(expand_builtin_strpbrk): Likewise.
      	(expand_builtin_memcpy): Likewise.
      	(expand_builtin_mempcpy): Likewise.
      	(expand_builtin_mempcpy_args): New.
      	(expand_builtin_memmove): Similarly to expand_builtin_mempcpy.
      	(expand_builtin_memmove_args): New.
      	(expand_builtin_bcopy): Similarly to expand_builtin_mempcpy.
      	(expand_movstr): Likewise.
      	(expand_builtin_strcpy): Likewise.
      	(expand_builtin_strcpy_args): New.
      	(expand_builtin_stpcpy): Similarly to expand_builtin_strcpy.
      	(expand_builtin_strncpy): Likewise.
      	(expand_builtin_memset): Likewise.
      	(expand_builtin_memset_args): New.
      	(expand_builtin_bzero): Similarly to expand_builtin_memset.
      	(expand_builtin_memcmp): Likewise.
      	(expand_builtin_strcmp): Likewise.
      	(expand_builtin_strncmp): Likewise.
      	(expand_builtin_strcat): Likewise.
      	(expand_builtin_strncat): Likewise.
      	(expand_builtin_strspn): Likewise.
      	(expand_builtin_strcspn): Likewise.
      	(expand_builtin_args_info): Likewise.
      	(expand_builtin_va_start): Likewise.
      	(gimplify_va_arg_expr): Likewise.
      	(expand_builtin_va_end): Likewise.
      	(expand_builtin_va_copy): Likewise.
      	(expand_builtin_frame_address): Likewise.
      	(expand_builtin_alloca): Likewise.
      	(expand_builtin_bswap): Likewise.
      	(expand_builtin_unop): Likewise.
      	(expand_builtin_fputs): Likewise.
      	(expand_builtin_expect): Likewise.
      	(expand_builtin_fabs): Likewise.
      	(expand_builtin_copysign): Likewise.
      	(expand_builtin_printf): Likewise.
      	(expand_builtin_fprintf): Likewise.
      	(expand_builtin_sprintf): Likewise.
      	(expand_builtin_init_trampoline): Likewise.
      	(expand_builtin_signbit): Likewise.
      	(expand_builtin_fork_or_exec): Likewise.
      	(expand_builtin_sync_operation): Likewise.
      	(expand_builtin_compare_and_swap): Likewise.
      	(expand_builtin_lock_test_and_set): Likewise.
      	(expand_builtin_lock_release): Likewise.
      	(expand_builtin): Likewise.
      	(builtin_mathfn_code): Likewise.
      
      	(fold_builtin_constant_p): Pass call arguments individually instead
      	of as an arglist, fixing callers appropriately.  Use new CALL_EXPR
      	accessors and constructors.  Return NULL_TREE instead of 0.
      	(fold_builtin_expect): Likewise.
      	(fold_builtin_classify_type): Likewise.
      	(fold_builtin_strlen): Likewise.
      	(fold_builtin_nan): Likewise.
      	(integer_valued_real_p): Likewise.
      	(fold_trunc_transparent_mathfn): Likewise.
      	(fold_fixed_mathfn): Likewise.
      	(fold_builtin_cabs): Likewise.
      	(fold_builtin_sqrt): Likewise.
      	(fold_builtin_cbrt): Likewise.
      	(fold_builtin_cos): Likewise.
      	(fold_builtin_cosh): Likewise.
      	(fold_builtin_tan): Likewise.
      	(fold_builtin_sincos): Likewise.
      	(fold_builtin_cexp): Likewise.
      	(fold_builtin_trunc): Likewise.
      	(fold_builtin_floor): Likewise.
      	(fold_builtin_ceil): Likewise.
      	(fold_builtin_round): Likewise.
      	(fold_builtin_int_roundingfn): Likewise.
      	(fold_builtin_bitop): Likewise.
      	(fold_builtin_bswap): Likewise.
      	(fold_builtin_logarithm): Likewise.
      	(fold_builtin_hypot): Likewise.
      	(fold_builtin_pow): Likewise.
      	(fold_builtin_powi): Likewise.
      	(fold_builtin_exponent): Likewise.
      	(fold_builtin_memset): Likewise.
      	(fold_builtin_bzero): Likewise.
      	(fold_builtin_memory_op): Likewise.
      	(fold_builtin_bcopy): Deleted; call site changed to invoke
      	fold_builtin_memory_op directly.
      	(fold_builtin_strcpy): Similarly as for fold_builtin_memory_op.
      	(fold_builtin_strncpy): Likewise.
      	(fold_builtin_memcmp): Likewise.
      	(fold_builtin_strcmp): Likewise.
      	(fold_builtin_strncmp): Likewise.
      	(fold_builtin_signbit): Likewise.
      	(fold_builtin_copysign): Likewise.
      	(fold_builtin_isascii): Likewise.
      	(fold_builtin_toascii): Likewise.
      	(fold_builtin_isdigit): Likewise.
      	(fold_builtin_fabs): Likewise.
      	(fold_builtin_abs): Likewise.
      	(fold_builtin_fmin_fmax): Likewise.
      	(fold_builtin_carg): Likewise.
      	(fold_builtin_classify): Likewise.
      	(fold_builtin_unordered_cmp): Likewise.
      
      	(fold_builtin_0, fold_builtin_2, fold_builtin_3, fold_builtin_4):
      	New functions split out from fold_builtin_1.
      	(fold_builtin_n): New.
      	(fold_builtin_varargs): New.
      	(fold_builtin): Deleted.  Most callers changed to use fold_call_expr
      	instead.
      	(fold_call_expr): New.
      	(build_function_call_expr): Rewrite to use new helper function.
      	(fold_builtin_call_list): New.
      	(build_call_expr): New.
      	(fold_builtin_call_valist): New.
      	(rewrite_call_expr): New.
      	(validate_arg): New.
      	(validate_arglist): Change parameter to be entire CALL_EXPR instead
      	of an arglist.  Change return type to bool.  Use new CALL_EXPR
      	accessors.
      
      	(fold_builtin_strstr):  Pass call arguments individually instead
      	of as an arglist, fixing callers appropriately.  Use new CALL_EXPR
      	accessors and constructors.  Return NULL_TREE instead of 0.
      	(fold_builtin_strchr): Likewise.
      	(fold_builtin_strrchr): Likewise.
      	(fold_builtin_strpbrk): Likewise.
      	(fold_builtin_strcat): Likewise.
      	(fold_builtin_strncat): Likewise.
      	(fold_builtin_strspn): Likewise.
      	(fold_builtin_strcspn): Likewise.
      	(fold_builtin_fputs): Likewise.
      	(fold_builtin_next_arg): Likewise.
      	(fold_builtin_sprintf): Likewise.
      
      	(expand_builtin_object_size): Use new CALL_EXPR accessors.  Use
      	NULL_RTX instead of 0.
      	(expand_builtin_memory_chk): Likewise.
      	(maybe_emit_chk_warning): Likewise.
      	(maybe_emit_sprintf_chk_warning): Likewise.
      
      	(fold_builtin_object_size): Pass call arguments individually instead
      	of as an arglist, fixing callers appropriately.  Use new CALL_EXPR
      	accessors and constructors.  Return NULL_TREE instead of 0.
      	(fold_builtin_memory_chk): Likewise.
      	(fold_builtin_stxcpy_chk): Likewise.
      	(fold_builtin_strncpy_chk): Likewise.
      	(fold_builtin_strcat_chk): Likewise.
      	(fold_builtin_strcat_chk): Likewise.
      	(fold_builtin_strncat_chk): Likewise.
      	(fold_builtin_sprintf_chk): Likewise.
      	(fold_builtin_snprintf_chk): Likewise.
      	(fold_builtin_printf): Likewise.
      	(fold_builtin_vprintf): Likewise.
      
      	* fold-const.c (negate_expr_p): Use new CALL_EXPR accessors and
      	constructors.
      	(operand_equal_p): Add separate tcc_vl_exp/CALL_EXPR case.
      	(make_range): Use TREE_OPERAND_LENGTH instead of TREE_CODE_LENGTH.
      	(extract_muldiv_1): Add VL_EXP_CLASS_P case.
      	(fold_mathfn_compare): Use new CALL_EXPR accessors and constructors.
      	(fold_unary): Likewise.
      	(fold_binary): Likewise.
      	(fold_ternary): Remove CALL_EXPR case, since they are no longer
      	ternary expressions.
      	(fold): Add logic for tcc_vl_exp.
      	(fold_checksum_tree):  Make it know about tcc_vl_exp.  Use
      	TREE_OPERAND_LENGTH instead of TREE_CODE_LENGTH.
      	(fold_build3_stat): Add assertion to flag broken interface for
      	constructing CALL_EXPRs.
      	(fold_build_call_list): New.
      	(fold_build_call_list_initializer): New.
      	(tree_expr_nonnegative_p): Use new CALL_EXPR accessors and
      	constructors.
      	(fold_strip_sign_ops): Likewise.
      
      2007-02-15  Sandra Loosemore  <sandra@codesourcery.com>
      	    Brooks Moses  <brooks.moses@codesourcery.com>
      	    Lee Millward  <lee.millward@codesourcery.com>
      
      	* tree-dump.c (dequeue_and_dump) <CALL_EXPR>: Use new CALL_EXPR
      	accessors and dump arguments explicitly.
      
      	* tree-pretty-print.c (do_niy): Use TREE_OPERAND_LENGTH instead of
      	TREE_CODE_LENGTH.
      	(dump_generic_node): Use new CALL_EXPR accessors and walk arguments
      	explicitly.
      	(print_call_name): Use new CALL_EXPR accessors.
      
      	* print-tree.c (print_node): Add case tcc_vl_exp.  Print
      	CALL_EXPR arguments explicitly instead of as a list.  Use
      	TREE_OPERAND_LENGTH instead of TREE_CODE_LENGTH.
      
      	* tree-vrp.c (stmt_interesting_for_vrp): Use new CALL_EXPR accessors.
      	(vrp_visit_stmt): Likewise.
      
      	* tree-ssa-loop-im.c (outermost_invariant_loop_expr):  Make it
      	know about tcc_vl_exp.  Use TREE_OPERAND_LENGTH instead of
      	TREE_CODE_LENGTH.
      	(force_move_till_expr): Likewise.
      
      	* targhooks.c (default_external_stack_protect_fail): Use
      	build_call_expr instead of build_function_call_expr.
      	(default_hidden_stack_protect_fail): Likewise.
      
      	* tree-complex.c (expand_complex_libcall): Use build_call_expr to
      	build the call.
      
      	* cgraphbuild.c (build_cgraph_edges): Use new CALL_EXPR accessors
      	and walk arguments explicitly.
      
      	* tree-ssa-loop-niter.c (simplify_replace_tree): Use
      	TREE_OPERAND_LENGTH instead of TREE_CODE_LENGTH.
      	(expand_simple_operations): Likewise.
      	(infer_loop_bounds_from_array): Use new CALL_EXPR accessors.
      
      	* gengtype.c (adjust_field_tree_exp): Use TREE_OPERAND_LENGTH instead
      	of TREE_CODE_LENGTH.
      	(walk_type): Tweak walking of arrays not to blow up on CALL_EXPRs.
      
      	* optabs.c (expand_widen_pattern-expr): Use TREE_OPERAND_LENGTH
      	instead of TREE_CODE_LENGTH.
      
      	* value_prof.c (tree_ic): Use new CALL_EXPR accessors.
      	(tree_ic_transform): Likewise.
      	(interesting_stringop_to_profile_p): Pass entire CALL_EXPR as
      	parameter instead of arglist.  Fix callers.
      	(tree_stringop_fixed_value): Use new CALL_EXPR accessors.
      	(tree_stringops_transform): Likewise.
      	(tree_indirect_call_to_profile): Likewise.
      	(tree_stringops_values_to_profile): Likewise.
      
      	* tree-tailcall.c (find_tail_calls): Use new CALL_EXPR iterator.
      	(eliminate_tail_call): Likewise.
      
      	* ipa-cp.c (ipcp_update_callgraph): Use new CALL_EXPR accessors.
      
      	* tree-scalar-evolution.c (chrec_contains_symbols_defined_in_loop):
      	Use TREE_OPERAND_LENGTH and generalize to handle any number of
      	operands.
      	(instantiate_parameters_1): Can't handle tcc_vl_exp here.
      
      	* omp-low.c (build_omp_barrier): Use build_call_expr.
      	(lower_rec_input_clauses): Likewise.
      	(lower_reduction_clauses): Likewise.
      	(expand_parallel_call): Likewise.
      	(maybe_catch_exception): Likewise.
      	(expand_omp_for_generic): Likewise.
      	(expand_omp_for_static_nochunk): Likewise.
      	(expand_omp_sections): Likewise.
      	(lower_omp_single_simple): Likewise.
      	(lower_omp_single_copy): Likewise.
      	(lower_omp_master): Likewise.
      	(lower_omp_ordered): Likewise.
      	(lower_omp_critical): Likewise.
      
      	* ipa-reference.c (check-call): Use new CALL_EXPR iterator.
      	(scan_for_static_refs): Create tcc_vl_exp case for CALL_EXPR.
      
      	* tree-gimple.c (is_gimple_call_addr): Fix doc.
      	(recalculate_side_effects): Use TREE_OPERAND_LENGTH instead of
      	TREE_CODE_LENGTH.  Add tcc_vl_exp case.
      
      	* tree-chrec.c (chrec_contains_symbols): Use TREE_OPERAND_LENGTH
      	and generalize to handle any number of operands.
      	(chrec_contains_undetermined): Likewise.
      	(tree_contains_chrecs): Likewise.
      	(evolution_function_is_invariant_rec_p): Use TREE_OPERAND_LENGTH.
      
      	* cgraphunit.c (update_call_expr): Use new CALL_EXPR accessors.
      
      	* tree-ssa-ccp.c (ccp_fold): Use new CALL_EXPR accessors.  Use
      	fold_call_expr instead of fold_builtin.
      	(ccp_fold_builtin): Likewise.  Update calls into builtins.c to
      	match declarations there.
      	(fold_stmt): Use new CALL_EXPR constructor and accessors.  Doc
      	updates.
      
      	* tree-ssa-loop-ivopts.c (expr_invariant_in_loop_p): Use
      	TREE_OPERAND_LENGTH instead of TREE_CODE_LENGTH.
      
      	* ipa-pure-const.c (check_call): Use new CALL_EXPR accessors.
      	(scan_function): Add case tcc_vl_exp for CALL_EXPR.
      
      	* tree-stdarg.c (execute_optimize_stdarg): Use new CALL_EXPR
      	accessors.
      
      	* tree-ssa-math-opts.c (execute_cse_sincos_1): Use build_call_expr.
      	(execute_cse_sincos): Use new CALL_EXPR accessors.
      
      	* tree-ssa-alias.c (find_used_portions): Use new CALL_EXPR iterator.
      
      	* gimple-low.c (lower_function_body): Use build_call_expr.
      	(lower_builtin_setjmp): Likewise.
      
      	* expr.c (emit_block_move_via_libcall): Use build_call_expr.
      	(set_storage_via_libcall): Likewise.
      	(safe_from_p): Add tcc_vl_exp case.  Use TREE_OPERAND_LENGTH
      	instead of TREE_CODE_LENGTH.
      	(expand_expr_real_1): Use new CALL_EXPR accessors.
      
      	* tree-browser.c (store_child_info): Use TREE_OPERAND_LENGTH and
      	generalize to handle any number of operands.
      	(TB_parent_eq): Likewise.
      
      	* predict.c (expr_expected_value): Use new CALL_EXPR accessors.
      	(strip_builtin_expect): Likewise.
      
      	* function.c (gimplify_parameters): Use build_call_expr.
      
      	* tree-vectorizer.c (vect_is_simple_reduction): Use TREE_OPERAND_LENGTH
      	instead of TREE_CODE_LENGTH.
      
      	* ipa-type-escape.c (check_call): Use new CALL_EXPR iterators.
      	(scan_for_refs): Add case tcc_vl_exp for CALL_EXPR.
      
      	* tree-data-ref.c (get_references_in_stmt): Use new CALL_EXPR
      	iterators.
      
      	* gimplify.c (build_stack_save_restore): Use build_call_expr.
      	(gimplify_decl_expr): Likewise.
      	(gimplify_call_expr): Use fold_call_expr instead of fold_builtin.
      	Use new CALL_EXPR iterators.
      	(gimplify_modify_expr_to_memcpy): Use build_call_expr.
      	(gimplify_modify_expr_to_memset): Likewise.
      	(gimplify_variable_sized_compare): Likewise.
      	(gimplify_omp_atomic_fetch_op): Likewise.
      	(gimplify_omp_atomic_pipeline): Likewise.
      	(gimplify_omp_atomic_mutex): Likewise.
      	(gimplify_function_tree): Likewise.
      
      	* calls.c (alloca_call_p): Use new CALL_EXPR accessors.
      	(call_expr_flags): Likewise.
      	(expand_call): Likewise.
      
      	* except.c (expand_builtin_eh_return_data_regno): Pass entire
      	CALL_EXPR as parameter instead of arglist.  Use new CALL_EXPR 
              accessors.
      
      	* coverage.c (create_coverage): Use build_call_expr.
      
      	* tree-ssa-pre.c (expression_node_pool, list_node_pool): Delete.
      	(temp_call_expr_obstack): New.
      	(pool_copy_list): Delete.
      	(temp_copy_call_expr): New.
      	(phi_translate): Add case tcc_vl_exp for CALL_EXPR.  Use new
      	CALL_EXPR accessors.  Get rid of special goo for copying argument
      	lists and use temp_copy_call_expr instead.
      	(valid_in_sets): Add case tcc_vl_exp for CALL_EXPR.  Use new
      	CALL_EXPR accessors.
      	(create_expression_by_pieces): Likewise.  Use build_call_array
      	to construct the result instead of fold_build3.
      	(create_value_expr_from): Add tcc_vl_exp.  Delete special goo for
      	dealing with argument lists.
      	(init_pre): Remove references to expression_node_pool and
      	list_node_pool.  Init temp_call_expr_obstack instead.
      	(fini_pre): Remove references to expression_node_pool and
      	list_node_pool.
      
      	* tree-sra.c (sra_walk_call_expr): Use new CALL_EXPR accessors
      	and walk arguments explicitly instead of as a list.
      
      	* tree-mudflap.c (mf_build_check_statement_for): Use build_call_expr.
      	(mx_register_decls): Likewise.
      	(mudflap_register_call): Likewise.
      	(mudflap_finish_file): Likewise.
      
      	* ipa-prop.c (ipa_callsite_compute_count): Use new CALL_EXPR accessors.
      	(ipa_callsite_compute_param): Likewise.
      
      	* tree-vect-patterns.c (vect_recog_pow_pattern): Use new CALL_EXPR
      	accessors and constructor.
      
      	* tree-nested.c (convert_nl_goto_reference): Use new CALL_EXPR
      	accessors and constructor.
      	(convert_tramp_reference): Likewise. 
      	(convert_call_expr): Likewise.
      	(finalize_nesting_tree_1): Likewise.
      
      	* tree-ssa.c (tree_ssa_useless_type_conversion): Use new CALL_EXPR
      	accessors.
      
      	* tree-ssa-loop-prefetch.c (issue_prefetch_ref): Use build_call_expr.
      
      	* tree-inline.c (initialize_inlined_parameters): Pass entire
      	CALL_EXPR as parameter instead of arglist.  Use new CALL_EXPR
      	accessors.
      	(estimate_num_insns_1): Use new CALL_EXPR accessors.
      	(expand_call_inline): Tidy up call to initialize_inlined_parameters.
      
      	* tree-vect-transform.c (vect_create_epilog_for_reduction):  Use
      	TREE_OPERAND_LENGTH instead of TREE_CODE_LENGTH.
      	(vectorizable_reduction): Likewise.
      	(vectorizable_call): Use new CALL_EXPR iterators.
      	(vectorizable_conversion): Use build_call_expr.
      	(vectorizable_operation): Use TREE_OPERAND_LENGTH.
      	(vect_gen_widened_results_half): Use build_call_expr.
      	(vect_setup_realignment): Likewise.
      	(vectorizable_live_operation): Use TREE_OPERAND_LENGTH.
      
      	* tree-object-size.c (alloc_object_size): Use new CALL_EXPR accessors.
      	(pass_through_call): Likewise.
      	(compute_object_sizes): Likewise.  Use fold_call_expr instead of
      	fold_builtin.
      
      	* tree-profile.c (tree_gen_interval_profiler): Use build_call_expr.
      	(tree_gen_pow2_profiler): Likewise.
      	(tree_gen_one_value_profiler): Likewise.
      	(tree_gen_ic_func_profiler): Likewise.
      	(tree_gen_average_profiler): Likewise.
      	(tree_gen_ior_profiler): Likewise.
      
      	* tree-ssa-structalias.c (get_constraint_for): Add case tcc_vl_exp.
      	(find_func_aliases): Use new CALL_EXPR accessors.  Add case
      	tcc_vl_exp.  Use TREE_OPERAND_LENGTH instead of TREE_CODE_LENGTH.
      
      	* tree-ssa-reassoc.c (get_rank): Use TREE_OPERAND_LENGTH instead
      	of TREE_CODE_LENGTH.
      
      	* stmt.c (warn_if_unused_value): Use TREE_OPERAND_LENGTH instead
      	of TREE_CODE_LENGTH.
      
      	* convert.c (convert_to_real): Use new CALL_EXPR accessors and
      	constructor.
      	(convert_to_integer): Likewise.
      
      	* tree-ssa-operands.c (get_call_expr_operands): Use new CALL_EXPR
      	accessors.
      
      2007-02-15  Sandra Loosemore  <sandra@codesourcery.com>
      	    Brooks Moses  <brooks.moses@codesourcery.com>
      	    Lee Millward  <lee.millward@codesourcery.com>
      
      	* config/alpha/alpha.c (alpha_expand_builtin): Use new CALL_EXPR
      	accessors.
      	* config/frv/frv.c (frv_expand_builtin): Likewise.
      	* config/s390/s390.c (s390_expand_builtin): Likewise.
      
      	* config/sparc/sparc.c (sparc_gimplify_va_arg): Use build_call_expr.
      	(sparc_expand_builtin): Use new CALL_EXPR accessors.
      
      	* config/i386/i386.c (ix86_function_ok_for_sibcall): Likewise.
      	(ix86_expand_binop_builtin): Pass entire CALL_EXPR as parameter
      	instead of arglist.  Use new CALL_EXPR accessors on it.  Fix callers.
      	(ix86_expand_store_builtin): Likewise.
      	(ix86_expand_unop_builtin): Likewise.
      	(ix86_expand_unop1_builtin): Likewise.
      	(ix86_expand_sse_compare): Likewise.
      	(ix86_expand_sse_comi): Likewise.
      	(ix86_expand_vec_init_builtin): Likewise.
      	(ix86_expand_vec_ext_builtin): Likewise.
      	(ix86_expand_vec_set_builtin): Likewise.
      	(ix86_expand_builtin): Use new CALL_EXPR accessors.
      
      	* config/sh/sh.c (sh_expand_builtin): Use new CALL_EXPR accessors.
      	* config/c4x/c4x.c (c4x_expand_builtin): Likewise.
      
      	* config/iq2000/iq2000.c (expand_one_builtin): Pass entire CALL_EXPR
      	instead of arglist.  Use new CALL_EXPR accessors.  Fix callers.
      	(iq2000_expand_builtin): Use new CALL_EXPR accessors.
      
      	* config/rs6000/rs6000-c.c (altivec_build_resolved_builtin): Use
      	build_call_expr.
      	* config/rs6000/rs6000.c (rs6000_gimplify_va_arg): Likewise.
      	(rs6000_expand_unop_builtin): Pass entire CALL_EXPR instead of
      	arglist.  Use new CALL_EXPR accessors.  Fix callers.
      	(altivec_expand_abs_builtin): Likewise.
      	(rs6000_expand_binop_builtin): Likewise.
      	(altivec_expand_predicate_builtin): Likewise.
      	(altivec_expand_lv_builtin): Likewise.
      	(spe_expand_stv_builtin): Likewise.
      	(altivec_expand_stv_builtin): Likewise.
      	(rs6000_expand_ternop_builtin): Likewise.
      	(altivec_expand_ld_builtin): Use new CALL_EXPR accessors.
      	(altivec_expand_st_builtin): Likewise.
      	(altivec_expand_dst_builtin): Likewise.
      	(altivec_expand_vec_init_builtin): Pass entire CALL_EXPR instead of
      	arglist.  Use new CALL_EXPR accessors.  Fix callers.
      	(altivec_expand_vec_set_builtin): Likewise.
      	(altivec_expand_vec_ext_builtin): Likewise.
      	(altivec_expand_builtin): Use new CALL_EXPR accessors.
      	(spe_expand_builtin): Likewise.
      	(spe_expand_predicate_builtin): Pass entire CALL_EXPR instead of
      	arglist.  Use new CALL_EXPR accessors.  Fix callers.
      	(spe_expand_evsel_builtin): Likewise.
      	(rs6000_expand_builtin): Use new CALL_EXPR accessors.  VCFUX and
      	FCFSX cases must construct whole new CALL_EXPR, not just arglist.
      
      	* config/arm/arm.c (arm_expand_binop_builtin): Pass entire CALL_EXPR
      	instead of arglist.  Use new CALL_EXPR accessors.  Fix callers.
      	(arm_expand_unop_builtin): Likewise.
      	(arm_expand_builtin): Use new CALL_EXPR accessors.
      
      	* config/mips/mips.c (mips_expand_builtin):  Use new CALL_EXPR
      	accessors.
      
      	* config/bfin/bfin.c (bfin_expand_binop_builtin): Pass entire CALL_EXPR
      	instead of arglist.  Use new CALL_EXPR accessors.  Fix callers.
      	(bfin_expand_unop_builtin): Likewise.
      	(bfin_expand_builtin): Use new CALL_EXPR accessors.
      
      2007-02-15  Sandra Loosemore  <sandra@codesourcery.com>
      	    Brooks Moses  <brooks.moses@codesourcery.com>
      	    Lee Millward  <lee.millward@codesourcery.com>
      
      	* c-semantics.c (build_stmt): Add internal diagnostic check.
      
      	* c-pretty-print.c (pp_c_postfix_expression): Use new CALL_EXPR
      	accessors.  Print arguments explicitly instead of as a list.
      
      	* c-typeck.c (build_function_call): Use new CALL_EXPR constructors.
      
      	* c-omp.c (c_finish_omp_barrier): Use build_call_expr.
      	(c_finish_omp_flish): Likewise.
      
      	* c-common.c (verify_tree): Use new CALL_EXPR accessors.  Traverse
      	arguments explicitly instead of as a list.  Use TREE_OPERAND_LENGTH
      	instead of TREE_CODE_LENGTH.
      	(check_function_arguments_recurse): Use new CALL_EXPR accessors.
      	(c_warn_unused_result): Likewise.
      
      2007-02-15  Sandra Loosemore  <sandra@codesourcery.com>
      	    Brooks Moses  <brooks.moses@codesourcery.com>
      	    Lee Millward  <lee.millward@codesourcery.com>
      
      	* cp-tree.def (AGGR_INIT_EXPR): Adjust documentation.
      	Change class to tcc_vl_exp.
      
      	* call.c (build_call): Use build_call_list instead 
      	of build3. 
      	(build_over_call): Likewise.
      	(build_new_method_call): Use build_min_non_dep_call_list 
      	instead of build_min_non_dep.
      
      	* error.c (dump_call_expr_args): New function.
      	(dump_aggr_init_expr_args): New function.
      	(dump_expr) <AGGR_INIT_EXPR, CALL_EXPR, INDIRECT_REF>: Use them. 
      	Update to use new CALL_EXPR and AGGR_INIT_EXPR accessor macros.
      
      	* cvt.c (convert_to_void): Use build_call_array instead
      	of build3; use new AGGR_INIT_EXPR accessor macros.
      
      	* mangle.c (write_expression): Use TREE_OPERAND_LENGTH
      	instead of TREE_CODE_LENGTH.
      
      	* dump.c (cp_dump_tree) <AGGR_INIT_EXPR>: Update to use new
      	AGGR_INIT_EXPR accessor macros.
      
      	* cp-gimplify.c (cp_gimplify_init_expr): Use 
      	AGGR_INIT_EXPR_SLOT to set the slot operand.
      
      	* cp-tree.h (AGGR_INIT_EXPR_FN): New macro.
      	(AGGR_INIT_EXPR_SLOT): New macro.
      	(AGGR_INIT_EXPR_ARG): New macro.
      	(aggr_init_expr_nargs): New macro.
      	(AGGR_INIT_EXPR_ARGP): New macro.
      	(aggr_init_expr_arg_iterator): New.
      	(init_aggr_init_expr_arg_iterator): New.
      	(next_aggr_init_expr_arg): New.
      	(first_aggr_init_expr_arg): New.
      	(more_aggr_init_expr_args_p): New.
      	(FOR_EACH_AGGR_INIT_EXPR_ARG): New.
      	(stabilize_aggr_init): New declaration.
      	(build_min_non_dep_call_list): Likewise.
      
      	* tree.c (process_aggr_init_operands): New function.
      	(build_aggr_init_array) New function.
      	(build_cplus_new): Update to use new CALL_EXPR and
      	AGGR_INIT_EXPR accessor macros. Replace use of build3 with
      	build_aggr_init_array.
      	(build_min_non_dep_call_list) New function.
      	(build_min_nt): Assert input code parameter is not a variable
      	length expression class.
      	(build_min, build_min_non_dep): Likewise.
      	(cp_tree_equal) <CALL_EXPR>: Iterate through the arguments
      	to check for equality instead of recursing. Handle tcc_vl_exp
      	tree code classes.
      	(stabilize_call): Update to only handle CALL_EXPRs, not 
      	AGGR_INIT_EXPRs; use new CALL_EXPR accessor macros.
      	(stabilize_aggr_init): New function.
      	(stabilize_init): Use it.
      
      	* cxx-pretty-print.c (pp_cxx_postfix_expression)
      	<AGGR_INIT_EXPR, CALL_EXPR>: Update to use new CALL_EXPR and
      	AGGR_INIT_EXPR accessor macros and argument iterators.
      	
      	* pt.c (tsubst_copy) <CALL_EXPR>: Replace build_nt with
      	build_vl_exp. Iterate through the operands, recursively 
      	processing each one.
      	(tsubst_copy_and_build) <CALL_EXPR>: Update to use new
      	CALL_EXPR accessor macros.
      	(value_dependent_expression_p) <default>: Handle tcc_vl_exp
      	tree code classes. Use TREE_OPERAND_LENGTH instead of 
      	TREE_CODE_LENGTH.
      
      	* semantics.c (finish_call_expr): Use build_nt_call_list
      	instead of build_nt.
      	(simplify_aggr_init_expr): Update to use new AGGR_INIT_EXPR 
      	accessor macros. Use build_call_array to construct the 
      	CALL_EXPR node instead of build3
      	
      	* decl2.c (build_offset_ref_call_from_tree): Use 
      	build_nt_call_list and build_min_non_dep_call_list instead
      	of build_min_nt and build_min_non_dep.
      
      	* parser.c (cp_parser_postfix_expression) <CPP_OPEN_PAREN>:
      	Use build_nt_call_list instead of build_min_nt.
      
      2007-02-15  Sandra Loosemore  <sandra@codesourcery.com>
      	    Brooks Moses  <brooks.moses@codesourcery.com>
      	    Lee Millward  <lee.millward@codesourcery.com>
      
      	* java-tree.h (BUILD_MONITOR_ENTER): Use build_call_nary instead
      	of build3.
      	(BUILD_MONITOR_EXIT): Likewise.
      
      	* java-gimplify.c (java_gimplify_component_ref): Use build_call_expr.
      	(java_gimplify_modify_expr): Likewise.
      
      	* class.c (cache_this_class_ref): Use build_call_expr.
      	(build_static_field_ref): Likewise.
      	(emit_indirect_register_classes): Likewise.
      	(emit_register_classes): Likewise.
      
      	* resource.c (write_resource_constructor): Use build_call_expr.
      
      	* builtins.c (builtin_creator_function): Change interpretation of
      	the second parameter to be the whole CALL_EXPR instead of the arglist.
      	(max_builtin): Tweak parameter list.  Use new CALL_EXPR accessors.
      	(min_builtin): Likewise.
      	(abs_builtin): Likewise.
      	(java_build_function_call_expr): Likewise.
      	(convert_real): Likewise.
      	(UNMARSHAL3): Likewise.
      	(UNMARSHAL4): Likewise.
      	(UNMARSHAL5): Likewise.
      	(build_arglist_for_builtin): Delete.  Fix callers to use
      	build_call_expr instead.
      	(putObject_builtin): Tweak parameter list.  Use new CALL_EXPR
      	accessors.
      	(compareAndSwapInt_builtin): Likewise.
      	(compareAndSwapLong_builtin): Likewise.
      	(compareAndSwapObject_builtin): Likewise.
      	(putVolatile_builtin): Likewise.
      	(getVolatile_builtin): Likewise.
      	(VMSupportsCS8_builtin): Likewise.
      	(check_for_builtin): Pass entire CALL_EXPR to builtin expander
      	instead of arglist.
      
      	* expr.c (build_java_athrow): Use build_call_nary instead of build3.
      	(build_java_throw_out_of_bounds_exception): Likewise.
      	(java_check_reference): Likewise.
      	(build_java_arraystore_check): Likewise.
      	(build_newarray): Likewise.
      	(build_anewarray): Likewise.
      	(expand_java_multinewarray): Use build_call_list instead of build3.
      	(build_java_monitor): Use build_call_nary instead of build3.
      	(java_create_object): Likewise.
      	(expand_java_NEW): Likewise.
      	(build_instanceof): Likewise.
      	(expand_java_CHECKCAST): Likewise.
      	(build_java_soft_divmod): Likewise.
      	(build_java_binop): Likewise.
      	(build_field_ref): Likewise.
      	(build_class_init): Likewise.
      	(rewrite_arglist_getcaller): Use build_call_expr.
      	(build_invokeinterface):  Use build_call_nary instead of build3.
      	(expand_invoke): Use build_call_list instead of build3.
      	(build_jni_stub): Use build_call_nary, build_call_list, or
      	build_call_expr instead	of build3.
      	(expand_java_field_op): Use build_call_expr instead of build3.
      	(force_evaluation_order): Use new CALL_EXPR accessors.
      
      	* lang.c (java_get_callee_fndecl): Use new CALL_EXPR accessors.
      
      2007-02-15  Sandra Loosemore  <sandra@codesourcery.com>
      	    Brooks Moses  <brooks.moses@codesourcery.com>
      	    Lee Millward  <lee.millward@codesourcery.com>
      
      	* objc-act.c (receiver_is_class_object): Use new CALL_EXPR accessors.
      	(objc_get_callee_fndecl): Likewise.
      
      2007-02-15  Sandra Loosemore  <sandra@codesourcery.com>
      	    Brooks Moses  <brooks.moses@codesourcery.com>
      	    Lee Millward  <lee.millward@codesourcery.com>
      
      	* trans-expr.c (gfc_conv_power_op): Use build_call_expr.
      	(gfc_conv_string_tmp): Likewise.
      	(gfc_conv_concat_op): Likewise.
      	(gfc_build_compare_string): Likewise.
      	(gfc_conv_function_call): Use build_call_list instead of build3.
      
      	* trans-array.c (gfc_trans_allocate_array_storage): Use
      	build_call_expr.
      	(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.
      	(gfc_trans_dealloc_allocated): Likewise.
      	(gfc_duplicate_allocatable): Likewise.
      
      	* trans-openmp.c (gfc_trans_omp_barrier): Use build_call_expr.
      	(gfc_trans_omp_flush): Likewise.
      
      	* trans-stmt.c (gfc_conv_elementel_dependencies): Use build_call_expr.
      	(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_2): Likewise.
      	(gfc_trans_allocate): Likewise.
      	(gfc_trans_deallocate): Likewise.
      
      	* trans.c (gfc_trans_runtime_check): Use build_call_expr.
      
      	* trans-io.c (gfc_trans_open): Use build_call_expr.
      	(gfc_trans_close): Likewise.
      	(build_filepos): Likewise.
      	(gfc_trans_inquire): Likewise.
      	(NML_FIRST_ARG): Delete.
      	(NML_ADD_ARG): Delete.
      	(transfer_namelist_element): Use build_call_expr.
      	(build_dt): Likewise.
      	(gfc_trans_dt_end): Likewise.
      	(transfer_expr): Likewise.
      	(transfer_array-desc): Likewise.
      
      	* trans-decl.c (gfc_generate_function_code): Use build_call_expr.
      	(gfc_generate_constructors): Likewise.
      
      	* trans-intrinsic.c (gfc_conv_intrinsic_ctime): Use build_call_expr.
      	(gfc_conv_intrinsic_fdate): Likewise.
      	(gfc_conv_intrinsic_ttynam): Likewise.
      	(gfc_conv_intrinsic_array_transfer): Likewise.
      	(gfc_conv_associated): Likewise.
      	(gfc_conv_intrinsic_si_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@122018 138bc75d-0d04-0410-961f-82ee72b054a4
      c2f47e15
  6. 09 Feb, 2007 1 commit
    • fxcoudert's avatar
      PR fortran/30720 · 38ac16ec
      fxcoudert authored
      	* trans-array.c (gfc_trans_create_temp_array): Remove use of the
      	function argument. Always generate code for negative extent.
      	Simplify said code.
      	* trans-array.h (gfc_trans_create_temp_array): Change prototype.
      	* trans-expr.c (gfc_conv_function_call): Remove use of last argument
      	of gfc_trans_create_temp_array.
      	* trans-intrinsic.c (gfc_conv_intrinsic_array_transfer): Likewise.
      	* trans-stmt.c (gfc_conv_elemental_dependencies): Likewise.
      
      	* gfortran.dg/array_function_1.f90: New test.
      
      
      git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@121773 138bc75d-0d04-0410-961f-82ee72b054a4
      38ac16ec
  7. 02 Feb, 2007 1 commit
    • pault's avatar
      2007-02-02 Paul Thomas <pault@gcc.gnu.org> · 2ecf364f
      pault authored
      	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
      2ecf364f
  8. 27 Jan, 2007 1 commit
    • pault's avatar
      2007-01-27 Paul Thomas <pault@gcc.gnu.org> · 74f588f2
      pault authored
      	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
      74f588f2
  9. 20 Jan, 2007 1 commit
    • sayle's avatar
      · 538374c5
      sayle authored
      	* dependency.c (gfc_full_array_ref_p): Check that ref->next is NULL,
      	i.e. that the ARRAY_REF doesn't mention components.
      	* trans-array.c (gfc_constant_array_constructor_p): Export external
      	function renamed from constant_array_constructor_p.
      	(gfc_build_constant_array_constructor): Export.
      	(gfc_trans_array_constructor): Update call to the renamed function
      	constant_array_constructor_p.
      	* trans-array.h (gfc_constant_array_constructor_p): Prototype here.
      	(gfc_build_constant_array_constructor): Likewise.
      	* trans-expr.c (gfc_build_memcpy_call): New helper function split
      	out from gfc_trans_array_copy.
      	(gfc_trans_array_copy): Use gfc_build_memcpy_call.
      	(gfc_trans_array_constructor_copy): New function to optimize
      	assigning an entire array from a constant array constructor.
      	(gfc_trans_assignment): Call gfc_trans_array_constructor_copy
      	when appropriate.
      
      	* gfortran.dg/array_memcpy_3.f90: New test case.
      	* gfortran.dg/vect/vect-5.f90: Update vectorized loop count.
      
      
      
      git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@121010 138bc75d-0d04-0410-961f-82ee72b054a4
      538374c5
  10. 18 Jan, 2007 1 commit
    • sayle's avatar
      · 6fc8b651
      sayle authored
      	* trans-expr.c (copyable_array_p): Consider user derived types without
      	allocatable components to be copyable.
      
      	* gfortran.dg/array_memcpy_4.f90: New test case.
      
      
      
      git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@120906 138bc75d-0d04-0410-961f-82ee72b054a4
      6fc8b651
  11. 05 Jan, 2007 1 commit
    • sayle's avatar
      · 1372ec9a
      sayle authored
      	* trans-expr.c (gfc_trans_assignment_1): New subroutine to scalarize
      	array assignments split out from gfc_trans_assignment.
      	(gfc_trans_array_copy): New function to implement array to array
      	copies via calls to __builtin_memcpy.
      	(copyable_array_p): New helper function to identify an array of
      	simple/POD types, that may be copied/assigned using memcpy.
      	(gfc_trans_assignment): Use gfc_trans_array_copy to handle simple
      	whole array assignments considered suitable by copyable_array_p.
      	Invoke gfc_trans_assignment_1 to perform the fallback scalarization.
      
      	* gfortran.dg/array_memcpy_1.f90: New test case.
      	* gfortran.dg/array_memcpy_2.f90: Likewise.
      
      
      
      git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@120503 138bc75d-0d04-0410-961f-82ee72b054a4
      1372ec9a
  12. 31 Dec, 2006 1 commit
    • pault's avatar
      2006-12-31 Paul Thomas <pault@gcc.gnu.org> · 8d7cdc4d
      pault authored
      	PR fortran/23060
      	* intrinsic.c (compare_actual_formal ): Distinguish argument
      	list functions from keywords.
      	* intrinsic.c (sort_actual): If formal is NULL, the presence of
      	an argument list function actual is an error.
      	* trans-expr.c (conv_arglist_function) : New function to
      	implement argument list functions %VAL, %REF and %LOC.
      	(gfc_conv_function_call): Call it.
      	* resolve.c (resolve_actual_arglist): Add arg ptype and check
      	argument list functions.
      	(resolve_function, resolve_call): Set value of ptype before
      	calls to resolve_actual_arglist.
      	* primary.c (match_arg_list_function): New function.
      	(gfc_match_actual_arglist): Call it before trying for a
      	keyword argument.
      
      2006-12-31  Paul Thomas  <pault@gcc.gnu.org>
      
      	PR fortran/23060
      	* gfortran.dg/c_by_val.c: Called by c_by_val_1.f.
      	* gfortran.dg/c_by_val_1.f: New test.
      	* gfortran.dg/c_by_val_2.f: New test.
      	* gfortran.dg/c_by_val_3.f: New test.
      
      
      git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@120295 138bc75d-0d04-0410-961f-82ee72b054a4
      8d7cdc4d
  13. 21 Dec, 2006 1 commit
    • pault's avatar
      2006-12-21 Paul Thomas <pault@gcc.gnu.org> · 76b504f5
      pault authored
      	PR fortran/30202
      	* trans-array.c (gfc_conv_function_call): Use parmse.expr for
      	the nullifying of intent(out) arguments rather than the backend
      	declaration.
      
      2006-12-21  Paul Thomas  <pault@gcc.gnu.org>
      
      	PR fortran/30202
      	* gfortran.dg/alloc_comp_basics_3.f90: New test.
      
      
      
      
      git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@120109 138bc75d-0d04-0410-961f-82ee72b054a4
      76b504f5
  14. 20 Dec, 2006 1 commit
    • sayle's avatar
      · 67313c34
      sayle authored
      	* trans-expr.c (is_zero_initializer_p): Determine whether a given
      	constant expression is a zero initializer.
      	(gfc_trans_zero_assign): New function to attempt to optimize
      	"a(:) = 0.0" as a call to __builtin_memset (a, 0, sizeof(a));
      	(gfc_trans_assignment): Special case array assignments to a
      	zero initializer constant, using gfc_trans_zero_assign.
      
      	* gfortran.dg/array_memset_1.f90: New test case.
      
      
      
      git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@120078 138bc75d-0d04-0410-961f-82ee72b054a4
      67313c34
  15. 12 Dec, 2006 1 commit
    • tobi's avatar
      fortran/ · 53e60566
      tobi authored
      * trans-expr.c (gfc_conv_substring): Check for empty substring.
      testsuite/
      * lib/fortran-torture.exp: Update copyright years.  Remove
      obsolete comment.  Test -ftree-vectorize where it makes sense.
      * lib/gfortran-dg.exp: Update copyright years.  Use settings
      from fortran-torture.exp.
      * gfortran.dg/char_transpose_1.f90,
      gfortran.dg/char_spread_1.f90, gfortran.dg/g77/dnrm2.f,
      gfortran.dg/dependent_decls_1.f90: Fixout-of-bound errors.
      * gfortran.dg/enum_10.f90, gfortran.dg/mixed_io_1.f90:  Add
      '-w' to dg-options.
      
      
      git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@119797 138bc75d-0d04-0410-961f-82ee72b054a4
      53e60566
  16. 05 Dec, 2006 1 commit
    • pault's avatar
      2006-12-05 Paul Thomas <pault@gcc.gnu.org> · 5065911e
      pault authored
      	PR fortran/29912
      	* trans-expr.c (gfc_trans_arrayfunc_assign): Return NULL if the
      	lhs and rhs character lengths are not constant and equal for
      	character array valued functions.
      
      2006-12-05  Paul Thomas  <pault@gcc.gnu.org>
      
      	PR fortran/29912
      	* gfortran.dg/char_result_12.f90: New test.
      
      
      git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@119554 138bc75d-0d04-0410-961f-82ee72b054a4
      5065911e
  17. 03 Dec, 2006 1 commit
    • pault's avatar
      2006-12-03 Paul Thomas <pault@gcc.gnu.org> · 8f6339b6
      pault authored
      	PR fortran/29642
      	* trans-expr.c (gfc_conv_variable): A character expression with
      	the VALUE attribute needs an address expression; otherwise all
      	other expressions with this attribute must not be dereferenced.
      	(gfc_conv_function_call): Pass expressions with the VALUE
      	attribute by value, using gfc_conv_expr.
      	* symbol.c (check_conflict): Add strings for INTENT OUT, INOUT
      	and VALUE.  Apply all the constraints associated with the VALUE
      	attribute.
      	(gfc_add_value): New function.
      	(gfc_copy_attr): Call it for VALUE attribute.
      	* decl.c (match_attr_spec): Include the VALUE attribute.
      	(gfc_match_value): New function.
      	* dump-parse-tree.c (gfc_show_attr): Include VALUE.
      	* gfortran.h : Add value to the symbol_attribute structure and
      	add a prototype for gfc_add_value
      	* module.c (mio_internal_string): Include AB_VALUE in enum.
      	(attr_bits): Provide the VALUE string for it.
      	(mio_symbol_attribute): Read or apply the VLUE attribute.
      	* trans-types.c (gfc_sym_type): Variables with the VLAUE
      	attribute are not passed by reference!
      	* resolve.c (was_declared): Add value to those that return 1.
      	(resolve_symbol): Value attribute requires dummy attribute.
      	* match.h : Add prototype for gfc_match_public.
      	* parse.c (decode_statement): Try to match a VALUE statement.
      
      
      2006-12-03  Paul Thomas  <pault@gcc.gnu.org>
      
      	PR fortran/29642
      	* gfortran.dg/value_1.f90 : New test.
      	* gfortran.dg/value_2.f90 : New test.
      	* gfortran.dg/value_3.f90 : New test.
      	* gfortran.dg/value_4.f90 : New test.
      	* gfortran.dg/value_4.c : Called from value_4.f90.
      
      git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@119461 138bc75d-0d04-0410-961f-82ee72b054a4
      8f6339b6
  18. 28 Nov, 2006 1 commit
  19. 26 Nov, 2006 1 commit
  20. 15 Nov, 2006 1 commit
    • burnus's avatar
      fortran/ · ee3729de
      burnus authored
      2006-11-15  Tobias Burnus  <burnus@net-b.de>
                  Francois-Xavier Coudert  <fxcoudert@gcc.gnu.org>
      
             PR fortran/27588
             * trans-expr.c (gfc_conv_substring): Add bounds checking.
               (gfc_conv_variable, gfc_conv_substring_expr): Pass more
               arguments to gfc_conv_substring.
      
      testsuite/
      2006-11-15  Tobias Burnus  <burnus@net-b.de>
      
             PR fortran/27588
             * gfortran.dg/char_bounds_check_fail_1.f90: New test.
      
      
      
      git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@118852 138bc75d-0d04-0410-961f-82ee72b054a4
      ee3729de
  21. 13 Nov, 2006 1 commit
  22. 10 Nov, 2006 1 commit
  23. 05 Nov, 2006 1 commit
    • pault's avatar
      2006-11-05 Francois-Xavier Coudert <fxcoudert@gcc.gnu,org> · 54ad1b4d
      pault authored
      	    Paul Thomas  <pault@gcc.gnu.org>
      
      	PR fortran/24518
      	* trans-intrinsic.c (gfc_conv_intrinsic_mod): Use built_in fmod
      	for both MOD and MODULO, if it is available.
      
      	PR fortran/29565
      	* trans-expr.c (gfc_conv_aliased_arg): For an INTENT(OUT), save
      	the declarations from the unused loops by merging the block
      	scope for each; this ensures that the temporary is declared.
      
      2006-11-05  Paul Thomas  <pault@gcc.gnu.org>
      
      	PR fortran/29565
      	* gfortran.dg/gfortran.dg/aliasing_dummy_3.f90: New test.
      
      
      
      git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@118492 138bc75d-0d04-0410-961f-82ee72b054a4
      54ad1b4d
  24. 31 Oct, 2006 1 commit
    • pault's avatar
      2006-10-31 Paul Thomas <pault@gcc.gnu.org> · 926b9532
      pault authored
      	PR fortran/29387
      	* trans-intrinsic.c (gfc_conv_intrinsic_len): Rearrange to have
      	a specific case for EXPR_VARIABLE and, in default, build an ss
      	to call gfc_conv_expr_descriptor for array expressions..
      
      	PR fortran/29490
      	* trans-expr.c (gfc_set_interface_mapping_bounds): In the case
      	that GFC_TYPE_ARRAY_LBOUND is not available, use descriptor
      	values for it and GFC_TYPE_ARRAY_UBOUND.
      
      	PR fortran/29641
      	* trans-types.c (gfc_get_derived_type): If the derived type
      	namespace has neither a parent nor a proc_name, set NULL for
      	the search namespace.
      
      
      2006-10-31  Paul Thomas  <pault@gcc.gnu.org>
      
      	PR fortran/29387
      	* gfortran.dg/intrinsic_actual_2.f90: New test.
      
      	PR fortran/29490
      	* gfortran.dg/actual_array_interface_1.f90: New test.
      
      	PR fortran/29641
      	* gfortran.dg/used_types_11.f90: New test.
      
      
      git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@118220 138bc75d-0d04-0410-961f-82ee72b054a4
      926b9532
  25. 22 Oct, 2006 1 commit
    • fxcoudert's avatar
      PR fortran/26025 · 4e8e57b0
      fxcoudert authored
      	* 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
      4e8e57b0
  26. 19 Oct, 2006 1 commit
    • pault's avatar
      2006-10-19 Paul Thomas <pault@gcc.gnu.org> · b9cd8c56
      pault authored
      	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
      b9cd8c56
  27. 14 Oct, 2006 1 commit
  28. 13 Oct, 2006 1 commit
    • pault's avatar
      2006-10-13 Paul Thomas <pault@gcc.gnu.org> · 540338c6
      pault authored
      	PR fortran/29373
      	* decl.c (get_proc_name, gfc_match_function_decl): Add
      	attr.implicit_type to conditions that throw error for
      	existing explicit interface and that allow new type-
      	spec to be applied.
      
      	PR fortran/29407
      	* resolve.c (resolve_fl_namelist): Do not check for
      	namelist/procedure conflict, if the symbol corresponds
      	to a good local variable declaration.
      
      	PR fortran/27701
      	* decl.c (get_proc_name): Replace the detection of a declared
      	procedure by the presence of a formal argument list by the
      	attributes of the symbol and the presence of an explicit
      	interface.
      
      	PR fortran/29232
      	* resolve.c (resolve_fl_variable): See if the host association
      	of a derived type is blocked by the presence of another type I
      	object in the current namespace.
      
      	PR fortran/29364
      	* resolve.c (resolve_fl_derived): Check for the presence of
      	the derived type for a derived type component.
      
      	PR fortran/24398
      	* module.c (gfc_use_module): Check that the first words in a
      	module file are 'GFORTRAN module'.
      
      	PR fortran/29422
      	* resolve.c (resolve_transfer): Test functions for suitability
      	for IO, as well as variables.
      
      	PR fortran/29428
      	* trans-expr.c (gfc_trans_scalar_assign): Remove nullify of
      	rhs expression.
      
      
      2006-10-13 Paul Thomas <pault@gcc.gnu.org>
      
      	PR fortran/29373
      	* gfortran.dg/implicit_9.f90: New test.
      
      	PR fortran/29407
      	* gfortran.dg/namelist_25.f90: New test.
      
      	PR fortran/27701
      	* gfortran.dg/same_name_2.f90: New test.
      
      	PR fortran/29232
      	* gfortran.dg/host_assoc_types_1.f90: New test.
      
      	PR fortran/29364
      	* gfortran.dg/missing_derived_type_1.f90: New test.
      	* gfortran.dg/implicit_actual.f90: Comment out USE GLOBAL.
      
      	PR fortran/29422
      	* gfortran.dg/alloc_comp_constraint_4.f90: New test.
      
      	PR fortran/29428
      	* gfortran.dg/alloc_comp_assign_5.f90: New test.
      
      
      git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@117692 138bc75d-0d04-0410-961f-82ee72b054a4
      540338c6
  29. 08 Oct, 2006 1 commit
    • pault's avatar
      2006-10-05 Erik Edelmann <edelmann@gcc.gnu.org> · 2294b616
      pault authored
      	    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
      2294b616
  30. 03 Oct, 2006 1 commit
    • pault's avatar
      2006-10-03 Paul Thomas <pault@gcc.gnu.org> · d45fced7
      pault authored
      	PR fortran/29284
      	PR fortran/29321
      	PR fortran/29322
      	* trans-expr.c (gfc_conv_function_call): Check the expression
      	and the formal symbol are present when testing the actual
      	argument.
      
      	PR fortran/25091
      	PR fortran/25092
      	* resolve.c (resolve_entries): It is an error if the entries
      	of an array-valued function do not have the same shape.
      
      2006-10-03  Paul Thomas  <pault@gcc.gnu.org>
      
      	PR fortran/29284
      	* gfortran.dg/optional_assumed_charlen_1.f90: New test.
      
      	PR fortran/29321
      	PR fortran/29322
      	* gfortran.dg/missing_optional_dummy_2.f90: New test.
      
      	PR fortran/25091
      	PR fortran/25092
      	* gfortran.dg/entry_array_specs_1.f90: New test.
      
      
      git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@117413 138bc75d-0d04-0410-961f-82ee72b054a4
      d45fced7
  31. 13 Sep, 2006 1 commit
  32. 11 Sep, 2006 1 commit
    • pault's avatar
      2006-09-11 Paul Thomas <pault@gcc.gnu.org> · cce7ac71
      pault authored
      	PR fortran/28890
      	trans-expr.c (gfc_conv_function_call): Obtain the string length
      	of a dummy character(*) function from the symbol if it is not
      	already translated.  For a call to a character(*) function, use
      	the passed, hidden string length argument, which is available
      	from the backend_decl of the formal argument.
      	resolve.c (resolve_function): It is an error if a function call
      	to a character(*) function is other than a dummy procedure or
      	an intrinsic.
      
      2006-09-11  Paul Thomas  <pault@gcc.gnu.org>
      
      	PR libfortran/28890
      	gfortran.dg/assumed_charlen_function_5.f90: New test.
      
      
      
      
      
      git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@116839 138bc75d-0d04-0410-961f-82ee72b054a4
      cce7ac71
  33. 30 Aug, 2006 1 commit
    • pault's avatar
      2006-08-30 Paul Thomas <pault@gcc.gnu.org> · e8325fb3
      pault authored
      	PR fortran/28885
      	REGRESSION FIX
      	* trans-expr.c (gfc_conv_aliased_arg): Ensure that the temp
      	declaration is retained for INTENT(OUT) arguments.
      
      	PR fortran/28873
      	REGRESSION FIX
      	PR fortran/20067
      	* resolve.c (resolve_generic_f): Make error message more
      	comprehensible.
      	(resolve_generic_s): Restructure search for specific procedures
      	to be similar to resolve_generic_f and change to similar error
      	message.  Ensure that symbol reference is refreshed, in case
      	the search produces a NULL.
      	(resolve_specific_s): Restructure search, as above and as
      	resolve_specific_f. Ensure that symbol reference is refreshed,
      	in case the search produces a NULL.
      
      	PR fortran/25077
      	PR fortran/25102
      	* interface.c (check_operator_interface): Throw error if the
      	interface assignment tries to change intrinsic type assigments
      	or has less than two arguments.  Also, it is an error if an
      	interface operator contains an alternate return.
      
      	PR fortran/24866
      	* parse.c (gfc_fixup_sibling_symbols): Do not modify the symbol
      	if it is a dummy in the contained namespace.
      
      
      2006-08-30  Paul Thomas  <pault@gcc.gnu.org>
      
      	PR fortran/28885
      	* gfortran.dg/aliasing_dummy_2.f90: New test.
      
      	PR fortran/20067
      	* gfortran.dg/generic_5.f90: Change error message.
      
      	PR fortran/28873
      	* gfortran.dg/generic_6.f90: New test.
      
      	PR fortran/25077
      	* gfortran.dg/redefined_intrinsic_assignment.f90: New test.
      
      	PR fortran/25102
      	* gfortran.dg/invalid_interface_assignment.f90: New test.
      
      	PR fortran/24866
      	* gfortran.dg/module_proc_external_dummy.f90: New test.
      
      
      git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@116578 138bc75d-0d04-0410-961f-82ee72b054a4
      e8325fb3
  34. 20 Aug, 2006 1 commit
    • pault's avatar
      2006-08-20 Paul Thomas <pault@gcc.gnu.org> · d95efb59
      pault authored
      	PR fortran/28601
      	PR fortran/28630
      	* gfortran.h : Eliminate gfc_dt_list structure and reference
      	to it in gfc_namespace.
      	* resolve.c (resolve_fl_derived): Remove the building of the
      	list of derived types for the current namespace.
      	* symbol.c (find_renamed_type): New function to find renamed
      	derived types by symbol name rather than symtree name.
      	(gfc_use_derived): Search parent namespace for identical
      	derived type and use it, even if local version is complete,
      	except in interface bodies. Ensure that renamed derived types
      	are found by call to find_renamed_type. Recurse for derived
      	type components.
      	(gfc_free_dt_list): Remove.
      	(gfc_free_namespace): Remove call to previous.
      	* trans-types.c (copy_dt_decls_ifequal): Remove.
      	(gfc_get_derived_type): Remove all the paraphenalia for
      	association of derived types, including calls to previous.
      	* match.c (gfc_match_allocate): Call gfc_use_derived to
      	associate any derived types that are being allocated.
      
      	PR fortran/20886
      	* resolve.c (resolve_actual_arglist): The passing of
      	a generic procedure name as an actual argument is an
      	error.
      
      	PR fortran/28735
      	* resolve.c (resolve_variable): Check for a symtree before
      	resolving references.
      
      	PR fortran/28762
      	* primary.c (match_variable): Return MATCH_NO if the symbol
      	is that of the program.
      
      	PR fortran/28425
      	* trans-expr.c (gfc_trans_subcomponent_assign): Translate
      	derived type component expressions other than another derived
      	type constructor.
      
      	PR fortran/28496
      	* expr.c (find_array_section): Correct errors in
      	the handling of a missing start value for the
      	index triplet in an array reference.
      
      	PR fortran/18111
      	* trans-decl.c (gfc_build_dummy_array_decl): Before resetting
      	reference to backend_decl, set it DECL_ARTIFICIAL.
      	(gfc_get_symbol_decl): Likewise for original dummy decl, when
      	a copy is made of an array.
      	(create_function_arglist): Likewise for the _entry paramter
      	in entry_masters.
      	(build_entry_thunks): Likewise for dummies in entry thunks.
      
      	PR fortran/28600
      	* trans-decl.c (gfc_get_symbol_decl): Ensure that the
      	DECL_CONTEXT of the length of a character dummy is the
      	same as that of the symbol declaration.
      
      	PR fortran/28771
      	* decl.c (add_init_expr_to_sym): Remove setting of charlen for
      	an initializer of an assumed charlen variable.
      
      	PR fortran/28660
      	* trans-decl.c (generate_expr_decls): New function.
      	(generate_dependency_declarations): New function.
      	(generate_local_decl): Call previous if not either a dummy or
      	a declaration in an entry master.
      
      2006-08-20 Paul Thomas <pault@gcc.gnu.org>
      
      	PR fortran/28630
      	* gfortran.dg/used_types_2.f90: New test.
      
      	PR fortran/28601
      	* gfortran.dg/used_types_3.f90: New test.
      
      	PR fortran/20886
      	* gfortran.dg/generic_actual_arg.f90: New test.
      
      	PR fortran/28735
      	* gfortran.dg/module_private_array_refs_1.f90: New test.
      
      	PR fortran/28762
      	* gfortran.dg/program_name_1.f90: New test.
      
      	PR fortran/28425
      	* gfortran.dg/derived_constructor_comps_1.f90: New test.
      
      	PR fortran/28496
      	* gfortran.dg/array_initializer_2.f90: New test.
      
      	PR fortran/18111
      	* gfortran.dg/unused_artificial_dummies_1.f90: New test. 
      
      	PR fortran/28600
      	* gfortran.dg/assumed_charlen_function_4.f90: New test.
      
      	PR fortran/28771
      	* gfortran.dg/assumed_charlen_in_main.f90: New test.
      
      	PR fortran/28660
      	* gfortran.dg/dependent_decls_1.f90: New test.
      
      
      git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@116268 138bc75d-0d04-0410-961f-82ee72b054a4
      d95efb59
  35. 19 Aug, 2006 1 commit
    • eedelman's avatar
      fortran/ · 46643105
      eedelman authored
      2006-08-19  Erik Edelmann  <eedelman@gcc.gnu.org>
      
              PR fortran/25217
              * resolve.c (resolve_fl_variable): Set a default initializer for
              derived types with INTENT(OUT) even if 'flag' is true.
              * trans-expr.c (gfc_conv_function_call): Insert code to
              reinitialize INTENT(OUT) arguments of derived type with default
              initializers.
      
      
      testsuite/
      2006-08-19  Erik Edelmann  <eedelman@gcc.gnu.org>
      
              PR fortran/25217
              * gfortran.dg/derived_init_2.f90: New.
      
      
      
      git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@116261 138bc75d-0d04-0410-961f-82ee72b054a4
      46643105
  36. 15 Jul, 2006 1 commit
  37. 13 Jul, 2006 1 commit
    • pault's avatar
      2006-07-13 Paul Thomas <pault@gcc.gnu.org> · b8a51d79
      pault authored
      	PR fortran/28174
      	* trans-expr.c (gfc_conv_aliased_arg): Missing formal arg means
      	that intent is INOUT (fixes regression).
      
      	PR fortran/25097
      	* check.c (check_present): The only permitted reference is a
      	full array reference.
      
      	PR fortran/20903
      	* decl.c (variable_decl): Add error if a derived type is not
      	from the current namespace if the namespace is an interface
      	body.
      
      2006-07-13  Paul Thomas  <pault@gcc.gnu.org>
      
      	PR fortran/25097
      	* gfortran.dg/present_1.f90: New test.
      
      	PR fortran/20903
      	* gfortran.dg/interface_derived_type_1.f90: New test.
      
      
      git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@115410 138bc75d-0d04-0410-961f-82ee72b054a4
      b8a51d79
  38. 12 Jul, 2006 1 commit
    • fxcoudert's avatar
      PR fortran/28163 · 59b9dcbd
      fxcoudert authored
      	* 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
      59b9dcbd
  39. 04 Jul, 2006 1 commit
    • pault's avatar
      2006-07-04 Paul Thomas <pault@gcc.gnu.org> · 35d9c496
      pault authored
      	PR fortran/28174
      	* trans-array.c (gfc_conv_expr_descriptor): When building temp,
      	ensure that the substring reference uses a new charlen.
      	* trans-expr.c (gfc_conv_aliased_arg): Add the formal intent to
      	the argument list, lift the treatment of missing string lengths
      	from the above and implement the use of the intent.
      	(gfc_conv_function_call): Add the extra argument to the call to
      	the above.
      
      	PR fortran/28167
      	* trans-array.c (get_array_ctor_var_strlen): Treat a constant
      	substring reference.
      	* array.c (gfc_resolve_character_array_constructor): Remove 
      	static attribute and add the gfc_ prefix, make use of element
      	charlens for the expression and pick up constant string lengths
      	for expressions that are not themselves constant.
      	* gfortran.h : resolve_character_array_constructor prototype
      	added.
      	* resolve.c (gfc_resolve_expr): Call resolve_character_array_
      	constructor again after expanding the constructor, to ensure
      	that the character length is passed to the expression.
      
      2006-07-04  Paul Thomas  <pault@gcc.gnu.org>
      
      	PR fortran/28174
      	* gfortran.dg/actual_array_substr_2.f90: New test.
      
      	PR fortran/28167
      	* gfortran.dg/actual_array_constructor_2.f90: New test.
      
      
      
      git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@115182 138bc75d-0d04-0410-961f-82ee72b054a4
      35d9c496
  40. 21 Jun, 2006 1 commit