aboutsummaryrefslogtreecommitdiff
path: root/gcc/fortran/trans-intrinsic.c
AgeCommit message (Collapse)AuthorFilesLines
2008-11-12re PR target/35366 (gfortran.dg/equiv_7.f90 fails with -m64 -Os on ↵Jakub Jelinek1-11/+36
powerpc-apple-darwin9) PR target/35366 PR fortran/33759 * fold-const.c (native_encode_string): New function. (native_encode_expr): Use it for STRING_CST. * trans-const.c (gfc_conv_constant_to_tree): Warn when converting an integer outside of LOGICAL's range to LOGICAL. * trans-intrinsic.c (gfc_conv_intrinsic_function, gfc_conv_intrinsic_array_transfer, gfc_conv_intrinsic_transfer): Use INTEGER_TYPE instead of BOOLEAN_TYPE for TRANSFER as argument of another TRANSFER. * gfortran.dg/hollerith.f90: Don't assume a 32-bit value stored into logical variable will be preserved. * gfortran.dg/transfer_simplify_4.f90: Remove undefined cases. Run at all optimization levels. Add a couple of new tests. * gfortran.dg/hollerith5.f90: New test. * gfortran.dg/hollerith_legacy.f90: Add dg-warning. From-SVN: r141790
2008-11-01re PR fortran/35681 (wrong result for vector subscripted array expression in ↵Daniel Kraft1-1/+1
MVBITS) 2008-11-01 Daniel Kraft <d@domob.eu> PR fortran/35681 * gfortran.h (struct gfc_code): New field `resolved_isym'. * trans.h (gfc_build_memcpy_call): Made public. * trans-array.h (gfc_trans_create_temp_array): New argument `initial'. * intrinsic.c (gfc_intrinsic_sub_interface): Set resolved_isym. * iresolve.c (create_formal_for_intents): New helper method. (gfc_resolve_mvbits): Put dummy formal arglist on resolved_sym. * resolve.c (resolve_call): Initialize resolved_isym to NULL. * trans-array.c (gfc_trans_allocate_array_storage): New argument `initial' to allow initializing the allocated storage to some initial value copied from another array. (gfc_trans_create_temp_array): Allow initialization of the temporary with a copy of some other array by using the new extension. (gfc_trans_array_constructor): Pass NULL_TREE for initial argument. (gfc_conv_loop_setup): Ditto. * trans-intrinsic.c (gfc_conv_intrinsic_array_transfer): Ditto. * trans-expr.c (gfc_conv_function_call): Ditto. (gfc_build_memcpy_call): Made public. * trans-stmt.c (gfc_conv_elemental_dependencies): Initialize created temporary for INTENT(INOUT) arguments to the value of the mirrored array and clean up the temporary as very last intructions in the created block. * trans.c (gfc_trans_code): For EXEC_CALL, see if we have a MVBITS call and enable elemental dependency checking if we have. 2008-11-01 Daniel Kraft <d@domob.eu> PR fortran/35681 * gfortran.dg/mvbits_4.f90: New test. From-SVN: r141516
2008-10-02re PR fortran/37635 (Fortran 2008: Support LEADZ / TRAILZ)Steven Bosscher1-0/+143
testsuite * gfortran.fortran-torture/execute/intrinsic_leadz.f90: New test. * gfortran.fortran-torture/execute/intrinsic_trailz.f90: New test. fortran/ PR fortran/37635 * intrinsic.c (add_functions): Add LEADZ and TRAILZ as generics. * intrinsic.h (gfc_simplify_leadz, gfc_simplify_trailz): New protos. * gfortran.h <enum gfc_isym_id>: (GFC_ISYM_LEADZ, GFC_ISYM_TRAILZ): New. * f95-lang (gfc_init_builtin_functions): Add BUILT_IN_CLZ, BUILT_IN_CLZL, BUILT_IN_CLZLL, BUILT_IN_CTZ, BUILT_IN_CTZL, and BUILT_IN_CTZLL. * trans-intrinsic.c (gfc_conv_intrinsic_leadz, gfc_conv_intrinsic_trails): New code-generation functions for LEADZ and TRAILZ intrinsics. (gfc_conv_intrinsic_function): Use them * intrinsic.texi: Add documentation for LEADZ and TRAILZ. * simplify.c (gfc_simplify_leadz, gfc_simplify_trailz): New functions. From-SVN: r140837
2008-09-12tree-vrp.c (simplify_truth_ops_using_ranges): Fix types.Richard Guenther1-1/+1
2008-09-12 Richard Guenther <rguenther@suse.de> * tree-vrp.c (simplify_truth_ops_using_ranges): Fix types. fortran/ * trans-intrinsic.c (gfc_conv_intrinsic_transfer): Use build_fold_addr_expr to properly mark the argument addressable. From-SVN: r140313
2008-09-04trans-array.c (gfc_conv_array_parameter): Use correct types in building ↵Richard Guenther1-1/+2
COND_EXPRs. 2008-09-04 Richard Guenther <rguenther@suse.de> * trans-array.c (gfc_conv_array_parameter): Use correct types in building COND_EXPRs. * trans-expr.c (gfc_conv_missing_dummy): Likewise. * trans-intrinsics.c (gfc_conv_intrinsic_merge): Likewise. * gfortran.dg/internal_pack_4.f90: Adjust pattern. From-SVN: r140001
2008-08-28gfortran.h (enum expr_t): New value `EXPR_COMPCALL'.Daniel Kraft1-0/+1
2008-08-28 Daniel Kraft <d@domob.eu> * gfortran.h (enum expr_t): New value `EXPR_COMPCALL'. (gfc_get_typebound_proc): New macro. (struct gfc_expr): New union-member `compcall' for EXPR_COMPCALL. (enum gfc_exec_op): New value `EXEC_COMPCALL'. (gfc_find_typebound_proc): New argument. (gfc_copy_ref), (gfc_match_varspec): Made public. * decl.c (match_procedure_in_type): Use gfc_get_typebound_proc. * expr.c (free_expr0), (gfc_copy_expr): Handle EXPR_COMPCALL. (gfc_copy_ref): Made public and use new name. (simplify_const_ref): Use new name of gfc_copy_ref. (simplify_parameter_variable): Ditto. (gfc_simplify_expr): gcc_unreachable for EXPR_COMPCALL. * match.c (match_typebound_call): New method. (gfc_match_call): Allow for CALL's to typebound procedures. * module.c (binding_passing), (binding_overriding): New variables. (expr_types): Add EXPR_COMPCALL. (mio_expr): gcc_unreachable for EXPR_COMPCALL. (mio_typebound_proc), (mio_typebound_symtree): New methods. (mio_f2k_derived): Handle type-bound procedures. * primary.c (gfc_match_varspec): Made public and parse trailing references to type-bound procedures; new argument `sub_flag'. (gfc_match_rvalue): New name and argument of gfc_match_varspec. (match_variable): Ditto. * resolve.c (update_arglist_pass): New method. (update_compcall_arglist), (resolve_typebound_static): New methods. (resolve_typebound_call), (resolve_compcall): New methods. (gfc_resolve_expr): Handle EXPR_COMPCALL. (resolve_code): Handle EXEC_COMPCALL. (resolve_fl_derived): New argument to gfc_find_typebound_proc. (resolve_typebound_procedure): Ditto and removed not-implemented error. * st.c (gfc_free_statement): Handle EXEC_COMPCALL. * symbol.c (gfc_find_typebound_proc): New argument `noaccess' and implement access-checking. * trans-expr.c (gfc_apply_interface_mapping_to_expr): gcc_unreachable on EXPR_COMPCALL. * trans-intrinsic.c (gfc_conv_intrinsic_bound): Add missing break. * trans-openmp.c (gfc_trans_omp_array_reduction): Add missing intialization of ref->type. 2008-08-28 Daniel Kraft <d@domob.eu> * gfortran.dg/typebound_call_1.f03: New test. * gfortran.dg/typebound_call_2.f03: New test. * gfortran.dg/typebound_call_3.f03: New test. * gfortran.dg/typebound_call_4.f03: New test. * gfortran.dg/typebound_call_5.f03: New test. * gfortran.dg/typebound_call_6.f03: New test. * gfortran.dg/typebound_proc_1.f08: Don't expect not-implemented error. * gfortran.dg/typebound_proc_2.f90: Ditto. * gfortran.dg/typebound_proc_5.f03: Ditto. * gfortran.dg/typebound_proc_6.f03: Ditto. * gfortran.dg/typebound_proc_7.f03: Ditto. * gfortran.dg/typebound_proc_8.f03: Ditto. From-SVN: r139724
2008-07-29re PR fortran/36403 (Some fortran tests using eoshift fail on SH)Daniel Kraft1-1/+82
2008-07-29 Daniel Kraft <d@domob.eu> PR fortran/36403 * trans-intrinsic.c (conv_generic_with_optional_char_arg): New method to append a string-length even if the string argument is missing, e.g. for EOSHIFT. (gfc_conv_intrinsic_function): Call the new method for EOSHIFT, PACK and RESHAPE. 2008-07-29 Daniel Kraft <d@domob.eu> PR fortran/36403 * gfortran.dg/char_eoshift_5.f90: New test. * gfortran.dg/intrinsic_optional_char_arg_1.f90: New test. From-SVN: r138234
2008-07-28backport: ChangeLog.tuples: ChangeLog from gimple-tuples-branch.Richard Biener1-35/+35
2008-07-28 Richard Guenther <rguenther@suse.de> Merge from gimple-tuples-branch. * ChangeLog.tuples: ChangeLog from gimple-tuples-branch. * gimple.def: New file. * gsstruct.def: Likewise. * gimple-iterator.c: Likewise. * gimple-pretty-print.c: Likewise. * tree-gimple.c: Removed. Merged into ... * gimple.c: ... here. New file. * tree-gimple.h: Removed. Merged into ... * gimple.h: ... here. New file. * Makefile.in: Add dependencies on GIMPLE_H and tree-iterator.h. * configure.ac: Added support for ENABLE_GIMPLE_CHECKING and the --enable-checking=gimple flag. * config.in: Likewise. * configure: Regenerated. * tree-ssa-operands.h: Tuplified. * tree-vrp.c: Likewise. * tree-loop-linear.c: Likewise. * tree-into-ssa.c: Likewise. * tree-ssa-loop-im.c: Likewise. * tree-dump.c: Likewise. * tree-complex.c: Likewise. * cgraphbuild.c: Likewise. * tree-ssa-threadupdate.c: Likewise. * tree-ssa-loop-niter.c: Likewise. * tree-pretty-print.c: Likewise. * tracer.c: Likewise. * gengtype.c: Likewise. * tree-loop-distribution.c: Likewise. * tree-ssa-loop-unswitch.c: Likewise. * cgraph.c: Likewise. * cgraph.h: Likewise. * tree-ssa-loop-manip.c: Likewise. * value-prof.c: Likewise. * tree-ssa-loop-ch.c: Likewise. * tree-tailcall.c: Likewise. * value-prof.h: Likewise. * tree.c: Likewise. * tree.h: Likewise. * tree-pass.h: Likewise. * ipa-cp.c: Likewise. * tree-scalar-evolution.c: Likewise. * tree-scalar-evolution.h: Likewise. * target.h: Likewise. * lambda-mat.c: Likewise. * tree-phinodes.c: Likewise. * diagnostic.h: Likewise. * builtins.c: Likewise. * tree-ssa-alias-warnings.c: Likewise. * cfghooks.c: Likewise. * fold-const.c: Likewise. * cfghooks.h: Likewise. * omp-low.c: Likewise. * tree-ssa-dse.c: Likewise. * ipa-reference.c: Likewise. * tree-ssa-uncprop.c: Likewise. * toplev.c: Likewise. * tree-gimple.c: Likewise. * tree-gimple.h: Likewise. * tree-chrec.c: Likewise. * tree-chrec.h: Likewise. * tree-ssa-sccvn.c: Likewise. * tree-ssa-sccvn.h: Likewise. * cgraphunit.c: Likewise. * tree-ssa-copyrename.c: Likewise. * tree-ssa-ccp.c: Likewise. * tree-ssa-loop-ivopts.c: Likewise. * tree-nomudflap.c: Likewise. * tree-call-cdce.c: Likewise. * ipa-pure-const.c: Likewise. * c-format.c: Likewise. * tree-stdarg.c: Likewise. * tree-ssa-math-opts.c: Likewise. * tree-ssa-dom.c: Likewise. * tree-nrv.c: Likewise. * tree-ssa-propagate.c: Likewise. * ipa-utils.c: Likewise. * tree-ssa-propagate.h: Likewise. * tree-ssa-alias.c: Likewise. * gimple-low.c: Likewise. * tree-ssa-sink.c: Likewise. * ipa-inline.c: Likewise. * c-semantics.c: Likewise. * dwarf2out.c: Likewise. * expr.c: Likewise. * tree-ssa-loop-ivcanon.c: Likewise. * predict.c: Likewise. * tree-ssa-loop.c: Likewise. * tree-parloops.c: Likewise. * tree-ssa-address.c: Likewise. * tree-ssa-ifcombine.c: Likewise. * matrix-reorg.c: Likewise. * c-decl.c: Likewise. * tree-eh.c: Likewise. * c-pretty-print.c: Likewise. * lambda-trans.c: Likewise. * function.c: Likewise. * langhooks.c: Likewise. * ebitmap.h: Likewise. * tree-vectorizer.c: Likewise. * function.h: Likewise. * langhooks.h: Likewise. * tree-vectorizer.h: Likewise. * ipa-type-escape.c: Likewise. * ipa-type-escape.h: Likewise. * domwalk.c: Likewise. * tree-if-conv.c: Likewise. * profile.c: Likewise. * domwalk.h: Likewise. * tree-data-ref.c: Likewise. * tree-data-ref.h: Likewise. * tree-flow-inline.h: Likewise. * tree-affine.c: Likewise. * tree-vect-analyze.c: Likewise. * c-typeck.c: Likewise. * gimplify.c: Likewise. * coretypes.h: Likewise. * tree-ssa-phiopt.c: Likewise. * calls.c: Likewise. * tree-ssa-coalesce.c: Likewise. * tree.def: Likewise. * tree-dfa.c: Likewise. * except.c: Likewise. * except.h: Likewise. * cfgexpand.c: Likewise. * tree-cfgcleanup.c: Likewise. * tree-ssa-pre.c: Likewise. * tree-ssa-live.c: Likewise. * tree-sra.c: Likewise. * tree-ssa-live.h: Likewise. * tree-predcom.c: Likewise. * lambda.h: Likewise. * tree-mudflap.c: Likewise. * ipa-prop.c: Likewise. * print-tree.c: Likewise. * tree-ssa-copy.c: Likewise. * ipa-prop.h: Likewise. * tree-ssa-forwprop.c: Likewise. * ggc-page.c: Likewise. * c-omp.c: Likewise. * tree-ssa-dce.c: Likewise. * tree-vect-patterns.c: Likewise. * tree-ssa-ter.c: Likewise. * tree-nested.c: Likewise. * tree-ssa.c: Likewise. * lambda-code.c: Likewise. * tree-ssa-loop-prefetch.c: Likewise. * tree-inline.c: Likewise. * tree-inline.h: Likewise. * tree-iterator.c: Likewise. * tree-optimize.c: Likewise. * tree-ssa-phiprop.c: Likewise. * tree-vect-transform.c: Likewise. * tree-object-size.c: Likewise. * tree-outof-ssa.c: Likewise. * cfgloop.c: Likewise. * system.h: Likewise. * tree-profile.c: Likewise. * cfgloop.h: Likewise. * c-gimplify.c: Likewise. * c-common.c: Likewise. * tree-vect-generic.c: Likewise. * tree-flow.h: Likewise. * c-common.h: Likewise. * basic-block.h: Likewise. * tree-ssa-structalias.c: Likewise. * tree-switch-conversion.c: Likewise. * tree-ssa-structalias.h: Likewise. * tree-cfg.c: Likewise. * passes.c: Likewise. * ipa-struct-reorg.c: Likewise. * ipa-struct-reorg.h: Likewise. * tree-ssa-reassoc.c: Likewise. * cfgrtl.c: Likewise. * varpool.c: Likewise. * stmt.c: Likewise. * tree-ssanames.c: Likewise. * tree-ssa-threadedge.c: Likewise. * langhooks-def.h: Likewise. * tree-ssa-operands.c: Likewise. * config/alpha/alpha.c: Likewise. * config/frv/frv.c: Likewise. * config/s390/s390.c: Likewise. * config/m32c/m32c.c: Likewise. * config/m32c/m32c-protos.h: Likewise. * config/spu/spu.c: Likewise. * config/sparc/sparc.c: Likewise. * config/i386/i386.c: Likewise. * config/sh/sh.c: Likewise. * config/xtensa/xtensa.c: Likewise. * config/stormy16/stormy16.c: Likewise. * config/ia64/ia64.c: Likewise. * config/rs6000/rs6000.c: Likewise. * config/pa/pa.c: Likewise. * config/mips/mips.c: Likewise. From-SVN: r138207
2008-07-27re PR fortran/36132 (_gfortran_internal_pack on optional arguments)Tobias Burnus1-5/+6
2008-07-27 Tobias Burnus <burnus@net-b.de> PR fortran/36132 PR fortran/29952 PR fortran/36909 * trans.c (gfc_trans_runtime_check): Allow run-time warning * besides run-time error. * trans.h (gfc_trans_runtime_check): Update declaration. * trans-array.c * (gfc_trans_array_ctor_element,gfc_trans_array_bound_check, gfc_conv_array_ref,gfc_conv_ss_startstride,gfc_trans_dummy_array_bias): Updated gfc_trans_runtime_check calls. (gfc_conv_array_parameter): Implement flag_check_array_temporaries, fix packing/unpacking for nonpresent optional actuals to optional formals. * trans-array.h (gfc_conv_array_parameter): Update declaration. * trans-expr.c (gfc_conv_substring,gfc_trans_arrayfunc_assign, gfc_conv_function_call): Updated gfc_trans_runtime_check calls. (gfc_conv_function_call): Update gfc_conv_array_parameter calls. * trans-expr.c (gfc_trans_goto): Updated gfc_trans_runtime_check calls. * trans-io.c (set_string,gfc_conv_intrinsic_repeat): Ditto. (gfc_conv_intrinsic_transfer,gfc_conv_intrinsic_loc): Same for gfc_conv_array_parameter. * trans-intrinsics.c (gfc_conv_intrinsic_bound): Ditto. * trans-decl.c (gfc_build_builtin_function_decls): Add gfor_fndecl_runtime_warning_at. * lang.opt: New option fcheck-array-temporaries. * gfortran.h (gfc_options): New flag_check_array_temporaries. * options.c (gfc_init_options, gfc_handle_option): Handle flag. * invoke.texi: New option fcheck-array-temporaries. 2008-07-27 Tobias Burnus <burnus@net-b.de> PR fortran/36132 PR fortran/29952 PR fortran/36909 * runtime/error.c: New function runtime_error_at. * gfortran.map: Ditto. * libgfortran.h: Ditto. 2008-07-27 Tobias Burnus <burnus@net-b.de> PR fortran/36132 PR fortran/29952 PR fortran/36909 gfortran.dg/internal_pack_4.f90: New. gfortran.dg/internal_pack_5.f90: New. gfortran.dg/array_temporaries_2.f90: New. From-SVN: r138186
2008-07-24re PR fortran/29952 (Flag to give runtime information " array temporary was ↵Thomas Koenig1-7/+12
created for argument") 2008-07-24 Thomas Koenig <tkoenig@gcc.gnu.org> PR fortran/29952 * gfortran.h: Add "warn_array_temp" to gfc_option_t. * lang.opt: Add -Warray-temporaries. * invoke.texi: Document -Warray-temporaries * trans-array.h (gfc_trans_create_temp_array): Add argument of type *locus. (gfc_conv_loop_setup): Likewise. * trans-array.c (gfc_trans_create_temp_array): If -Warray-temporaries is given and locus is present, warn about creation of array temporaries. (gfc_trans_array_constructor_subarray): Add locus to call of gfc_conv_loop_setup. (gfc_trans_array_constructor): Add where argument. Pass where argument to call of gfc_trans_create_temp_array. (gfc_add_loop_ss_code): Add where argument. Pass where argument to recursive call of gfc_add_loop_ss_code and to call of gfc_trans_array_constructor. (gfc_conv_loop_setup): Add where argument. Pass where argument to calls to gfc_add_loop_ss_code and to gfc_trans_create_temp_array. (gfc_conv_expr_descriptor): Pass location to call of gfc_conv_loop_setup. (gfc_conv_array_parameter): If -Warray-temporaries is given, warn about creation of temporary arrays. * trans-expr.c (gfc_conv_subref_array_arg): Add where argument to call to gfc_conv_loop_setup. (gfc_conv_function_call): Add where argument to call to gfc_trans_creat_temp_array. (gfc_trans_subarray_assign): Likewise. (gfc_trans_assignment_1): Add where argument to call to gfc_conv_loop_setup. * trans-stmt.c (gfc_conv_elemental_dependencies): Add where argument to call to gfc_trans_create_temp_array. (gfc_trans_call): Add where argument to call to gfc_conv_loop_setup. (generate_loop_for_temp_to_lhs): Likewise. (generate_loop_for_rhs_to_temp): Likewise. (compute_inner_temp_size): Likewise. (gfc_trans-pointer_assign_need_temp): Likewise. (gfc_evaluate_where_mask): Likewise. (gfc_trans_where_assign): Likewise. (gfc_trans_where_3): Likewise. * trans-io.c (transfer_srray_component): Add where argument to function. Add where argument to call to gfc_conv_loop_setup. (transfer_expr): Add where argument to call to transfer_array_component. (gfc_trans_transfer): Add where expression to call to gfc_conv_loop_setup. * trans-intrinsic.c (gfc_conv_intrinsic_anyall): Add where argument to call to gfc_conv_loop_setup. (gfc_conv_intrinsic_count): Likewise. (gfc_conv_intrinsic_arith): Likewise. (gfc_conv_intrinsic_dot_product): Likewise. (gfc_conv_intrinsic_minmaxloc): Likewise. (gfc_conv_intrinsic_minmaxval): Likewise. (gfc_conv_intrinsic_array_transfer): Warn about creation of temporary array. Add where argument to call to gfc_trans_create_temp_array. * options.c (gfc_init_options): Initialize gfc_option.warn_array_temp. (gfc_handle_option): Set gfc_option.warn_array_temp. 2008-07-24 Thomas Koenig <tkoenig@gcc.gnu.org> PR fortran/29952 * gfortran.dg/array_temporaries_1.f90: New test case. From-SVN: r138112
2008-07-21fmt_g0_3.f08: Fix typo in expected error message.Ralf Wildenhues1-2/+2
gcc/testsuite/ * gfortran.dg/fmt_g0_3.f08: Fix typo in expected error message. gcc/fortran/ * expr.c (gfc_check_pointer_assign): Fix typo in string. * io.c (check_format): Fix typo in string. Fix comment typos. * parse.c (gfc_global_used): Likewise. * resolve.c (resolve_allocate_expr): Likewise. * symbol.c (gfc_set_default_type): Likewise. * arith.c: Fix typos in comments. * array.c: Likewise. * data.c: Likewise. * decl.c: Likewise. * dependency.c: Likewise. * f95-lang.c: Likewise. * gfortran.h: Likewise. * matchexp.c: Likewise. * module.c: Likewise. * primary.c: Likewise. * scanner.c: Likewise. * trans-array.c: Likewise. * trans-common.c: Likewise. * trans-decl.c: Likewise. * trans-expr.c: Likewise. * trans-intrinsic.c: Likewise. * trans-types.c: Likewise. * trans.c: Likewise. * trans.h: Likewise. From-SVN: r138040
2008-06-20arith.c (hollerith2representation): Fix for -Wc++-compat.Kaveh R. Ghazi1-13/+13
* arith.c (hollerith2representation): Fix for -Wc++-compat. * array.c (gfc_get_constructor): Likewise. * decl.c (gfc_get_data_variable, gfc_get_data_value, gfc_get_data, create_enum_history, gfc_match_final_decl): Likewise. * error.c (error_char): Likewise. * expr.c (gfc_get_expr, gfc_copy_expr): Likewise. * gfortran.h (gfc_get_charlen, gfc_get_array_spec, gfc_get_component, gfc_get_formal_arglist, gfc_get_actual_arglist, gfc_get_namelist, gfc_get_omp_clauses, gfc_get_interface, gfc_get_common_head, gfc_get_dt_list, gfc_get_array_ref, gfc_get_ref, gfc_get_equiv, gfc_get_case, gfc_get_iterator, gfc_get_alloc, gfc_get_wide_string): Likewise. * interface.c (count_types_test): Likewise. * intrinsic.c (add_char_conversions, gfc_intrinsic_init_1): Likewise. * io.c (gfc_match_open, gfc_match_close, match_filepos, match_io, gfc_match_inquire, gfc_match_wait): Likewise. * match.c (gfc_match, match_forall_iterator): Likewise. * module.c (gfc_get_pointer_info, gfc_get_use_rename, add_fixup, add_true_name, parse_string, write_atom, quote_string, mio_symtree_ref, mio_gmp_real, write_common_0): Likewise. * options.c (gfc_post_options): Likewise. * primary.c (match_integer_constant, match_hollerith_constant, match_boz_constant, match_real_constant, gfc_get_structure_ctor_component, gfc_match_structure_constructor): Likewise. * scanner.c (gfc_widechar_to_char, add_path_to_list, add_file_change, load_line, get_file, preprocessor_line, load_file, unescape_filename, gfc_read_orig_filename): Likewise. * simplify.c (gfc_simplify_ibits, gfc_simplify_ishft, gfc_simplify_ishftc): Likewise. * symbol.c (gfc_get_st_label, gfc_get_namespace, gfc_new_symtree, gfc_get_uop, gfc_new_symbol, save_symbol_data, gfc_get_gsymbol): Likewise. * target-memory.c (gfc_target_interpret_expr): Likewise. * trans-const.c (gfc_build_wide_string_const): Likewise. * trans-expr.c (gfc_add_interface_mapping): Likewise. * trans-intrinsic.c (gfc_conv_intrinsic_conversion, gfc_conv_intrinsic_int, gfc_conv_intrinsic_lib_function, gfc_conv_intrinsic_cmplx, gfc_conv_intrinsic_ctime, gfc_conv_intrinsic_fdate, gfc_conv_intrinsic_ttynam, gfc_conv_intrinsic_minmax, gfc_conv_intrinsic_minmax_char, gfc_conv_intrinsic_ishftc, gfc_conv_intrinsic_index_scan_verify, gfc_conv_intrinsic_merge, gfc_conv_intrinsic_trim): Likewise. * trans.c (gfc_get_backend_locus): Likewise. * trans.h (gfc_get_ss): Likewise. From-SVN: r136982
2008-06-12re PR fortran/36462 ([F03] Audit intrinsics for KIND arguments)Tobias Burnus1-3/+9
2008-06-12 Tobias Burnus <burnus@net-b.de> PR fortran/36462 * trans-intrinsic.c (gfc_conv_intrinsic_index_scan_verify): Fix passing of the BACK= argument. 2008-06-12 Tobias Burnus <burnus@net-b.de> PR fortran/36462 * gfortran.dg/index_2.f90: New. From-SVN: r136712
2008-06-07re PR fortran/36437 (Simplify argument to [c_]sizeof)Tobias Burnus1-7/+5
2008-06-04 Tobias Burnus <burnus@net-b.de> PR fortran/36437 * intrinsic.c (add_functions): Implement c_sizeof. * trans-intrinsic.c (gfc_conv_intrinsic_sizeof): Do not create unneeded variable in the scalar case. 2008-06-04 Tobias Burnus <burnus@net-b.de> PR fortran/36437 * gfortran.dg/c_sizeof_1.f90: New. * gfortran.dg/c_sizeof_2.f90: New. From-SVN: r136536
2008-05-28re PR fortran/36319 (Segfault with wide characters in DATA)Francois-Xavier Coudert1-29/+36
PR fortran/36319 * intrinsic.c (gfc_convert_chartype): Don't mark conversion function as pure. * trans-array.c (gfc_trans_array_ctor_element): Divide element size by the size of one character to obtain length. * iresolve.c (gfc_resolve_cshift): Call the _char4 variant when appropriate. (gfc_resolve_eoshift): Likewise. * trans-intrinsic.c (gfc_conv_intrinsic_ctime): Minor beautification. (gfc_conv_intrinsic_fdate): Minor beautification. (gfc_conv_intrinsic_ttynam): Minor beautification. (gfc_conv_intrinsic_minmax_char): Allow all character kinds. (size_of_string_in_bytes): New function. (gfc_conv_intrinsic_size): Call size_of_string_in_bytes for character expressions. (gfc_conv_intrinsic_sizeof): Likewise. (gfc_conv_intrinsic_array_transfer): Likewise. (gfc_conv_intrinsic_trim): Allow all character kinds. Minor beautification. (gfc_conv_intrinsic_repeat): Fix comment typo. * simplify.c (gfc_convert_char_constant): Take care of conversion of array constructors. * intrinsics/string_intrinsics_inc.c (string_index): Return correct value for zero-length substring. * intrinsics/cshift0.c: Add _char4 variant. * intrinsics/eoshift0.c (eoshift0): Allow filler to be a pattern wider than a single byte. Add _char4 variant and use above functionality. * intrinsics/eoshift2.c (eoshift2): Likewise. * m4/eoshift1.m4: Likewise. * m4/eoshift3.m4: Likewise. * m4/cshift1.m4: Add _char4 variants. * gfortran.map (GFORTRAN_1.1): Add _gfortran_cshift0_1_char4, _gfortran_cshift0_2_char4, _gfortran_cshift0_4_char4, _gfortran_cshift0_8_char4, _gfortran_cshift1_16_char4, _gfortran_cshift1_4_char4, _gfortran_cshift1_8_char4, _gfortran_eoshift0_1_char4, _gfortran_eoshift0_2_char4, _gfortran_eoshift0_4_char4, _gfortran_eoshift0_8_char4, _gfortran_eoshift1_16_char4, _gfortran_eoshift1_4_char4, _gfortran_eoshift1_8_char4, _gfortran_eoshift2_1_char4, _gfortran_eoshift2_2_char4, _gfortran_eoshift2_4_char4, _gfortran_eoshift2_8_char4, _gfortran_eoshift3_16_char4, _gfortran_eoshift3_4_char4 and _gfortran_eoshift3_8_char4. * generated/eoshift3_4.c: Regenerate. * generated/eoshift1_8.c: Regenerate. * generated/eoshift1_16.c: Regenerate. * generated/cshift1_4.c: Regenerate. * generated/eoshift1_4.c: Regenerate. * generated/eoshift3_8.c: Regenerate. * generated/eoshift3_16.c: Regenerate. * generated/cshift1_8.c: Regenerate. * generated/cshift1_16.c: Regenerate. * gfortran.dg/widechar_5.f90: New file. * gfortran.dg/widechar_6.f90: New file. * gfortran.dg/widechar_7.f90: New file. * gfortran.dg/widechar_intrinsics_5.f90: Uncomment the lines testing the SPREAD intrinsic. * gfortran.dg/widechar_intrinsics_6.f90: New file. * gfortran.dg/widechar_intrinsics_7.f90: New file. * gfortran.dg/widechar_intrinsics_8.f90: New file. * gfortran.dg/widechar_intrinsics_9.f90: New file. * gfortran.dg/widechar_intrinsics_10.f90: New file. From-SVN: r136129
2008-05-18intrinsic.c (char_conversions, ncharconv): New static variables.Francois-Xavier Coudert1-13/+52
* intrinsic.c (char_conversions, ncharconv): New static variables. (find_char_conv): New function. (add_functions): Add simplification functions for ADJUSTL and ADJUSTR. Don't check the kind of their argument. Add checking for LGE, LLE, LGT and LLT. (add_subroutines): Fix argument type for SLEEP. Fix argument name for SYSTEM. (add_char_conversions): New function. (gfc_intrinsic_init_1): Call add_char_conversions. (gfc_intrinsic_done_1): Free char_conversions. (check_arglist): Use kind == 0 as a signal that we don't want the kind value to be checked. (do_simplify): Also simplify character functions. (gfc_convert_chartype): New function * trans-array.c (gfc_trans_array_ctor_element): Don't force the use of default character type. (gfc_trans_array_constructor_value): Likewise. (get_array_ctor_var_strlen): Use integer kind to build an integer instead of a character kind! (gfc_build_constant_array_constructor): Don't force the use of default character type. (gfc_conv_loop_setup): Likewise. * trans-expr.c (gfc_conv_string_tmp): Don't force the use of default character type. Allocate enough memory for wide strings. (gfc_conv_concat_op): Make sure operand kind are the same. (string_to_single_character): Remove gfc_ prefix. Reindent. Don't force the use of default character type. (gfc_conv_scalar_char_value): Likewise. (gfc_build_compare_string): Call string_to_single_character. (fill_with_spaces): New function (gfc_trans_string_copy): Add kind arguments. Use them to deal with wide character kinds. (gfc_conv_statement_function): Whitespace fix. Call gfc_trans_string_copy with new kind arguments. (gfc_conv_substring_expr): Call gfc_build_wide_string_const instead of using gfc_widechar_to_char. (gfc_conv_string_parameter): Don't force the use of default character type. (gfc_trans_scalar_assign): Pass kind args to gfc_trans_string_copy. * intrinsic.h (gfc_check_lge_lgt_lle_llt, gfc_convert_char_constant, gfc_resolve_adjustl, gfc_resolve_adjustr): New prototypes. * decl.c (gfc_set_constant_character_len): Don't assert the existence of a single character kind. * trans-array.h (gfc_trans_string_copy): New prototype. * gfortran.h (gfc_check_character_range, gfc_convert_chartype): New prototypes. * error.c (print_wide_char_into_buffer): New function lifting code from gfc_print_wide_char. Fix order to output '\x??' instead of 'x\??'. (gfc_print_wide_char): Call print_wide_char_into_buffer. (show_locus): Call print_wide_char_into_buffer with buffer local to this function. * trans-const.c (gfc_build_wide_string_const): New function. (gfc_conv_string_init): Deal with wide characters strings constructors. (gfc_conv_constant_to_tree): Call gfc_build_wide_string_const. * trans-stmt.c (gfc_trans_label_assign): Likewise. (gfc_trans_character_select): Deal with wide strings. * expr.c (gfc_check_assign): Allow conversion between character kinds on assignment. * trans-const.h (gfc_build_wide_string_const): New prototype. * trans-types.c (gfc_get_character_type_len_for_eltype, gfc_get_character_type_len): Create too variants of the old gfc_get_character_type_len, one getting kind argument and the other one directly taking a type tree. * trans.h (gfor_fndecl_select_string_char4, gfor_fndecl_convert_char1_to_char4, gfor_fndecl_convert_char4_to_char1): New prototypes. * trans-types.h (gfc_get_character_type_len_for_eltype): New prototype. * resolve.c (resolve_operator): Exit early when kind mismatches are detected, because that makes us issue an error message later. (validate_case_label_expr): Fix wording of error message. * iresolve.c (gfc_resolve_adjustl, gfc_resolve_adjustr): New functions. (gfc_resolve_pack): Call _char4 variants of library function when dealing with wide characters. (gfc_resolve_reshape): Likewise. (gfc_resolve_spread): Likewise. (gfc_resolve_transpose): Likewise. (gfc_resolve_unpack): Likewise. * target-memory.c (size_character): Take character kind bit size correctly into account (not that it changes anything for now, but it's more generic). (gfc_encode_character): Added gfc_ prefix. Encoding each character of a string by calling native_encode_expr for the corresponding unsigned integer. (gfc_target_encode_expr): Add gfc_ prefix to encode_character. * trans-decl.c (gfc_build_intrinsic_function_decls): Build gfor_fndecl_select_string_char4, gfor_fndecl_convert_char1_to_char4 and gfor_fndecl_convert_char4_to_char1. * target-memory.h (gfc_encode_character): New prototype. * arith.c (gfc_check_character_range): New function. (eval_intrinsic): Allow non-default character kinds. * check.c (gfc_check_access_func): Only allow default character kind arguments. (gfc_check_chdir): Likewise. (gfc_check_chdir_sub): Likewise. (gfc_check_chmod): Likewise. (gfc_check_chmod_sub): Likewise. (gfc_check_lge_lgt_lle_llt): New function. (gfc_check_link): Likewise. (gfc_check_link_sub): Likewise. (gfc_check_symlnk): Likewise. (gfc_check_symlnk_sub): Likewise. (gfc_check_rename): Likewise. (gfc_check_rename_sub): Likewise. (gfc_check_fgetputc_sub): Likewise. (gfc_check_fgetput_sub): Likewise. (gfc_check_stat): Likewise. (gfc_check_stat_sub): Likewise. (gfc_check_date_and_time): Likewise. (gfc_check_ctime_sub): Likewise. (gfc_check_fdate_sub): Likewise. (gfc_check_gerror): Likewise. (gfc_check_getcwd_sub): Likewise. (gfc_check_getarg): Likewise. (gfc_check_getlog): Likewise. (gfc_check_hostnm): Likewise. (gfc_check_hostnm_sub): Likewise. (gfc_check_ttynam_sub): Likewise. (gfc_check_perror): Likewise. (gfc_check_unlink): Likewise. (gfc_check_unlink_sub): Likewise. (gfc_check_system_sub): Likewise. * primary.c (got_delim): Perform correct character range checking for all kinds. * trans-intrinsic.c (gfc_conv_intrinsic_conversion): Generate calls to library functions convert_char4_to_char1 and convert_char1_to_char4 for character conversions. (gfc_conv_intrinsic_char): Allow all character kings. (gfc_conv_intrinsic_strcmp): Fix whitespace. (gfc_conv_intrinsic_repeat): Take care of all character kinds. * intrinsic.texi: For all GNU intrinsics accepting character arguments, mention that they're restricted to the default kind. * simplify.c (simplify_achar_char): New function. (gfc_simplify_achar, gfc_simplify_char): Call simplify_achar_char. gfc_simplify_ichar): Don't error out for wide characters. (gfc_convert_char_constant): New function. * gfortran.dg/achar_3.f90: Adjust error messages. * gfortran.dg/achar_5.f90: New test. * gfortran.dg/achar_6.F90: New test. * gfortran.dg/widechar_1.f90: New test. * gfortran.dg/widechar_2.f90: New test. * gfortran.dg/widechar_3.f90: New test. * gfortran.dg/widechar_4.f90: New test. * gfortran.dg/widechar_intrinsics_1.f90: New test. * gfortran.dg/widechar_intrinsics_2.f90: New test. * gfortran.dg/widechar_intrinsics_3.f90: New test. * gfortran.dg/widechar_intrinsics_4.f90: New test. * gfortran.dg/widechar_intrinsics_5.f90: New test. * gfortran.dg/widechar_select_1.f90: New test. * gfortran.dg/widechar_select_2.f90: New test. From-SVN: r135515
2008-05-15trans-expr.c (gfc_conv_concat_op): Take care of nondefault character kinds.Francois-Xavier Coudert1-20/+84
* trans-expr.c (gfc_conv_concat_op): Take care of nondefault character kinds. (gfc_build_compare_string): Add kind argument and use it. (gfc_conv_statement_function): Fix indentation. * gfortran.h (gfc_character_info): New structure. (gfc_character_kinds): New array. * trans-types.c (gfc_character_kinds, gfc_character_types, gfc_pcharacter_types): New array. (gfc_init_kinds): Fill character kinds array. (validate_character): Take care of nondefault character kinds. (gfc_build_uint_type): New function. (gfc_init_types): Take care of nondefault character kinds. (gfc_get_char_type, gfc_get_pchar_type): New functions. (gfc_get_character_type_len): Use gfc_get_char_type. * trans.h (gfc_build_compare_string): Adjust prototype. (gfor_fndecl_compare_string_char4, gfor_fndecl_concat_string_char4, gfor_fndecl_string_len_trim_char4, gfor_fndecl_string_index_char4, gfor_fndecl_string_scan_char4, gfor_fndecl_string_verify_char4, gfor_fndecl_string_trim_char4, gfor_fndecl_string_minmax_char4, gfor_fndecl_adjustl_char4, gfor_fndecl_adjustr_char4): New prototypes. * trans-types.h (gfc_get_char_type, gfc_get_pchar_type): New prototypes. * trans-decl.c (gfor_fndecl_compare_string_char4, gfor_fndecl_string_len_trim_char4, gfor_fndecl_string_index_char4, gfor_fndecl_string_scan_char4, gfor_fndecl_string_verify_char4, gfor_fndecl_string_trim_char4, gfor_fndecl_string_minmax_char4, gfor_fndecl_adjustl_char4, gfor_fndecl_adjustr_char4, gfor_fndecl_concat_string_char4): New function decls. (gfc_build_intrinsic_function_decls): Define new *_char4 function decls. * trans-intrinsic.c (gfc_conv_intrinsic_minmax_char, gfc_conv_intrinsic_len_trim, gfc_conv_intrinsic_ichar, gfc_conv_intrinsic_strcmp, gfc_conv_intrinsic_trim, gfc_conv_intrinsic_function): Deal with nondefault character kinds. From-SVN: r135397
2008-05-14re PR fortran/35685 (UBOUND incorrect for run-time zero-sized section)Francois-Xavier Coudert1-0/+2
PR fortran/35685 * trans-intrinsic.c (gfc_conv_intrinsic_bound): Correctly handle zero-size sections. * gfortran.dg/bound_3.f90: New test. From-SVN: r135305
2008-04-30intrinsic.c (add_functions): Add SELECTED_CHAR_KIND intrinsic.François-Xavier Coudert1-0/+17
* intrinsic.c (add_functions): Add SELECTED_CHAR_KIND intrinsic. * intrinsic.h (gfc_check_selected_char_kind, gfc_simplify_selected_char_kind): New prototypes. * gfortran.h (gfc_isym_id): Add GFC_ISYM_SC_KIND. * trans.h (gfor_fndecl_sc_kind): New function decl. * trans-decl.c (gfor_fndecl_sc_kind): Build new decl. * arith.c (gfc_compare_with_Cstring): New function. * arith.h (gfc_compare_with_Cstring): New prototype. * check.c (gfc_check_selected_char_kind): New function. * primary.c (match_string_constant, match_kind_param): Mark symbols used as literal constant kind param as referenced. * trans-intrinsic.c (gfc_conv_intrinsic_sc_kind): New function. (gfc_conv_intrinsic_function): Call gfc_conv_intrinsic_sc_kind. * intrinsic.texi (SELECTED_CHAR_KIND): Document new intrinsic. * simplify.c (gfc_simplify_selected_char_kind): New function. * intrinsics/selected_char_kind.c: New file. * Makefile.am: Add intrinsics/selected_char_kind.c. * Makefile.in: Regenerate. * gfortran.dg/selected_char_kind_1.f90: New test. * gfortran.dg/selected_char_kind_2.f90: New test. * gfortran.dg/selected_char_kind_3.f90: New test. From-SVN: r134839
2008-04-24re PR fortran/35994 (MAXLOC and MINLOC off by one with mask)Jerry DeLisle1-4/+5
2008-04-23 Jerry DeLisle <jvdelisle@gcc.gnu.org> Francois-Xavier Coudert <fxcoudert@gcc.gnu.org> PR fortran/35994 * trans-instrinsic.c (gfc_conv_intrinsic_minmaxloc): Correctly adjust loop counter offset. Co-Authored-By: Francois-Xavier Coudert <fxcoudert@gcc.gnu.org> From-SVN: r134615
2008-04-16re PR fortran/35932 (ICE: CHAR with array arg and also a KIND arg)Paul Thomas1-5/+8
2008-04-16 Paul Thomas <pault@gcc.gnu.org> PR fortran/35932 * trans-intrinsic.c (gfc_conv_intrinsic_char): Even though KIND is not used, the argument must be converted. 2008-04-16 Paul Thomas <pault@gcc.gnu.org> PR fortran/35932 * gfortran.dg/intrinsic_char_1.f90: New test. From-SVN: r134364
2008-03-03re PR fortran/33197 (Fortran 2008: math functions)François-Xavier Coudert1-4/+12
PR fortran/33197 gcc/fortran/ * intrinsic.c (add_functions): Modify intrinsics ACOSH, ASINH, ATANH, ERF, ERFC and GAMMA. Add intrinsics BESSEL_{J,Y}{0,1,N}, ERFC_SCALED, LOG_GAMMA and HYPOT. * intrinsic.h (gfc_check_hypot, gfc_simplify_hypot, gfc_resolve_hypot): New prototypes. * mathbuiltins.def: Add HYPOT builtin. Make complex versions of ACOSH, ASINH and ATANH available. * gfortran.h (GFC_ISYM_ERFC_SCALED, GFC_ISYM_HYPOT): New values. * lang.opt: Add -std=f2008 option. * libgfortran.h: Define GFC_STD_F2008. * lang-specs.h: Add .f08 and .F08 file suffixes. * iresolve.c (gfc_resolve_hypot): New function. * parse.c (parse_contained): Allow empty CONTAINS for Fortran 2008. * check.c (gfc_check_hypot): New function. * trans-intrinsic.c (gfc_intrinsic_map): Define ERFC_SCALE builtin. * options.c (set_default_std_flags): Allow Fortran 2008 by default. (form_from_filename): Add .f08 suffix. (gfc_handle_option): Handle -std=f2008 option. * simplify.c (gfc_simplify_hypot): New function. * gfortran.texi: Document Fortran 2008 status and file extensions. * intrinsic.texi: Document new BESSEL_{J,Y}{0,1,N} intrinsics, as well as HYPOT and ERFC_SCALED. Update documentation of ERF, ERFC, GAMMA, LGAMMA, ASINH, ACOSH and ATANH. * invoke.texi: Document the new -std=f2008 option. libgomp/ * testsuite/libgomp.fortran/fortran.exp: Add .f08 and .F08 file suffixes. gcc/testsuite/ * gfortran.dg/gomp/gomp.exp: Add .f08 and .F08 file suffixes. * gfortran.dg/dg.exp: Likewise. * gfortran.dg/vect/vect.exp: Likewise. * gfortran.fortran-torture/execute/execute.exp: Likewise. * gfortran.fortran-torture/compile/compile.exp: Likewise. * gfortran.dg/gamma_1.f90: Also check log_gamma. * gfortran.dg/invalid_contains_1.f90: Remove warning about empty CONTAINS. * gfortran.dg/gamma_2.f90: Add a few error messages. * gfortran.dg/invalid_contains_2.f90: Remove warning about empty CONTAINS. * gfortran.dg/gamma_3.f90: Adjust error message. * gfortran.dg/gamma_4.f90: Test for log_gamma instead of lgamma. * gfortran.dg/bind_c_usage_9.f03: Adjust error messages. * gfortran.dg/bessel_1.f90: New test. * gfortran.dg/recursive_check_3.f90: Remove warnings. * gfortran.dg/besxy.f90: Also check for new F2008 intrinsics. * gfortran.dg/derived_function_interface_1.f90: Remove warning. * gfortran.dg/contains_empty_1.f03: New test. * gfortran.dg/erfc_scaled_1.f90: New test. * gfortran.dg/hypot_1.f90: New test. * gfortran.dg/contains_empty_2.f03: New test. libgfortran/ * intrinsics/erfc_scaled_inc.c: New file. * intrinsics/erfc_scaled.c: New file. * gfortran.map (GFORTRAN_1.0): Add _gfortran_erfc_scaled_r*. * Makefile.am: Add intrinsics/erfc_scaled.c. * config.h.in: Regenerate. * configure: Regenerate. * Makefile.in: Regenerate. From-SVN: r132846
2008-02-29re PR fortran/35059 (Seg fault when max constructor limit reached)Jerry DeLisle1-0/+2
2008-02-29 Jerry DeLisle <jvdelisle@gcc.gnu.org> PR fortran/35059 * expr.c (find_array_element): Modify traversing the constructor to avoid trying to access NULL memory pointed to by next for the last element. (find_array_section): Exit while loop if cons->next is NULL. * trans-expr.c (gfc_conv_scalar_char_value): Initialize gfc_typespec. (gfc_conv_function_call): Same. * decl.c (gfc_match_implicit): Same. * trans-intrinsic.c (gfc_conv_intrinsic_sr_kind): Same. From-SVN: r132782
2008-02-27re PR fortran/33387 (Fortran front-end should translate intrinsics by ↵Francois-Xavier Coudert1-42/+351
calling C99 function instead of libgfortran functions) PR fortran/33387 * trans.h: Remove prototypes for gfor_fndecl_math_exponent4, gfor_fndecl_math_exponent8, gfor_fndecl_math_exponent10 and gfor_fndecl_math_exponent16. * f95-lang.c (build_builtin_fntypes): Add new function types. (gfc_init_builtin_functions): Add new builtins for nextafter, frexp, ldexp, fabs, scalbn and inf. * iresolve.c (gfc_resolve_rrspacing): Don't add hidden arguments. (gfc_resolve_scale): Don't convert type of second argument. (gfc_resolve_set_exponent): Likewise. (gfc_resolve_size): Don't add hidden arguments. * trans-decl.c: Remove gfor_fndecl_math_exponent4, gfor_fndecl_math_exponent8, gfor_fndecl_math_exponent10 and gfor_fndecl_math_exponent16. * trans-intrinsic.c (gfc_intrinsic_map): Remove intrinsics for scalbn, fraction, nearest, rrspacing, set_exponent and spacing. (gfc_conv_intrinsic_exponent): Directly call frexp. (gfc_conv_intrinsic_fraction, gfc_conv_intrinsic_nearest, gfc_conv_intrinsic_spacing, gfc_conv_intrinsic_rrspacing, gfc_conv_intrinsic_scale, gfc_conv_intrinsic_set_exponent): New functions. (gfc_conv_intrinsic_function): Use the new functions above. From-SVN: r132713
2008-02-24trans-array.c (gfc_conv_descriptor_data_get, [...]): Use fold_buildN instead ↵Tobias Schlüter1-103/+111
of buildN. * trans-array.c (gfc_conv_descriptor_data_get, gfc_conv_descriptor_data_set_internal, gfc_conv_descriptor_data_addr, gfc_conv_descriptor_offset, gfc_conv_descriptor_dtype, gfc_conv_descriptor_dimension, gfc_conv_descriptor_stride, gfc_conv_descriptor_lbound, gfc_conv_descriptor_ubound, gfc_trans_create_temp_array, gfc_conv_array_transpose, gfc_grow_array, gfc_trans_array_constructor_subarray, gfc_trans_array_constructor_value, gfc_trans_scalarized_loop_end, gfc_array_init_size, gfc_array_allocate, gfc_array_deallocate, gfc_conv_array_initializer, gfc_trans_array_bounds, gfc_trans_auto_array_allocation, gfc_trans_dummy_array_bias, gfc_get_dataptr_offset, gfc_conv_array_parameter, gfc_trans_dealloc_allocated, get_full_array_size, gfc_duplicate_allocatable, structure_alloc_comps): Use fold_buildN instead of buildN. * trans-expr.c (gfc_conv_expr_present, gfc_conv_missing_dummy, gfc_conv_component_ref, gfc_conv_cst_int_power, gfc_conv_function_call, gfc_trans_structur_assign): Likewise. * trans-common.c (create_common): Likewise. * trans-openmp.c (gfc_trans_omp_atomic, gfc_trans_omp_do): Likewise. * trans-const.c (gfc_conv_constant_to_tree): Likewise. * trans-stmt.c (gfc_trans_goto, gfc_trans_return, gfc_trans_do, gfc_trans_integer_select, gfc_trans_character_select, gfc_trans_forall_loop, compute_overall_iter_number, gfc_trans_forall_1, gfc_evaluate_where_mask, gfc_trans_allocate, gfc_trans_deallocate): Likewise. * trans.c (gfc_build_addr_expr, gfc_trans_runtime_check, gfc_allocate_with_status, gfc_allocate_array_with_status, gfc_deallocate_with_status): Likewise. * f95-lang.c (gfc_truthvalue_conversion): Likewise. * trans-io.c (set_parameter_const, set_parameter_value, set_parameter_ref, set_string, set_internal_unit, io_result, set_error_locus, nml_get_addr_expr, transfer_expr): Likewise. * trans-decl.c (gfc_build_qualified_array, build_entry_thunks, gfc_get_fake_result_decl, gfc_trans_auto_character_variable, gfc_generate_function_code): Likewise. * convert.c (convert): Likewise. * trans-intrinsic.c (gfc_conv_intrinsic_conversion, build_fixbound_expr, build_fix_expr, gfc_conv_intrinsic_aint, gfc_conv_intrinsic_int, gfc_conv_intrinsic_imagpart, gfc_conv_intrinsic_conjg, gfc_conv_intrinsic_abs, gfc_conv_intrinsic_cmplx, gfc_conv_intrinsic_mod, gfc_conv_intrinsic_dim, gfc_conv_intrinsic_dprod, gfc_conv_intrinsic_ctime, gfc_conv_intrinsic_fdate, gfc_conv_intrinsic_ttynam, gfc_conv_intrinsic_minmax, gfc_conv_intrinsic_minmax_char, gfc_conv_intrinsic_count, gfc_conv_intrinsic_arith, gfc_conv_intrinsic_dot_product, gfc_conv_intrinsic_minmaxloc, gfc_conv_intrinsic_minmaxval, gfc_conv_intrinsic_btest, gfc_conv_intrinsic_not, gfc_conv_intrinsic_ibits, gfc_conv_intrinsic_ishft, gfc_conv_intrinsic_ichar, gfc_conv_intrinsic_size, gfc_conv_intrinsic_array_transfer, gfc_conv_intrinsic_transfer, gfc_conv_allocated, gfc_conv_associated, gfc_conv_intrinsic_trim, gfc_conv_intrinsic_repeat): Likewise. From-SVN: r132592
2007-12-25re PR fortran/34533 (DTIME returns total process time and not since last ↵Daniel Franke1-0/+1
invocation) gcc/fortran: 2007-12-25 Daniel Franke <franke.daniel@gmail.com> PR fortran/34533 * intrinsic.h (gfc_check_etime): Renamed to ... (gfc_check_dtime_etime): ... this. (gfc_check_etime_sub): Renamed to ... (gfc_check_dtime_etime_sub): ... this. (gfc_resolve_dtime_sub): New prototype. * check.c (gfc_check_etime): Renamed to ... (gfc_check_dtime_etime): ... this. (gfc_check_etime_sub): Renamed to ... (gfc_check_dtime_etime_sub): ... this. * iresolve.c (gfc_resolve_dtime_sub): New implementation. * intrinsic.c (add_functions): Removed alias from ETIME to DTIME, added stand-alone intrinsic DTIME. (add_subroutines): Adjusted check and resolve function names for DTIME and ETIME. * trans-intrinsic.c (gfc_conv_intrinsic_function): Added DTIME to known functions in switch. * intrinsic.texi (DTIME): Added paragraph about thread-safety, fixed return value section. (CPU_TIME): Clarified intent and added implementation notes. libgfortran: 2007-12-25 Daniel Franke <franke.daniel@gmail.com> PR fortran/34533 * intrinsics/cpu_time.c: Moved code commonly usable for CPU_TIME, DTIME and ETIME to ... * intrinsics/time_1.h: ... here. * intrinsics/dtime.c: New file. * intrinsics/etime.c: Newly implemented using the common time-aquisition function from time_1.h. * gfortran.map (_gfortran_dtime, _gfortran_dtime_sub): New. * Makefile.am: Added new file. * Makefile.in: Regenerated. * configure: Regenerated. From-SVN: r131168
2007-11-24re PR libfortran/34209 (run-time lib: NEAREST(0.0_8, -1.0) produces wrong ↵Jerry DeLisle1-1/+1
numbers) 2007-11-23 Jerry DeLisle <jvdelisle@gcc.gnu.org> PR fortran/34209 * iresolve.c (gfc_resolve_nearest): If sign variable kind does not match kind of input variable, convert it to match. PR fortran/33317 * trans.h: Modify prototype for gfc_conv_missing_dummy. * trans-expr.c (gfc_conv_missing_dummy): Modify to pass an integer kind parameter in. Set the type of the dummy to the kind given. (gfc_conv_function_call): Pass representation.length to gfc_conv_missing_dummy. * iresolve.c (gfc_resolve_cshift): Determine the correct kind to use and if appropriate set representation.length to this kind value. (gfc_resolve_eoshift): Likewise. * check.c (gfc_check_cshift): Enable dim_check to allow DIM as an optional argument. (gfc_check_eoshift): Likewise. * trans_intrinsic.c (gfc_conv_intrinsic_function_args): Update call to gfc_conv_missing_dummy. From-SVN: r130391
2007-11-18trans-expr.c (gfc_conv_missing_dummy): Set the type of the dummy argument to ↵Jerry DeLisle1-1/+1
default integer if flagged to do so. 2007-11-18 Jerry DeLisle <jvdelisle@gcc.gnu.org> * trans-expr.c (gfc_conv_missing_dummy): Set the type of the dummy argument to default integer if flagged to do so. Fix typo in comment. * resolve.c (gfc_resolve_dim_arg): Whitespace cleanup. * iresolve.c (gfc_resolve_cshift): Do not convert type, mark attribute for converting the DIM type appropriately in trans-expr.c. (gfc_resolve_eoshift): Likewise. * check.c (dim_check): Remove pre-existing dead code. (gfc_check_cshift): Enable dim_check to allow DIM as an optional. (gfc_check_eoshift): Likewise. * trans_intrinsic.c (gfc_conv_intrinsic_function_args): Fix whitespace. From-SVN: r130276
2007-11-08re PR fortran/34028 (Type mismatch with optimization of ISHFT)Francois-Xavier Coudert1-1/+1
PR fortran/34028 * trans-intrinsic.c (gfc_conv_intrinsic_ishft): Use correct type. From-SVN: r130003
2007-10-30re PR fortran/33596 (ICE with simplified ISNAN)Francois-Xavier Coudert1-0/+1
PR fortran/33596 * trans-intrinsic.c (gfc_conv_intrinsic_isnan): Strip NOP_EXPR from the result of build_call_expr. * gfortran.dg/isnan_2.f90: New test. From-SVN: r129782
2007-10-05gfortran.h (gfc_get_data_variable, [...]): Move to decl.c.Francois-Xavier Coudert1-4/+3
* gfortran.h (gfc_get_data_variable, gfc_get_data_value, gfc_get_data): Move to decl.c. (global_used): Rename into gfc_global_used. (gfc_formalize_init_value, gfc_get_section_index, gfc_assign_data_value, gfc_assign_data_value_range, gfc_advance_section): Move to data.h. (gfc_set_in_match_data): Remove. * decl.c (gfc_get_data_variable, gfc_get_data_value, gfc_get_data): Move here. (gfc_set_in_match_data): Rename into set_in_match_data. (gfc_match_data): Likewise. (add_global_entry): Rename global_used into gfc_global_used. * data.c: Include data.h. * trans.h (gfc_todo_error): Remove. * trans-array.c (gfc_trans_array_constructor, gfc_conv_ss_startstride, gfc_conv_loop_setup): Change gfc_todo_error into assertions. * resolve.c (resolve_global_procedure): Rename global_used into gfc_global_used. * parse.c (gfc_global_used, parse_module, add_global_procedure, add_global_program): Likewise. * trans-intrinsic.c (gfc_walk_intrinsic_function): Rename global_used into gfc_global_used. * Make-lang.in: Add dependencies on fortran/data.h. * data.h: New file. From-SVN: r129034
2007-09-27re PR fortran/33568 (ICE with ANINT (with KIND and an array))Paul Thomas1-9/+10
2007-09-27 Paul Thomas <pault@gcc.gnu.org> PR fortran/33568 * trans-intrinsic.c (gfc_conv_intrinsic_aint): Allow for the possibility of the optional KIND argument by making arg an array, counting the number of arguments and using arg[0]. 2007-09-27 Paul Thomas <pault@gcc.gnu.org> PR fortran/33568 * gfortran.dg/anint_1.f90: New test. From-SVN: r128843
2007-09-03re PR fortran/31675 (Fortran front-end and libgfortran should have a common ↵Francois-Xavier Coudert1-2/+2
header file) PR fortran/31675 * libgfortran.h: New file. * iso-fortran-env.def: Use macros in the new header instead of hardcoded integer constants. * Make-lang.in (F95_PARSER_OBJS, GFORTRAN_TRANS_DEPS): Add fortran/libgfortran.h. * gfortran.h (GFC_STD_*, GFC_FPE_*, options_convert, ioerror_codes): Remove. * trans.c (ERROR_ALLOCATION): Remove. (gfc_call_malloc, gfc_allocate_with_status, gfc_allocate_array_with_status): Use LIBERROR_ALLOCATION. * trans-types.h (GFC_DTYPE_*): Remove. * trans-decl.c (gfc_generate_function_code): Use GFC_CONVERT_NATIVE instead of CONVERT_NATIVE. * trans-io.c (set_parameter_value, set_parameter_ref): Use LIBERROR_* macros instead of IOERROR_ macros. * trans-intrinsic.c (gfc_conv_intrinsic_function): Use LIBERROR_END and LIBERROR_EOR instead of hardcoded constants. * options.c (gfc_init_options): Use GFC_CONVERT_NATIVE instead of CONVERT_NATIVE. (gfc_handle_option): Use GFC_CONVERT_* macros instead of CONVERT_*. * libgfortran.h: Include gcc/fortran/libgfortran.h. Remove M_PI, GFC_MAX_DIMENSIONS, GFC_DTYPE_*, GFC_NUM_RANK_BITS, error_codes, GFC_STD_*, GFC_FPE_* and unit_convert. * runtime/environ.c (variable_table): Use GFC_*_UNIT_NUMBER instead of hardcoded constants. (do_parse, init_unformatted): Use GFC_CONVERT_* macros instead of CONVERT_*. * runtime/string.c (find_option): Use LIBERROR_BAD_OPTION instead of ERROR_BAD_OPTION. * runtime/error.c (translate_error, generate_error): Use LIBERROR_* macros instead of ERROR_*. * io/file_pos.c (formatted_backspace, unformatted_backspace, st_backspace, st_rewind, st_flush): Rename macros. * io/open.c (convert_opt, edit_modes, new_unit, already_open, st_open): Likewise. * io/close.c (st_close): Likewise. * io/list_read.c (next_char, convert_integer, parse_repeat, read_logical, read_integer, read_character, parse_real, check_type, list_formatted_read_scalar, namelist_read, nml_err_ret): Likewise. * io/read.c (convert_real, read_l, read_decimal, read_radix, read_f): Likewise. * io/inquire.c (inquire_via_unit): Likewise. * io/unit.c (get_internal_unit): Likewise. * io/transfer.c (read_sf, read_block, read_block_direct, write_block, write_buf, unformatted_read, unformatted_write, formatted_transfer_scalar, us_read, us_write, data_transfer_init, skip_record, next_record_r, write_us_marker, next_record_w_unf, next_record_w, finalize_transfer, st_read, st_write_done): Likewise. * io/format.c (format_error): Likewise. From-SVN: r128050
2007-08-29re PR fortran/33105 (F2003: Support is_iostat_end & is_iostat_eor intrinsics)François-Xavier Coudert1-0/+24
PR fortran/33105 * intrinsic.c (add_functions): Add IS_IOSTAT_END and IS_IOSTAT_EOR intrinsics. * gfortran.h (gfc_isym_id): Add GFC_ISYM_IS_IOSTAT_END and GFC_ISYM_IS_IOSTAT_EOR. * trans-intrinsic.c (gfc_conv_has_intvalue): New function. (gfc_conv_intrinsic_function): Call gfc_conv_has_intvalue for GFC_ISYM_IS_IOSTAT_END and GFC_ISYM_IS_IOSTAT_EOR. * intrinsic.texi: Add IS_IOSTAT_END and IS_IOSTAT_EOR. * gfortran.dg/is_iostat_end_eor_1.f90: New test. From-SVN: r127903
2007-08-23re PR fortran/33095 (MAX with optional arguments gives run-time error)Francois-Xavier Coudert1-54/+13
PR fortran/33095 * trans-intrinsic.c (gfc_conv_intrinsic_minmax): Remove runtime error checking. * gfortran.dg/min_max_optional_5.f90: New test. * gfortran.dg/min_max_optional_2.f90: Remove. * gfortran.dg/min_max_optional_3.f90: Remove. * gfortran.dg/min_max_optional_4.f90: Remove. From-SVN: r127732
2007-08-14re PR fortran/33073 (Type mismatch in build_fixbound_expr())Francois-Xavier Coudert1-20/+4
PR fortran/33073 * trans-intrinsic.c (build_fixbound_expr): Convert to result type in all cases. From-SVN: r127494
2007-08-12re PR fortran/29600 ([F03] MINLOC and MAXLOC take an optional KIND argument)Francois-Xavier Coudert1-79/+11
PR fortran/29600 * intrinsic.c (add_functions): Add KIND arguments to COUNT, IACHAR, ICHAR, INDEX, LBOUND, LEN, LEN_TRIM, SCAN, SIZE, UBOUND and VERIFY. * iresolve.c (gfc_resolve_count): Add kind argument. (gfc_resolve_iachar): New function. (gfc_resolve_ichar): Add kind argument. (gfc_resolve_index_func): Likewise. (gfc_resolve_lbound): Likewise. (gfc_resolve_len): Likewise. (gfc_resolve_len_trim): Likewise. (gfc_resolve_scan): Likewise. (gfc_resolve_size): New function. (gfc_resolve_ubound): Add kind argument. (gfc_resolve_verify): Likewise. * trans-decl.c (gfc_get_extern_function_decl): Allow specific intrinsics to have 4 arguments. * check.c (gfc_check_count): Add kind argument. (gfc_check_ichar_iachar): Likewise. (gfc_check_index): Likewise. (gfc_check_lbound): Likewise. (gfc_check_len_lentrim): New function. (gfc_check_scan): Add kind argument. (gfc_check_size): Likewise. (gfc_check_ubound): Likewise. (gfc_check_verify): Likewise. * intrinsic.texi: Update documentation for COUNT, IACHAR, ICHAR, INDEX, LBOUND, LEN, LEN_TRIM, SCAN, SIZE, UBOUND and VERIFY. * simplify.c (get_kind): Whitespace fix. (int_expr_with_kind): New function. (gfc_simplify_iachar): Add kind argument. (gfc_simplify_iachar): Likewise. (gfc_simplify_ichar): Likewise. (gfc_simplify_index): Likewise. (simplify_bound_dim): Likewise. (simplify_bound): Likewise. (gfc_simplify_lbound): Likewise. (gfc_simplify_len): Likewise. (gfc_simplify_len_trim): Likewise. (gfc_simplify_scan): Likewise. (gfc_simplify_shape): Pass NULL as kind argument to gfc_simplify_size. (gfc_simplify_size): Add kind argument. (gfc_simplify_ubound): Likewise. (gfc_simplify_verify): Likewise. * intrinsic.h: Update prototypes and add new ones. * trans-intrinsic.c (gfc_conv_intrinsic_index): Rename into gfc_conv_intrinsic_index_scan_verify. (gfc_conv_intrinsic_scan, gfc_conv_intrinsic_verify): Remove. (gfc_conv_intrinsic_function): Call gfc_conv_intrinsic_index_scan_verify to translate the INDEX, SCAN and VERIFY intrinsics. * gfortran.dg/intrinsics_kind_argument_1.f90: New test. * gfortran.dg/pure_dummy_length_1.f90: Adapt to new error wording. From-SVN: r127380
2007-08-10re PR fortran/31270 (print subscript value and array bounds when ↵Francois-Xavier Coudert1-9/+10
out-of-bounds error occurs) PR fortran/31270 * trans.c (gfc_trans_runtime_check): Reorder arguments and add extra variable arguments. Hand them to the library function. * trans.h (gfc_trans_runtime_check): Update prototype. * trans-array.c (gfc_trans_array_bound_check): Issue more detailled error messages. (gfc_conv_array_ref): Likewise. (gfc_conv_ss_startstride): Likewise. (gfc_trans_dummy_array_bias): Reorder arguments to gfc_trans_runtime_check. * trans-expr.c (gfc_conv_substring): Issue more detailled error messages. (gfc_conv_function_call): Reorder arguments to gfc_trans_runtime_check. * trans-stmt.c (gfc_trans_goto): Likewise. * trans-io.c (set_string): Reorder arguments to gfc_trans_runtime_check and issue a more detailled error message. * trans-decl.c (gfc_build_builtin_function_decls): Make runtime_error and runtime_error_at handle a variable number of arguments. * trans-intrinsic.c (gfc_conv_intrinsic_bound): Reorder arguments to gfc_trans_runtime_check. (gfc_conv_intrinsic_minmax): Likewise. (gfc_conv_intrinsic_repeat): Issue more detailled error messages. * runtime/error.c (runtime_error_at): Add a variable number of arguments. * libgfortran.h (runtime_error_at): Update prototype. From-SVN: r127352
2007-08-10re PR fortran/32933 (ICE in simplify_subreg with -fdefault-integer-8)Francois-Xavier Coudert1-10/+7
PR fortran/32933 * trans-decl.c (gfc_build_builtin_function_decls): Change prototype for associated. * trans-intrinsic.c (gfc_conv_intrinsic_minmax): Convert the result of __builtin_isnan into a boolean. (gfc_conv_intrinsic_strcmp): Cleanup. (gfc_conv_associated): Convert the result of the associated function into a boolean. * intrinsics/associated.c: Change return type of associated into a C int. From-SVN: r127334
2007-08-06re PR fortran/29828 ([F2003] MIN and MAX with character variables)Francois-Xavier Coudert1-2/+47
PR fortran/29828 * trans.h (gfor_fndecl_string_minmax): New prototype. * trans-decl.c (gfor_fndecl_string_minmax): New variable. (gfc_build_intrinsic_function_decls): Create gfor_fndecl_string_minmax. * check.c (gfc_check_min_max): Allow for character arguments. * trans-intrinsic.c (gfc_conv_intrinsic_minmax_char): New function. (gfc_conv_intrinsic_function): Add special case for MIN and MAX intrinsics with character arguments. * simplify.c (simplify_min_max): Add simplification for character arguments. * intrinsics/string_intrinsics.c (string_minmax): New function and prototype. * gfortran.map (GFORTRAN_1.0): Add _gfortran_string_minmax * gfortran.dg/minmax_char_1.f90: New test. * gfortran.dg/minmax_char_2.f90: New test. * gfortran.dg/min_max_optional_4.f90: New test. From-SVN: r127252
2007-08-05re PR fortran/32979 (Implement vendor-specific ISNAN() intrinsic function)Francois-Xavier Coudert1-0/+16
PR fortran/32979 * intrinsic.h (gfc_check_isnan): Add prototype. * gfortran.h (gfc_isym_id): Add GFC_ISYM_ISNAN. * intrinsic.c (add_functions): Add ISNAN intrinsic. * check.c (gfc_check_isnan): New function. * trans-intrinsic.c (gfc_conv_intrinsic_isnan): New function. (gfc_conv_intrinsic_function): Call gfc_conv_intrinsic_isnan to translate ISNAN. * intrinsic.texi: Document ISNAN. * gfortran.dg/isnan_1.f90: New test. Co-Authored-By: Tobias Burnus <burnus@gcc.gnu.org> From-SVN: r127224
2007-08-04re PR fortran/32968 (selected_(int|real)_kind fail with -fdefault-integer-8)Steven G. Kargl1-6/+28
2008-08-04 Steven G. Kargl <kargl@gcc.gnu.org> PR fortran/32968 * gfortran.dg/selected_kind_1.f90: New test. 2008-08-04 Steven G. Kargl <kargl@gcc.gnu.org> PR fortran/32969 * iresolve.c (gfc_resolve_rrspacing): Convert argument(s) to expected KIND. (gfc_resolve_scale): Ditto. (gfc_resolve_set_exponent): Ditto. (gfc_resolve_spacing): Ditto. PR fortran/32968 * trans-intrinsic.c (gfc_conv_intrinsic_si_kind, gfc_conv_intrinsic_sr_kind): Convert the argument(s) to the expected KIND, and fold the result to the expected KIND. From-SVN: r127205
2007-08-03re PR fortran/31202 (Incorrect rounding generated for NINT)Francois-Xavier Coudert1-21/+49
PR fortran/31202 * f95-lang.c (gfc_init_builtin_functions): Defin builtins for lround{f,,l} and llround{f,,l}. * trans-intrinsic.c (build_fix_expr): Generate calls to the {l,}round{f,,l} functions. * intrinsics/c99_functions.c (roundl,lroundf,lround,lroundl, llroundf,llround,llroundl): New functions. * c99_protos.h (roundl,lroundf,lround,lroundl,llroundf,llround, llroundl): New prototypes. * configure.ac: Check for lroundf, lround, lroundl, llroundf, llround and llroundl. * configure: Regenerate. * Makefile.in: Regenerate. * config.h.in: Regenerate. * gfortran.dg/nint_2.f90: New test. From-SVN: r127185
2007-08-01arith.c: Change copyright header to refer to version 3 of the GNU General ↵Nick Clifton1-4/+3
Public... * arith.c: Change copyright header to refer to version 3 of the GNU General Public License and to point readers at the COPYING3 file and the FSF's license web page. * openmp.c, interface.c, intrinsic.c, trans-array.c, trans-expr.c, symbol.c, iso-fortran-env.def, intrinsic.h, decl.c, trans-array.h, matchexp.c, dump-parse-tree.c, trans-common.c, array.c, Make-lang.in, trans-openmp.c, gfortran.h, error.c, iso-c-binding.def, lang.opt, data.c, trans-const.c, trans-stmt.c, expr.c, trans-const.h, trans-stmt.h, module.c, trans.c, scanner.c, trans-types.c, trans.h, gfortranspec.c, trans-types.h, lang-specs.h, io.c, bbt.c, resolve.c, f95-lang.c, st.c, iresolve.c, match.c, trans-decl.c, trans-io.c, target-memory.c, match.h, target-memory.h, parse.c, arith.h, check.c, dependency.c, parse.h, types.def, convert.c, dependency.h, primary.c, trans-intrinsic.c, options.c, misc.c, simplify.c: Likewise. From-SVN: r127129
2007-07-31re PR fortran/32942 (Wrong code with with -fdefault-integer-8)Steven G. Kargl1-3/+7
2007-07-31 Steven G. Kargl <kargl@gcc.gnu.org> PR fortran/32942 * gfortran.dg/exponent_2.f90: New test. 2007-07-31 Steven G. Kargl <kargl@gcc.gnu.org> PR fortran/32942 *trans-intrinsic.c (gfc_conv_intrinsic_exponent): Convert to correct type. From-SVN: r127105
2007-07-28re PR fortran/32048 (max/min and NaN)François-Xavier Coudert1-3/+12
PR fortran/32048 * f95-lang.c (gfc_init_builtin_functions): Add declaration for __builtin_isnan. * trans-intrinsic.c (gfc_conv_intrinsic_minmax): Handled NaNs. * gfortran.dg/nan_1.f90: New test. From-SVN: r127019
2007-07-21re PR fortran/32823 (internal compiler error: in gfc_trans_assignment_1)Lee Millward1-9/+14
PR fortran/32823 * trans-intrinsic.c (gfc_conv_intrinsic_int): Evaluate all arguments passed, not just the first one. Adjust code to refer to "args[0]" instead of "arg" as a result. * gfortran.dg/int_2.f90: New test. From-SVN: r126810
2007-07-16re PR fortran/32222 (ICE in gfc_trans_assignment_1)Lee Millward1-310/+326
PR fortran/32222 PR fortran/32238 PR fortran/32242 * trans-intrinsic.c (gfc_conv_intrinsic_function_args): Adjust to operate on a stack allocated array for the intrinsic arguments instead of creating a TREE_LIST. Add two new parameters for the array and the number of elements. Update all callers to allocate an array of the correct length to pass in. Update comment. (gfc_intrinsic_argument_list_length): New function. (gfc_conv_intrinsic_conversion): Call it. (gfc_conv_intrinsic_mnimax): Likewise. (gfc_conv_intrinsic_merge): Likewise. (gfc_conv_intrinsic_lib_function): Call it. Use new CALL_EXPR constructors. (gfc_conv_intrinsic_cmplx): Likewise. (gfc_conv_intrinsic_ctime): Likewise. (gfc_covn_intrinsic_fdate): Likewise. (gfc_conv_intrinsic_ttynam): Likewise. (gfc_conv_intrinsic_ishftc): Likewise. (gfc_conv_intrinsic_index): Likewise. (gfc_conv_intrinsic_scan): Likewise. (gfc_conv_intrinsic_verify): Likewise. (gfc_conv_intrinsic_trim): Likewise. (gfc_conv_intrinsic_aint): Use new CALL_EXPR constructors. (gfc_conv_intrinsic_exponent): Likewise. (gfc_conv_intrinsic_bound): Likewise. (gfc_conv_intrinsic_abs): Likewise. (gfc_conv_intrinsic_mod): Likewise. (gfc_conv_intrinsic_sign): Likewise. (gfc_conv_intrinsic_len): Likewise. (gfc_conv_intrinsic_adjust): Likewise. (gfc_conv_intrinsic_si_kind): Likewise. * gfortran.dg/cmplx_intrinsic_1.f90: New test. PR fortran/32238 * gfortran.dg/pr32238.f90: New test. PR fortran/32222 * gfortran.dg/pr32222.f90: New test. PR fortran/32242 * gfortran.dg/pr32242.f90: New test. From-SVN: r126689
2007-07-12trans-intrinsic.c (gfc_conv_intrinsic_repeat): Convert arguments to ↵Richard Guenther1-2/+5
gfc_charlen_type_node. 2007-07-12 Richard Guenther <rguenther@suse.de> * trans-intrinsic.c (gfc_conv_intrinsic_repeat): Convert arguments to gfc_charlen_type_node. * trans-io.c (gfc_convert_array_to_string): Convert type size to gfc_array_index_type. From-SVN: r126575
2007-07-11trans-array.c (gfc_conv_array_parameter): Use correct types for comparison.Richard Guenther1-1/+2
2007-07-11 Richard Guenther <rguenther@suse.de> * trans-array.c (gfc_conv_array_parameter): Use correct types for comparison. * trans-intrinsic.c (gfc_conv_intrinsic_repeat): Use correct types for POINTER_PLUS_EXPR. * trans-stmt.c (gfc_trans_forall_loop): Use correct type for integer one constant. From-SVN: r126543