2004-12-29 Steven G. Kargl * gfortran.h (gfc_case): fix typo in comment. 2004-12-27 Tobias Schlueter * trans-intrinsic.c (gfc_conv_intrinsic_ishft): Change to logical shift. Call fold. Remove 0-bit shift shortcut. (gfc_conv_intrinsic_ishftc): Convert first argument to at least 4 bytes bits. Convert 2nd and 3rd argument to 4 bytes. Convert result if width(arg 1) < 4 bytes. Call fold. PR fortran/19032 * trans-intrinsic.c (gfc_conv_intrinsic_mod): Update comment in front of function to match the standard. Correct handling of MODULO. 2004-12-27 Andrew Pinski * trans-expr.c (gfc_conv_cst_int_power): Only check for flag_unsafe_math_optimizations if we have a float type. 2004-12-23 Steven G. Kargl * gfortran.texi: Fix typo. 2004-12-16 Tobias Schlueter * trans-intrinsic.c (build_fixbound_expr): Clarify comment, fix comment typo. 2004-12-15 Tobias Schlueter PR fortran/18993 * match.c (gfc_match_if): Don't explicitly skip optional whitespace. (gfc_match_nullify): Make sure that ')' is in front of the end of statement. * scanner.c (skip_fixed_comments): Fix typo in comment preceding function. 2004-12-14 Richard Henderson * gfortran.h (gfc_expr.function.name): Make const. (gfc_iresolve_init_1, gfc_iresolve_done_1): Remove. (gfc_get_string): Update prototype. * iresolve.c: Include tree.h. (string_node, HASH_SIZE, string_head, hash): Remove. (gfc_get_string): Use vsnprintf, get_identifier. (free_strings, gfc_iresolve_init_1, gfc_iresolve_done_1): Remove. * misc.c (gfc_init_1): Don't call gfc_iresolve_init_1. (gfc_done_1): Don't call gfc_iresolve_done_1. * module.c (mio_allocated_string): Take and return const char *, instead of modifying char**. (mio_expr): Update to match. * resolve.c (pure_function): Constify name argument. (resolve_function): Constify name. * trans-intrinsic.c (gfc_conv_intrinsic_function): Likewise. 2004-12-12 Richard Henderson * iresolve.c (gfc_resolve_all, gfc_resolve_any, gfc_resolve_count, gfc_resolve_cshift, gfc_resolve_dot_product, gfc_resolve_eoshift, gfc_resolve_matmul, gfc_resolve_maxloc, gfc_resolve_maxval, gfc_resolve_minloc, gfc_resolve_minval, gfc_resolve_pack, gfc_resolve_product, gfc_resolve_reshape, gfc_resolve_shape, gfc_resolve_spread, gfc_resolve_sum, gfc_resolve_transpose, gfc_resolve_unpack: Use PREFIX. 2004-12-12 Tobias Schlueter PR fortran/18869 * match.c (gfc_match_common): Skip whitespace. 2004-12-12 Steven G. Kargl PR fortran/16581 * check.c (gfc_check_iand, gfc_check_ibclr, gfc_check_ibits, gfc_check_ibset, gfc_check_ieor, gfc_check_ior): Remove default integer kind check; Issue error for -std=f95 when needed. * intrinsic.c (add_functions): Change ieor from GFC_STD_GNU to GFC_STD_F95. * iresolve.c (gfc_resolve_iand, gfc_resolve_ieor, gfc_resolve_ior): Promote arguments to same kind. 2004-12-12 Steven G. Kargl Paul Brook PR fortran/16222 * resolve.c (gfc_resolve_iterator_expr): New function. (gfc_resolve_iterator): Use it. Add real_ok argument. Convert start, end and stride to correct type. (resolve_code): Pass extra argument. * array.c (resolve_array_list): Pass extra argument. * gfortran.h (gfc_resolve): Add prototype. * trans-stmt.c (gfc_trans_do): Remove redundant type conversions. Handle real type iterators. 2004-12-11 Tobias Schlueter PR fortran/17175 * iresolve.c (gfc_resolve_scale): Convert 'I' argument if not of same kind as C's 'int'. (gfc_resolve_set_exponent): Convert 'I' argument if not of kind 4. 2004-12-08 Richard Henderson * intrinsic.c (gfc_convert_type_warn): Propagate the input shape to the output expression. * iresolve.c (gfc_resolve_cshift, gfc_resolve_eoshift): Suppress warning conversion. (gfc_resolve_reshape): Force convert SHAPE and ORDER parameters to index kind. 2004-12-08 Tobias Schlueter PR fortran/18826 * resolve.c (resolve_code): Impose correct restrictions on assigned variable. * decl.c (gfc_match_end): Use locus of END when eos is an error. 2004-12-02 Steven G. Kargl Paul Brook * check.c (gfc_check_flush, gfc_check_fnum): New functions. (gfc_check_fstat, gfc_check_fstat_sub): New functions. (gfc_check_stat, gfc_check_stat_sub): New functions. * gfortran.h (GFC_ISYM_FNUM,GFC_ISYM_FSTAT,GFC_ISYM_STAT): New symbols * intrinsic.c (add_functions,add_subroutines): Add flush, fnum, fstat, and stat to intrinsics symbol tables. * intrinsic.h (gfc_check_flush, gfc_resolve_stat_sub): Add prototypes. (gfc_resolve_fstat_sub, gfc_resolve_stat): Ditto. * iresolve.c (gfc_resolve_fnum, gfc_resolve_fstat): New functions. (gfc_resolve_stat, gfc_resolve_flush): New functions. (gfc_resolve_stat_sub,gfc_resolve_fstat_sub): New functions * trans-intrinsic.c (gfc_conv_intrinsic_function): Add new intrinsics. 2004-12-02 Steven G. Kargl * intrinsic.c: Fix and add comments, fix function declarations (OPTIONAL,REQUIRED): New symbols (add_functions,add_subroutines): Use symbols (gmp.h): Remove unused include 2004-11-25 Joseph S. Myers * f95-lang.c, gfortranspec.c, trans-decl.c: Avoid ` as left quote in diagnostics. 2004-11-24 Steven Bosscher * options.c (gfc_post_options): Don't clear flag_inline_functions. 2004-11-20 Steven G. Kargl * check.c (gfc_check_getcwd_sub): Fix seg fault. * check.c (gfc_check_exit,gfc_check_umask,gfc_check_umask_sub, gfc_check_unlink,gfc_check_unlink_sub): New functions * gfortran.h (GFC_ISYM_UMASK,GFC_ISYM_UNLINK): New symbols * intrinsic.c (add_functions,add_subroutines): Add umask, unlink, exit to intrinsics symbol tables. * intrinsic.h (gfc_check_umask,gfc_check_unlink,gfc_check_exit, gfc_check_umask_sub,gfc_check_unlink_sub,gfc_resolve_umask, gfc_resolve_unlink,gfc_resolve_exit,gfc_resolve_umask_sub, gfc_resolve_unlink_sub): Add and sort prototypes. * iresolve.c (gfc_resolve_umask,gfc_resolve_unlink,gfc_resolve_exit, gfc_resolve_umask_sub,gfc_resolve_unlink_sub): New functions * trans-intrinsic.c (gfc_conv_intrinsic_function): Use symbols 2004-11-16 Paul Brook PR fortran/13010 * trans-array.c (gfc_trans_allocate_temp_array): Use gfc_get_dtype. (gfc_array_init_size, gfc_conv_expr_descriptor): Ditto. * trans-types.c (gfc_get_dtype): Accept array type rather than element type. (gfc_get_nodesc_array_type): Don't set GFC_TYPE_ARRAY_DTYPE. (gfc_get_array_type_bounds): Ditto. (gfc_get_derived_type): Recurse into derived type pointers. * trans-types.h (gfc_get_dtype): Add prototype. * trans.h (GFC_TYPE_ARRAY_DTYPE): Add comment. 2004-11-15 Paul Brook * trans-types.c (gfc_get_dtype): Remove obsolete TODO. 2004-11-10 Paul Brook PR fortran/18375 * trans-expr.c (gfc_trans_subarray_assign): Free shape before ss. * trans-io.c (transfer_array_component): Ditto. 2004-11-10 Paul Brook * invoke.texi: Fix typo. 2004-11-08 Kazu Hirata * arith.c, array.c, decl.c, expr.c, f95-lang.c, gfortran.h, gfortranspec.c, interface.c, intrinsic.c, iresolve.c, match.c, module.c, parse.c, parse.h, primary.c, resolve.c, scanner.c, trans-array.c, trans-array.h, trans-expr.c, trans-intrinsic.c, trans-io.c, trans-stmt.c, trans.h: Fix comment formatting. 2004-11-06 Tobias Schlueter PR fortran/18023 * io.c (resolve_tag): Tighten up exception for assigned FORMAT. 2004-11-06 Kazu Hirata * gfortranspec.c: Replace GNU CC with GCC. 2004-11-05 Tobias Schlueter * gfortranspec.c (lang_specific_driver): Change year to 2004. 2004-11-05 Tobias Schlueter PR fortran/18111 * trans-decl.c (create_function_arglist): Set DECL_ARTIFICIAL for hidden parameters. 2004-11-05 Tobias Schlueter PR fortran/15164 * trans-decl.c (gfc_finish_var_decl): Don't declare arguments to module procedures as if they were module variables. 2004-11-03 Tobias Schlueter PR fortran/17535 PR fortran/17583 PR fortran/17713 * module.c (write_symbol1): Set module_name for dummy arguments. 2004-11-02 Paul Brook * intrinsic.c (check_intrinsic_standard): Include error locus. Remove VLA. (gfc_intrinsic_func_interface, gfc_intrinsic_sub_interface): Pass locus to check_intrinsic_standard. 2004-10-31 Janne Blomqvist PR fortran/17590 * gfortran.h: Change GFC_STD_* flags to more appropriate ones. (struct gfc_intrinsic_isym): Add field for standard. (struct gfc_option_t): Add field for warning about use of nonstandard intrinsics. * intrinsic.c (add_sym): Add parameter for standard version, check this against current standard. (add_sym_0): Pass standard parameter to add_sym. (add_sym_1, add_sym_0s, add_sym_1s, add_sym_1m, add_sym_2): Ditto. (add_sym_2s, add_sym_3, add_sym_3ml, add_sym_3red, add_sym_3s): Ditto. (add_sym_4, add_sym_4s, add_sym_5, add_sym_5s): Ditto. (make_generic): Add parameter for standard, check this against currently selected standard. (add_functions, add_subroutines): Add parameter to tell which standard an intrinsic belongs to. (check_intrinsic_standard): New function. (gfc_intrinsic_func_interface): Add call to check_intrinsic_standard. (gfc_intrinsic_sub_interface): Ditto. * lang.opt: Add Wnonstd-intrinsics option. * options.c (gfc_init_options): Change to use new GFC_STD_* flags, init new warning. (set_Wall): Add warning about nonstd intrinsics. (gfc_handle_option): Change to use new GFC_STD_* flags, handle new warning. * invoke.texi: Update manual to include -Wnonstd-intrinsics. 2004-10-30 Andrew Pinski * f95-lang.c (lang_tree_node): Add chain_next to be the TREE_CHAIN. 2004-10-30 Tobias Schlueter * simplify.c (twos_complement): Calculate mask in GMP arithmetic. 2004-10-30 Tobias Schlueter * trans.c (gfc_trans_code): Set global locus after recursing. Fix comment typo. 2004-10-30 Canqun Yang * check.c (gfc_check_rand): Allow missing optional argument. (gfc_check_irand): Ditto. * intrinsic.c (add_functions): Set arg optional flag for {i,}rand. 2004-10-28 Scott Robert Ladd PR fortran/13490, PR fortran/17912 * gcc/fortran/gfortran.h: Added pedantic_min_int to gfc_integer_info * gcc/fortran/gfortran.h: Added ARITH_ASYMMETRIC to arith * gcc/fortran/arith.c: Added support for an "asymmetric integer" warning when compiling with pedantic. * gcc/fortran/arith.c: Set minimum integer values to reflect realities of two's complement signed integers. Added pedantic minimum. 2004-10-17 Andrew Pinski * Make-lang.in (F95_ADDITIONAL_OBJS): Kill. (f951): Do not depend on F95_ADDITIONAL_OBJS and don't link it in. 2004-10-14 Tobias Schlueter * trans-decl.c (generate_local_decl): Simplify logic, fix comment typo. (gfc_generate_function_code): Fix formatting issue. 2004-10-10 Tobias Schlueter * module.c: Fix formatting issues. 2004-10-09 Tobias Schlueter * module.c (mio_interface_rest): Set where member of interface while loading. 2004-10-08 Andrew Pinski PR fortran/17901 * options.c (gfc_handle_option): Add break after handing the J/M option. 2004-10-08 Tobias Schlueter * arith.c: Fix formatting issues. 2004-10-07 Tobias Schlueter PR fortran/17676 * resolve.c (resolve_operator): Use correct operator name in message. 2004-10-07 Tobias Schlueter * primary.c (match_boz_constant): Allow kind parameter suffixes. Move standard warning further to the front. 2004-10-07 Kazu Hirata * trans-stmt.c: Fix a comment typo. 2004-10-07 Paul Brook PR fortran/17678 * trans-array.c (gfc_trans_deferred_array): Leave use associated variables alone. 2004-10-06 Tobias Schlueter PR fortran/17568 * simplify.c (twos_complement): New function. (gfc_simplify_ishft, gfc_simplify_ishftc): Revise. * simplify.c (gfc_simplify_abs): Use mpfr_hypot for CABS. 2004-10-06 Paul Brook * trans-stmt.c (gfc_trans_simple_do): New function. (gfc_trans_do): Use it. Evaluate iteration bounds before entering loop. Update comments. 2004-10-04 Tobias Schlueter PR fortran/17283 * iresolve.c (gfc_resolve_pack): Choose function depending if mask is scalar. PR fortran/17631 * intrinsic.c (add_sym_5): Remove. (add_subroutines): Add resolution function for MVBITS. * intrinsic.h (gfc_resolve_mvbits): Declare resolution function for MVBITS * iresolve.c (gfc_resolve_mvbits): New function. (gfc_resolve_random_number): Remove empty line at end of function. * trans-const.c (gfc_build_cstring_const): New function. (gfc_init_cst): Use new function. * trans-const.h (gfc_build_cstring_const): Add prototype. * trans-io.c (set_string, set_error_locus): Use new function. * trans-stmt.c (gfc_trans_goto): Use new function. PR fortran/17708 * parse.c (accept_statement): Don't treat END DO like END IF and END SELECT. (parse_do_block): Generate possible END DO label inside END DO block. PR fortran/17776 * check.c (gfc_check_system_sub): New function. * gfortran.h (gfc_generic_isym_id): Add GFC_ISYM_SYSTEM. * intrinsic.c (add_functions): Add 'system'. (add_subroutines): Add 'system'. * intrinsic.h (gfc_check_etime_sub, gfc_check_getcwd_sub): Move prototypes to other suborutines. (gfc_check_system_sub, gfc_resolve_system, gfc_resolve_system_sub): Add prototype. (gfc_resolve_system_clock): Fix formatting of prototype. * iresolve.c (gfc_resolve_system, gfc_resolve_system_sub): New functions. * trans-intrinsic.c (gfc_conv_intrinsic_function): Deal with GFC_ISYM_SYSTEM. 2004-10-04 Erik Schnetter * scanner.c (preprocessor_line): Accept preprocessor lines without file names. Check file names for closing quotes. Handle escaped quotes in file names. 2004-10-04 Tobias Schlueter Paul Brook * trans-array.c (gfc_conv_expr_descriptor): Check for substriungs. Use gfc_get_expr_charlen. * trans-expr.c (gfc_get_expr_charlen): New function. * trans.h (gfc_get_expr_charlen): Add prototype. 2004-10-04 Kazu Hirata * trans-intrinsic.c: Fix a comment typo. 2004-10-03 Tobias Schlueter * simplify.c (range_check): Remove blank line at beginning of function. (gfc_simplify_dint): Same at end of function. (gfc_simplify_exponent, gfc_simplify_fraction): Simplify calculations. (gfc_simplify_bound): Fix indentation. (gfc_simplify_log10): Simplify calculation. (gfc_simplify_min, gfc_simplify_max): Remove blank line at beginning of function. (gfc_simplify_nearest): Same at end of function. (gfc_simplify_nint, gfc_simplify_idnint): Same at beginning of function. (gfc_simplify_rrspacing, gfc_simplify_set_exponent, gfc_simplify_spacing): Simplify calulations. 2004-10-03 Feng Wang * trans-intrinsic.c: Fix comments on spacing and rrspacing (gfc_conv_intrinsic_rrspacing): Add fold on constant trees. 2004-10-01 Jan Hubicka * f95-lang.c (gfc_expand_function): Update call of tree_rest_of_compilation. * trans-decl.c (gfc_generate_constructors): Likewise. 2004-09-26 Tobias Schlueter * trans-intrinsic.c: Comment fixes. 2004-09-25 Tobias Schlueter * decl.c (add_init_expr_to_sym, variable_decl): Comment fixes. 2004-09-24 Tobias Schlueter * trans-types.c (gfc_return_by_reference): Remove superfluous assertion. * intrinsic.h (gfc_resolve_getcwd): Update prototype. * iresolve.c (gfc_resolve_getcwd): Add second argument to function. PR fortran/17615 * trans-expr.c (gfc_trans_arrayfunc_assign): Look at resolved function to determine return type. 2004-09-20 Jan Hubicka * trans-decl.c (build_entry_thunks): Finalize the function; do not lower tree. (gfc_generate_function_code): Likewise. 2004-09-20 Tobias Schlueter PR fortran/15957 * simplify.c (gfc_simplify_reshape): Set shape of return value correctly. 2004-09-17 Jeffrey D. Oldham Zack Weinberg * f95-lang.c, trans-expr.c, trans.c: Update for new tree-class enumeration constants. 2004-09-17 Paul Brook * gfortran.h (struct gfc_linebuf): Don't use C99 empty arrays. (gfc_linebuf_header_size): Define. * scanner.c (load_file): Use it. 2004-09-16 Kazu Hirata * array.c, data.c, decl.c, dependency.c, error.c, f95-lang.c, interface.c, intrinsic.c, io.c, misc.c, module.c, parse.h, resolve.c, scanner.c, trans-array.c, trans-array.h, trans-common.c, trans-const.h, trans-decl.c, trans-expr.c, trans-intrinsic.c, trans-stmt.c, trans-types.c, trans.c, trans.h: Fix comment typos. Follow spelling conventions. 2004-09-16 Victor Leikehman PR/15364 * trans-io.c (transfer_array_component): New function. (transfer_expr): For array fields, call transfer_array_component. 2004-09-16 Kazu Hirata * gfortran.texi: Fix a typo. 2004-09-15 Aaron W. LaFramboise * parse.c (eof_buf): Rename eof to eof_buf. (unexpected_eof): Same. (gfc_parse_file): Same. 2004-09-15 Steven G. Kargl * check.c (gfc_check_getcwd_sub): New function. * gfortran.h (GFC_ISYM_GETCWD): New symbol. * intrinsic.c (add_functions): Add function definition; Use symbol. * intrinsic.c (add_subroutines): Add subroutine definitions. * intrinsic.h: Add prototypes. * iresolve.c (gfc_resolve_getcwd, gfc_resolve_getcwd_sub): New functions. * trans-intrinsic.c (gfc_conv_intrinsic_function): Use symbol. 2004-09-15 Tobias Schlueter PR fortran/16485 * module.c (write_symbol): Don't fill in module name here. (write_symbol0): Fill in here instead. 2004-09-14 Kazu Hirata * data.c, decl.c, f95-lang.c, gfortran.h, match.c, trans-array.c, trans-common.c, trans-expr.c, trans-intrinsic.c, trans-stmt.c, trans-types.c, trans.h: Fix comment typos. Follow spelling conventions. 2004-09-09 Paul Brook * scanner.c (get_file): Add ATTRIBUTE_UNUSED. 2004-09-08 Paul Brook * array.c: Don't include assert.h. * data.c: Don't include assert.h. Replace assert and abort with gcc_assert and gcc_unreachable. * dependency.c: Ditto. * f95-lang.c: Ditto. * iresolve.c: Ditto. * resolve.c: Ditto. * simplify.c: Ditto. * symbol.c: Ditto. * trans-array.c: Ditto. * trans-common.c: Ditto. * trans-const.c: Ditto. * trans-decl.c: Ditto. * trans-expr.c: Ditto. * trans-intrinsic.c: Ditto. * trans-io.c: Ditto. * trans-stmt.c: Ditto. * trans-types.c: Ditto. * trans.c: Ditto. 2004-09-07 Per Bothner Paul Brook * error.c (show_locus): Handle mapped locations. * f95-lang.c (gfc_be_parse_file): Initialize mapped locations. * gfortran.h: Include input.h. (struct gfc_linebuf): Use source_location. * scanner.c (get_file): Initialize linemap. (preprocessor_line): Pass extra argument to get_file. (load_file): Ditto. Setup linemap. (gfc_new_file): Handle mapped locations. * trans-common.c (build_field, build_equiv_decl, build_common_decl): Set decl source locations. (gfc_trans_common): Set blank common block location. * trans-decl.c (gfc_set_decl_location): New function. (gfc_get_label_decl, gfc_get_symbol_decl): Use it. (trans_function_start): Move call to gfc_set_backend_locus.. (build_function_decl): ... to here. (build_entry_thunks): Set and restore the backend locus. (gfc_generate_constructors): Remove excess arguments to init_function_start. (gfc_generate_block_data): Add comments. Set the decl locus. * trans-io.c (set_error_locus): Handle mapped locations. * trans.c (gfc_get_backend_locus, gfc_get_backend_locus): Ditto. (gfc_trans_code): Use SET_EXPR_LOCATION. (gfc_generate_code): Override the location of the new symbol. * trans.h (gfc_set_decl_location): Add prototype. 2004-08-31 Paul Brook * trans-types.c (gfc_type_for_mode): Return NULL for unknown modes. 2004-09-01 Tobias Schlueter PR fortran/15327 * trans-intrinsic.c (gfc_conv_intrinsic_merge): Do the right thing for strings. 2004-09-01 Tobias Schlueter PR fortran/16400 PR fortran/16404 (port from g95) * resolve.c (resolve_transfer): New function. (resolve_code): Call resolve_transfer in case of EXEC_TRANSFER. 2004-08-31 Tobias Schlueter PR fortran/16579 * trans-types.c (gfc_init_types): Make gfc_character1_type_node an unsigned char. 2004-08-31 Tobias Schlueter * CONTRIB, NEWS, README, TODO: Remove obsolete files. 2004-08-31 Tobias Schlueter PR fortran/17244 * trans-types.c (gfc_return_by_reference): Remove TODO error, add comment pointing out possible issue WRT compatibility with g77. 2004-08-31 Tobias Schlueter * trans-decl.c, trans-expr.c, trans-io.c, trans-types.c: Replace all occurences of 'gfc_strlen_type_node' by 'gfc_charlen_type_node'. * trans-types.h: Same. Also update comment accordingly. 2004-08-31 Tobias Schlueter * primary.c: Update copyright boilerplate to say GCC. * f95-lang.c: Change initial comment to say gfortran. 2004-08-31 Paul Brook * trans-types.h: Add comments. (intmax_type_node, string_type_node, const_string_type_node): Remove. 2004-08-30 Richard Henderson * Make-lang.in (fortran/f95-lang.o): Update dependencies. (fortran/trans-decl.o, fortran/trans-types.o): Likewise. * gfortran.h (gfc_integer_info): Add c_char, c_short, c_int, c_long, c_long_long. (gfc_logical_info): Add c_bool. (gfc_real_info): Add mode_precision, c_float, c_double, c_long_double. * trans-array.c (gfc_array_allocate): Use TYPE_PRECISION rather than gfc_int[48]_type_node for allocate choice. * trans-decl.c (gfc_build_intrinsic_function_decls): Cache local copies of some kind type nodes. (gfc_build_builtin_function_decls): Likewise. * trans-expr.c (gfc_conv_power_op): Likewise. * trans-intrinsic.c (gfc_conv_intrinsic_index, gfc_conv_intrinsic_scan, gfc_conv_intrinsic_verify, gfc_conv_intrinsic_trim, gfc_conv_intrinsic_repeat): Likewise. * trans-stmt.c (gfc_trans_pause, gfc_trans_stop, gfc_trans_character_select, gfc_trans_allocate): Likewise. * trans-io.c (gfc_pint4_type_node): Move into ... (gfc_build_io_library_fndecls): ... here. Cache local copies of some kind type nodes. * trans-types.c (gfc_type_nodes): Remove. (gfc_character1_type_node, gfc_strlen_type_node): New. (gfc_integer_types, gfc_logical_types): New. (gfc_real_types, gfc_complex_types): New. (gfc_init_kinds): Fill in real mode_precision. (gfc_build_int_type, gfc_build_real_type): New. (gfc_build_complex_type, gfc_build_logical_type): New. (c_size_t_size): New. (gfc_init_types): Loop over kinds. (gfc_get_int_type, gfc_get_real_type): Use gfc_validate_kind. (gfc_get_complex_type, gfc_get_logical_type): Likewise. (gfc_get_character_type_len): Likewise. (gfc_type_for_size): Loop over kinds; use a reduced set of unsigned type nodes. (gfc_type_for_mode): Loop over kinds. (gfc_signed_or_unsigned_type): Use gfc_type_for_size. (gfc_unsigned_type, gfc_signed_type): Use gfc_signed_or_unsigned_type. * trans-types.h (F95_INT1_TYPE, F95_INT2_TYPE, F95_INT4_TYPE, F95_INT8_TYPE, F95_INT16_TYPE, F95_REAL4_TYPE, F95_REAL8_TYPE, F95_REAl16_TYPE, F95_COMPLEX4_TYPE, F95_COMPLEX8_TYPE, F95_COMPLEX16_TYPE, F95_LOGICAL1_TYPE, F95_LOGICAL2_TYPE, F95_LOGICAL4_TYPE, F95_LOGICAL8_TYPE, F95_LOGICAL16_TYPE, F95_CHARACTER1_TYPE, NUM_F95_TYPES, gfc_type_nodes, gfc_int1_type_node, gfc_int2_type_node, gfc_int4_type_node, gfc_int8_type_node, gfc_int16_type_node, gfc_real4_type_node, gfc_real8_type_node, gfc_real16_type_node, gfc_complex4_type_node, gfc_complex8_type_node, gfc_complex16_type_node, gfc_logical1_type_node, gfc_logical2_type_node, gfc_logical4_type_node, gfc_logical8_type_node, gfc_logical16_type_node, gfc_strlen_kind): Remove. (gfc_character1_type_node): Turn in to a variable. (gfc_strlen_type_node): Likewise. 2004-08-30 Tobias Schlueter * gfortran.h (gfc_namespace): Add new field is_block_data. * parse.c (accept_statement): Remove special handling for BLOCK DATA. (parse_block_data): Record BLOCK DATA name, set is_block_data field. * trans.c (gfc_generate_code): Handle BLOCK DATA units. * trans.h (gfc_generate_block_data): Add prototype. * trans-decl.c (gfc_generate_block_data): New function. 2004-08-29 Richard Henderson * trans-const.c (gfc_conv_mpz_to_tree): Use mpz_export. * trans-types.c (gfc_init_kinds): Reject integer kinds larger than two HOST_WIDE_INT. 2004-08-29 Tobias Schlueter PR fortran/13910 * decl.c (free_variable, free_value, gfc_free_data, var_list, var_element, top_var_list, match_data_constant, top_val_list, gfc_match_data): Move here from match.c. (match_old_style_init): New function. (variable_decl): Match old-style initialization. * expr.c (gfc_get_variable_expr): New function. * gfortran.h (gfc_get_variable_expr): Add prototype. * gfortran.texi: Start documentation for supported extensions. * match.c: Remove the functions moved to decl.c. * match.h (gfc_match_data): Move prototype to under decl.c. * symbol.c (gfc_find_sym_tree, gfc_find_symbol): Add/correct comments. 2004-08-29 Steven G. Kargl Paul Brook * check.c (gfc_check_besn, gfc_check_g77_math1): New functions. * f95-lang.c (DO_DEFINE_MATH_BUILTIN): Define. (DEFINE_MATH_BUILTIN, DEFINE_MATH_BUILTIN_C): Use it. (build_builtin_fntypes): New function. (gfc_init_builtin_functions): Use it. * gfortran.h (enum gfc_generic_isym_id): Add GFC_ISYM_{J,Y}{0,1,N} and GFC_ISYM_ERF{,C}. (gfc_c_int_kind): Declare. * intrinsic.c (add_functions): Add [d]bes* and [d]erf*. * intrinsic.h (gfc_check_besn, gfc_check_g77_math1, gfc_resolve_besn, gfc_resolve_g77_math1): Add prototypes. * resolve.c (gfc_resolve_besn, gfc_resolve_g77_math1): New functions. * mathbuiltins.def: Add comment. Change third argument. Use DEFINE_MATH_BUILTIN_C. Add bessel and error functions. * trans-intrinsic.c (BUILT_IN_FUNCTION): Define. (DEFINE_MATH_BUILTIN, DEFINE_MATH_BUILTIN_C): Use it. * trans-types.c (gfc_c_int_kind): Declare. (gfc_init_kinds): Set it. 2004-08-29 Steven G. Kargl Paul Brook * gfortran.h (enum gfc_generic_isym_id): Add GFC_ISYM_GET?ID. (gfc_check_f, gfc_simplify_f): Add f0. * intrinsic.c (do_check): Call f0. Flatten. (add_sym_0): Fix prototype. Set f0. (add_functions): Add getgid, getgid and getuid. (resolve_intrinsic): Remove obsolete comment. (do_simplify): Call f0. * intrinsic.h (gfc_resolve_getgid, gfc_resolve_getpid, gfc_resolve_getuid): Add prototypes. * iresolve.c (gfc_resolve_getgid, gfc_resolve_getpid, gfc_resolve_getuid): New functions. * trans-intrinsic.c (gfc_conv_intrinsic_function): Handle GFC_ISYM_GET?ID. 2004-08-28 Tobias Schlueter * error.c (gfc_error_init_1): Remove blank line in front of function body. Add missing blank. (gfc_buffer_error, error_char, error_string): Remove blank line in front of function body. (show_locus): Add comma in comment. (gfc_clear_warning, gfc_warning_check, gfc_clear_error, gfc_push_error, gfc_pop_error): Remove blank line in front of function body. (gfc_get_errors): Typo fix in comment in front of function. Remove blank line in front of function body. 2004-08-27 Tobias Schlueter * gfortran.h (gfc_default_*_kind): Remove prototypes, add extern variable declaration of same name. * arith.c, check.c, decl.c, dump_parse_tree.c, expr.c, intrinsic.c, io.c, iresolve.c, match.c, options.c, primary.c, resolve.c, simplify.c, symbol.c, trans-const.c, trans-io.c: Replace all calls to gfc_default_*_kind with variable accesses. * trans-types.c: Same as above. (gfc_default_*_kind_1): Rename to gfc_default_*_kind, remove static qualifier. Replace all occurences. (gfc_default_*_kind): Remove functions. 2004-08-26 Richard Henderson * arith.c: Include system.h, not real system headers. (MPZ_NULL, MPF_NULL, DEF_GFC_INTEGER_KIND, DEF_GFC_LOGICAL_KIND, DEF_GFC_REAL_KIND, GFC_SP_KIND, GFC_SP_PREC, GFC_SP_EMIN, GFC_SP_EMAX, GFC_DP_KIND, GFC_DP_PREC, GFC_DP_EMIN, GFC_DP_EMAX, GFC_QP_KIND, GFC_QP_PREC, GFC_QP_EMIN, GFC_QP_EMAX): Remove. (gfc_integer_kinds, gfc_logical_kinds, gfc_real_kinds, gfc_index_integer_kind, gfc_default_integer_kind, gfc_default_real_kind,gfc_default_double_kind, gfc_default_character_kind, gfc_default_logical_kind, gfc_default_complex_kind, validate_integer, validate_real, validate_logical, validate_character, gfc_validate_kind): Move to trans-types.c. (gfc_set_model_kind): Use gfc_validate_kind. (gfc_set_model): Just copy the current precision to default. (gfc_arith_init_1): Use mpfr precision 128 for integer setup. * f95-lang.c (gfc_init_decl_processing): Invoke gfc_init_kinds. * gfortran.h: Update file commentary. * trans-types.c (MAX_INT_KINDS, MAX_REAL_KINDS): New. (gfc_default_integer_kind_1, gfc_default_real_kind_1, gfc_default_double_kind_1, gfc_default_character_kind_1, gfc_default_logical_kind_1, gfc_default_complex_kind_1): New. (gfc_init_kinds): New. (gfc_init_types): Don't set gfc_index_integer_kind here. * trans-types.h (gfc_init_kinds): Declare. * doc/invoke.texi: Clarify DOUBLE PRECISION behaviour wrt -r8. 2004-08-26 Tobias Schlueter * check.c (gfc_check_atan2): New function. * intrinsic.c (add_functions): Use gfc_check_atan2 for ATAN2 * intrinsic.h (gfc_check_atan2): Add prototype. 2004-08-25 Richard Henderson * arith.c (gfc_validate_kind): Add may_fail argument; abort if false and we don't validate the kind. (gfc_check_integer_range, gfc_check_real_range): Update to match. * check.c (kind_check): Likewise. * decl.c (gfc_match_old_kind_spec, gfc_match_kind_spec): Likewise. (match_char_spec, match_logical_spec): Likewise. * gfortran.h (gfc_validate_kind): Likewise. * options.c (gfc_handle_option): Likewise. * primary.c (match_integer_constant, match_real_constant, match_string_constant, match_logical_constant, match_const_complex_part): Likewise. * simplify.c (get_kind, gfc_simplify_bit_size, gfc_simplify_digits, gfc_simplify_epsilon, gfc_simplify_huge, gfc_simplify_ibclr, gfc_simplify_ibset, gfc_simplify_ishft, gfc_simplify_ishftc, gfc_simplify_maxexponent, gfc_simplify_minexponent, gfc_simplify_nearest, gfc_simplify_not, gfc_simplify_precision, gfc_simplify_radix, gfc_simplify_range, gfc_simplify_rrspacing, gfc_simplify_scale, gfc_simplify_spacing, gfc_simplify_tan, gfc_simplify_tiny): Likewise. * trans-intrinsic.c (gfc_conv_intrinsic_aint, gfc_conv_intrinsic_mod, gfc_conv_intrinsic_minmaxloc, gfc_conv_intrinsic_minmaxval, prepare_arg_info): Likewise. 2004-08-25 Tobias Schlueter * expr.c (gfc_check_assign): Add comment. Add new warning. * trans-expr.c (gfc_conv_function_call): Correctly dereference result of pointer valued function when not in pointer assignment. 2004-08-25 Paul Brook * config-lang.in: Remove dead commented line. * module.c: Replace g95 with gfortran in comment. 2004-08-25 Paul Brook PR fortran/17190 * arith.c (gfc_mpfr_to_mpz): Workaround mpfr bug. 2004-08-25 Paul Brook PR fortran/17144 * trans-array.c (gfc_trans_allocate_temp_array): Remove string_length argument. (gfc_trans_array_ctor_element): New function. (gfc_trans_array_constructor_subarray): Use it. (gfc_trans_array_constructor_value): Ditto. Handle constant character arrays. (get_array_ctor_var_strlen, get_array_ctor_strlen): New functions. (gfc_trans_array_constructor): Use them. (gfc_add_loop_ss_code): Update to new gfc_ss layout. (gfc_conv_ss_descriptor): Remember section string length. (gfc_conv_scalarized_array_ref): Ditto. Remove dead code. (gfc_conv_resolve_dependencies): Update to new gfc_ss layout. (gfc_conv_expr_descriptor): Ditto. (gfc_conv_loop_setup): Ditto. Spelling fixes. * trans-array.h (gfc_trans_allocate_temp_array): Update prototype. * trans-const.c (gfc_conv_constant): Update to new gfc_ss layout. * trans-expr.c (gfc_conv_component_ref): Turn error into ICE. (gfc_conv_variable): Set string_length from section. (gfc_conv_function_call): Remove extra argument. (gfc_conv_expr, gfc_conv_expr_reference): Update to new gfc_ss layout. * trans-types.c (gfc_get_character_type_len): New function. (gfc_get_character_type): Use it. (gfc_get_dtype): Return zero for internal types. * trans-types.h (gfc_get_character_type_len): Add prototype. * trans.h (struct gfc_ss): Move string_length out of union. 2004-08-25 Tobias Schlueter * trans.h (build2_v, build3_v): New macros. (build_v): Remove. * f95-lang.c (gfc_truthvalue_conversion): Use build2 instead of build. * trans-array.c (gfc_conv_descriptor_data, gfc_conv_descriptor_offset, gfc_conv_descriptor_dimension, gfc_conv_descriptor_stride, gfc_conv_descriptor_lbound, gfc_conv_descriptor_ubound, gfc_trans_allocate_array_storage, gfc_trans_allocate_temp_array, gfc_trans_array_constructor_subarray, gfc_trans_array_constructor_value, gfc_conv_array_index_ref, gfc_trans_array_bound_check, gfc_conv_array_index_offset, gfc_conv_scalarized_array_ref, gfc_conv_array_ref, gfc_conv_array_ref, gfc_trans_preloop_setup, gfc_trans_scalarized_loop_end, gfc_conv_ss_startstride, gfc_conv_loop_setup, gfc_array_init_size, gfc_conv_array_initializer, gfc_trans_array_bounds, gfc_trans_auto_array_allocation, gfc_trans_dummy_array_bias, gfc_conv_expr_descriptor, gfc_conv_array_parameter, gfc_trans_deferred_array): Use buildN and buildN_v macros instead of build and build_v as appropriate. * trans-common.c (create_common): Same. * trans-decl.c (gfc_trans_auto_character_variable, gfc_trans_entry_master_switch, gfc_generate_function_code): Same. * trans-expr.c (gfc_conv_expr_present, gfc_conv_substring, gfc_conv_component_ref, gfc_conv_unary_op, gfc_conv_powi, gfc_conv_cst_int_power, gfc_conv_string_tmp, gfc_conv_concat_op, gfc_conv_expr_op, gfc_conv_function_call, gfc_trans_structure_assign): Same. * trans-intrinsic.c (build_fixbound_expr, build_round_expr, gfc_conv_intrinsic_aint, gfc_conv_intrinsic_bound, gfc_conv_intrinsic_cmplx, gfc_conv_intrinsic_mod, gfc_conv_intrinsic_dim, gfc_conv_intrinsic_sign, gfc_conv_intrinsic_dprod, gfc_conv_intrinsic_minmax, gfc_conv_intrinsic_anyall, gfc_conv_intrinsic_count, gfc_conv_intrinsic_arith, gfc_conv_intrinsic_minmaxloc, gfc_conv_intrinsic_minmaxval, gfc_conv_intrinsic_btest, gfc_conv_intrinsic_bitop, gfc_conv_intrinsic_singlebitop, gfc_conv_intrinsic_ibits, gfc_conv_intrinsic_ishft, gfc_conv_intrinsic_merge, gfc_conv_intrinsic_strcmp, gfc_conv_allocated, gfc_conv_associated, prepare_arg_info, gfc_conv_intrinsic_spacing, gfc_conv_intrinsic_rrspacing, gfc_conv_intrinsic_trim, gfc_conv_intrinsic_repeat, gfc_conv_intrinsic_iargc): Same. * trans-io.c (set_parameter_value, set_parameter_ref, set_string, set_flag, add_case, io_result, transfer_namelist_element, transfer_expr): Same. * trans-stmt.c (gfc_trans_goto, gfc_trans_return, gfc_trans_if_1, gfc_trans_arithmetic_if, gfc_trans_do, gfc_trans_do_while, gfc_trans_integer_select, gfc_trans_logical_select, gfc_trans_character_select, gfc_trans_forall_loop, gfc_trans_nested_forall_loop, gfc_do_allocate, generate_loop_for_temp_to_lhs, generate_loop_for_rhs_to_temp, compute_inner_temp_size, compute_overall_iter_number, allocate_temp_for_forall_nest, gfc_trans_pointer_assign_need_temp, gfc_trans_forall_1, gfc_evaluate_where_mask, gfc_trans_where_assign, gfc_trans_allocate): Same. * trans-types.c (gfc_get_dtype, gfc_get_array_type_bounds): Same. * trans.c (gfc_add_modify_expr, gfc_finish_block, gfc_build_array_ref, gfc_build_function_call, gfc_trans_runtime_check): Same. 2004-08-25 Tobias Schlueter * trans-const.c (gfc_conv_mpz_to_tree): Change call to build_int_cst to build_int_cst_wide in accordance to Nathan's previous patch. 2004-08-25 Nathan Sidwell * trans-array.c (gfc_trans_array_constructor_value): Adjust build_int_cst calls. * trans-const.c (gfc_build_string_const, gfc_init_constants, gfc_conv_mpz_to_tree, gfc_conv_constant_to_tree): Likewise. * trans-decl.c (gfc_get_symbol_decl, build_entry_thunks, gfc_trans_entry_master_switch): Likewise. * trans-intrinsic.c (gfc_conv_intrinsic_ibits, gfc_conv_intrinsic_len, prepare_arg_info): Likewise. * trans-io.c (add_case, set_error_locus, transfer_namelist_element, transfer_expr): Likewise. * trans-stmt.c (gfc_trans_label_assign, gfc_trans_pause, gfc_trans_stop, gfc_trans_character_select): Likewise. * trans-types.c (gfc_init_types, gfc_get_dtype): Likewise. * trans.c (gfc_trans_runtime_check): Likewise. 2004-08-24 Tobias Schlueter * trans-decl.c, trans-types.c: Add and remove blank lines as required. 2004-08-24 Richard Henderson * trans-const.c (gfc_conv_mpz_to_tree): Fix 64-bit shift warning. 2004-08-24 Tobias Schlueter * resolve.c (merge_argument_lists): Revert unintentionally committed change. 2004-08-24 Tobias Schlueter * trans-decl.c (build_function_decl): Fix spelling in comment. (build_entry_thunks): Remove code with no function. (gfc_build_intrinsic_function_decls): Remove empty line. * resolve.c (resolve_entries): Fix a bunch of comment typos. 2004-08-24 Nathan Sidwell * f95-lang.c (gfc_init_decl_processing): Adjust build_common_tree_nodes call. 2004-08-24 Tobias Schlueter * trans-types.c: Spelling and formatting fixes. 2004-08-23 Richard Henderson * trans-const.c (gfc_conv_mpz_to_tree): Use mpz_getlimbn instead of going through an intermediate string. Fix 32/64 int/long bug. 2004-08-23 Eric Christopher * trans-types.c (gfc_type_for_mode): Remove VECTOR_TYPE_SUPPORTED_P usage. Use build_vector_type_for_mode for vector types. 2004-08-22 Richard Henderson PR 13465 * data.c (find_con_by_offset): Search ordered list; handle elements with repeat counts. (gfc_assign_data_value_range): New. * gfortran.h (struct gfc_data_value): Make repeat unsigned. (gfc_assign_data_value_range): Declare. * match.c (top_val_list): Extract repeat count into a temporary. * resolve.c (values): Make left unsigned. (next_data_value): Don't decrement left. (check_data_variable): Use gfc_assign_data_value_range. 2004-08-22 Tobias Schlueter * trans-const.c, trans-decl.c, trans-expr.c: Spelling fixes. 2004-08-22 Tobias Schlueter * check.c (gfc_check_reduction): Rename to ... (check_reduction): ... this. Make static. Don't check type of first argument. (gfc_check_minval_maxval, gfc_check_prodcut_sum): New functions. * intrinsic.c (add_functions): Change MAXVAL, MINVAL, PRODUCT and SUM to use new check functions. (check_specific): Change logic to call new functions. * intrinsic.h (gfc_check_minval_maxval, gfc_check_product_sum): Add prototypes. (gfc_check_reduction): Remove prototype. 2004-08-20 Paul Brook Canqun Yang PR fortran/17077 * trans-array.c (gfc_conv_array_parameter): Pass correct pointer for automatic arrays. * trans-types.c (gfc_get_nodesc_array_type): Add comment. 2004-08-19 Tobias Schlueter (Port from g95) PR fortran/17074 * match.c (match_simple_forall, match_simple_where): Forward-declare. (gfc_match_if): Order statement list alphabetically, add WHERE and FORALL, remove double PAUSE. (gfc_match_simple_where, match_forall_header, gfc_match_simple_forall): New functions. (gfc_match_forall): Use match_forall_header. 2004-08-19 Paul Brook PR fortran/17091 * gfortran.h (gfc_access): Give ACCESS_UNKNOWN value 0. * symbol.c (gfc_clear_attr): Use memset. 2004-08-19 Paul Brook PR fortran/14976 PR fortran/16228 * data.c (assign_substring_data_value): Remove. (create_character_intializer): New function. (gfc_assign_data_value): Track the typespec for the current subobject. Use create_character_intializer. 2004-08-19 Erik Schnetter PR fortran/16946 * check.c (gfc_check_reduction): New function. (gfc_check_minval_maxval): Removed. (gfc_check_product): Removed. (gfc_check_sum): Removed. * intrinsic.h: Add/remove declarations for these. * gfortran.h: Add field f3red to union gfc_check_f. * intrinsic.c (add_sym_3red): New function. (add_functions): Register maxval, minval, product, and sum intrinsics through add_sym_3red. (check_specific): Handle f3red union field. * iresolve.c: Whitespace change. 2004-08-18 Paul Brook * trans-types.c (gfc_sym_type): Use pointer types for optional args. 2004-08-18 Victor Leikehman PR fortran/13278 * trans-io.c (transfer_namelist_element): New. Recursively handle derived-type variables. Pass string lengths. (build_dt): Code moved to build_namelist, with some changes and additions. (gfc_build_io_library_fndecls): Declare the fifth argument in st_set_nml_var_char -- string_length. 2004-08-17 Paul Brook Tobias Schlueter PR fortran/13082 * decl.c (get_proc_name): Update mystery comment. (gfc_match_entry): Check for errors earlier. Add entry point to list. * dump-parse-tree.c (gfc_show_code_node): Print EXEC_ENTRY nodes. * gfortran.h (symbol_attribute): Add entry_master. Document entry. (struct gfc_entry_list): Define. (gfc_get_entry_list): Define. (struct gfc_namespace): Add refs and entries. (enum gfc_exec_op): Add EXEC_ENTRY. (struct gfc_code): Add ext.entry. * module.c (ab_attribute, attr_bits): Remove AB_ENTRY. (mio_symbol_attribute): Don't save/reture addr->entry. (mio_namespace_ref): Refcount namespaces. * parse.c (accept_statement): Handle ST_ENTRY. (gfc_fixup_sibling_symbols): Mark symbol as referenced. (parse_contained): Fixup sibling references to entry points after parsing the procedure body. * resolve.c (resolve_contained_fntype): New function. (merge_argument_lists, resolve_entries): New functions. (resolve_contained_functions): Use them. (resolve_code): Handle EXEC_ENTRY. (gfc_resolve): Call resolve_entries. * st.c (gfc_free_statement): Handle EXEC_ENTRY. * symbol.c (gfc_get_namespace): Refcount namespaces. (gfc_free_namespace): Ditto. * trans-array.c (gfc_trans_dummy_array_bias): Treat all args as optional when multiple entry points are present. * trans-decl.c (gfc_get_symbol_decl): Remove incorrect check. (gfc_get_extern_function_decl): Add assertion. Fix coment. (create_function_arglist, trans_function_start, build_entry_thunks): New functions. (gfc_build_function_decl): Rename ... (build_function_decl): ... to this. (gfc_create_function_decl): New function. (gfc_generate_contained_functions): Use it. (gfc_trans_entry_master_switch): New function. (gfc_generate_function_code): Use new functions. * trans-stmt.c (gfc_trans_entry): New function. * trans-stmt.h (gfc_trans_entry): Add prototype. * trans-types.c (gfc_get_function_type): Add entry point argument. * trans.c (gfc_trans_code): Handle EXEC_ENTRY. (gfc_generate_module_code): Call gfc_create_function_decl. * trans.h (gfc_build_function_decl): Remove. (gfc_create_function_decl): Add prototype. 2004-08-15 Andrew Pinski PR fortran/17030 * f95-lang.c (gfc_init_builtin_functions): Initialize the builtins for cabs{,f} and copysign{,f}. * trans-decl.c (gfor_fndecl_math_cabsf): Delete. (gfor_fndecl_math_cabs): Delete. (gfor_fndecl_math_sign4): Delete. (gfor_fndecl_math_sign8): Delete. (gfc_build_intrinsic_function_decls): Remove the initializing of cabs{,f} and copysign{,f} functions. * trans-intrinsic.c (gfc_conv_intrinsic_abs): Use the builtins instead of the functions definitions. (gfc_conv_intrinsic_sign): Likewise. * trans.h (gfor_fndecl_math_cabsf): Delete. (gfor_fndecl_math_cabs): Delete. (gfor_fndecl_math_sign4): Delete. (gfor_fndecl_math_sign8): Delete. 2004-08-15 Nathan Sidwell * trans-array.c (gfc_trans_array_constructor_value): Use build_int_cst. * trans-const.c (gfc_build_string_const, gfc_init_constants, gfc_conv_mpz_to_tree, gfc_conv_constant_to_tree): Likewise. * trans-decl.c (gfc_get_symbol_decl): Likewise. * trans-intrinsic.c (gfc_conv_intrinsic_ibits, gfc_conv_intrinsic_len, prepare_arg_info): Likewise. * trans-io.c (add_case, set_error_locus, build_dt, transfer_expr): Likewise. * trans-stmt.c (gfc_trans_label_assign, gfc_trans_pause, gfc_trans_stop, gfc_trans_character_select): Likewise. * trans-types.c (gfc_init_types, gfc_get_dtype): Likewise. * trans.c (gfc_trans_runtime_check): Likewise. 2004-08-14 Paul Brook * trans-decl.c (gfc_build_function_decl): Remove dead code. 2004-08-14 Paul Brook * trans-arry.c (gfc_trans_auto_array_allocation): Remove unused var. 2004-08-13 Tobias Schlueter * gfortran.h: Add comments. * parse.c (parse_contained): Fix comment typo. * resolve.c (was_declared): Ditto. * symbol.c: Ditto. 2004-08-11 Paul Brook PR fortran/16917 * intrinsic.c (add_functions): Add dfloat as an alias for dble. 2004-08-10 Richard Henderson * f95-lang.c (gfc_init_builtin_functions): Remove __builtin_stack_alloc, add __builtin_alloca. * trans-array.c (gfc_trans_auto_array_allocation): Use DECL_EXPR. * trans-decl.c (gfc_trans_auto_character_variable): Likewise. 2004-08-10 Paul Brook * trans-io.c (transfer_expr): Handle pointters. 2004-08-10 Paul Brook PR fortran/16919 * trans-array.c (gfc_add_loop_ss_code): Handle GFC_SS_COMPONENT. (gfc_conv_array_index_offset): Allow "temporary" with nonzero delta. (gfc_trans_preloop_setup, gfc_trans_scalarized_loop_boundary): Handle GFC_SS_COMPONENT. (gfc_conv_ss_startstride): Ditto. Set ss->shape. (gfc_conv_loop_setup): Tweak commends. Remove dead code. Use ss->shape. (gfc_conv_array_initializer): Call specific initializer routines. * trans-expr.c (gfc_trans_structure_assign): New function. (gfc_trans_subarray_assign): New function. (gfc_trans_subcomponent_assign): New fucntion (gfc_conv_structure): Use them. * trans.h (gfc_ss_type): Add GFC_SS_COMPONENT. (gfc_ss): Add shape. 2004-08-08 Victor Leikehman * simplify.c (gfc_simplify_shape): Bugfix. * expr.c (gfc_copy_shape_excluding): New function. * gfortran.h (gfc_get_shape): Bugfix. (gfc_copy_shape_excluding): Added declaration. * iresolve.c (gfc_resolve_all, gfc_resolve_any, gfc_resolve_count, gfc_resolve_cshift, gfc_resolve_eoshift, gfc_resolve_lbound, gfc_resolve_ubound, gfc_resolve_transpose): Added compile time resolution of shape. 2004-08-06 Janne Blomqvist * intrinsic.c (add_subroutines): Add getenv and get_environment_variable. (add_sym_5s): New function. * intrinsic.h (gfc_resolve_get_environment_variable): Add prototype. * iresolve.c (gfc_resolve_get_environment_variable): New function. 2004-08-06 Feng Wang * f95-lang.c (gfc_init_builtin_functions): Fix the number of __builtin_pow[f] arguments. 2004-08-06 Steven G. Kargl * arith.c: Add #define for model numbers. Remove global GMP variables. (natural_logarithm,common_logarithm,exponential,sine, cosine,arctangent,hypercos,hypersine ): Remove. (gfc_mpfr_to_mpz,gfc_set_model_kind,gfc_set_model): New functions. (arctangent2,gfc_arith_init_1,gfc_arith_done_1 gfc_check_real_range, gfc_constant_result, gfc_range_check, gfc_arith_uminus,gfc_arith_plus, gfc_arith_minus, gfc_arith_times, gfc_arith_divide,complex_reciprocal,complex_pow_ui, gfc_arith_power,gfc_compare_expr,compare_complex,gfc_convert_real, gfc_convert_complex,gfc_int2real,gfc_int2complex, gfc_real2int,gfc_real2real,gfc_real2complex, gfc_complex2int,gfc_complex2real,gfc_complex2complex): Convert GMP to MPFR, use new functions. * arith.h: Remove extern global variables. (natural_logarithm,common_logarithm,exponential, sine, cosine, arctangent,hypercos,hypersine): Remove prototypes. (arctangent2): Update prototype from GMP to MPFR. (gfc_mpfr_to_mpz, gfc_set_model_kind,gfc_set_model): Add prototypes. * dump-parse-tree.c (gfc_show_expr): Convert GMP to MPFR. * expr.c (free_expr0,gfc_copy_expr): Convert GMP to MPFR. * gfortran.h (GFC_REAL_BITS): Remove. (arith): Add ARITH_NAN. Include mpfr.h. Define GFC_RND_MODE. Rename GCC_GFORTRAN_H GFC_GFC_H. (gfc_expr): Convert GMP to MPFR. * module.c: Add arith.h, correct type in comment. (mio_gmp_real): Convert GMP to MPFR. (mio_expr): Use gfc_set_model_kind(). * primary.c: Update copyright date with 2004. (match_real_constant,match_const_complex_part): Convert GMP to MPFR. * simplify.c: Remove global GMP variables (gfc_simplify_abs,gfc_simplify_acos,gfc_simplify_aimag, gfc_simplify_aint,gfc_simplify_dint,gfc_simplify_anint, gfc_simplify_dnint,gfc_simplify_asin,gfc_simplify_atan, gfc_simplify_atan2,gfc_simplify_ceiling,simplify_cmplx, gfc_simplify_conjg,gfc_simplify_cos,gfc_simplify_cosh, gfc_simplify_dim,gfc_simplify_dprod,gfc_simplify_epsilon, gfc_simplify_exp,gfc_simplify_exponent,gfc_simplify_floor, gfc_simplify_fraction,gfc_simplify_huge,gfc_simplify_int, gfc_simplify_ifix,gfc_simplify_idint,gfc_simplify_log, gfc_simplify_log10,simplify_min_max,gfc_simplify_mod, gfc_simplify_modulo,gfc_simplify_nearest,simplify_nint, gfc_simplify_rrspacing,gfc_simplify_scale, gfc_simplify_set_exponent,gfc_simplify_sign,gfc_simplify_sin, gfc_simplify_sinh,gfc_simplify_spacing,gfc_simplify_sqrt, gfc_simplify_tan,gfc_simplify_tanh,gfc_simplify_tiny, gfc_simplify_init_1,gfc_simplify_done_1): Convert GMP to MPFR. Use new functions. * trans-const.c (gfc_conv_mpfr_to_tree): Rename from gfc_conv_mpf_to_tree. Convert it to use MPFR (gfc_conv_constant_to_tree): Use it. * trans-const.h: Update prototype for gfc_conv_mpfr_to_tree(). * trans-intrinsic.c: Add arith.h, remove gmp.h (gfc_conv_intrinsic_aint,gfc_conv_intrinsic_mod): Convert GMP to MPFR. 2004-08-06 Victor Leikehman Paul Brook * trans-array.c (gfc_trans_allocate_array_storage, gfc_trans_allocate_temp_array, gfc_add_loop_ss_code, gfc_conv_loop_setup): For functions, if the shape of the result is not known in compile-time, generate an empty array descriptor for the result and let the callee to allocate the memory. (gfc_trans_dummy_array_bias): Do nothing for pointers. (gfc_conv_expr_descriptor): Use function return values directly. * trans-expr.c (gfc_conv_function_call): Always add byref call insn to pre chain. (gfc_trans_pointer_assignment): Add comments. (gfc_trans_arrayfunc_assign): Don't chain on expression. 2004-08-01 Roger Sayle * options.c (gfc_init_options): Don't warn about the use GNU extensions by default. (gfc_post_options): Warn about GNU extensions with -pedantic. (gfc_handle_option): Don't warn about GNU extensions with -std=gnu. 2004-07-30 Richard Henderson * trans-expr.c (gfc_conv_expr_reference): Create a CONST_DECL for TREE_CONSTANTs. 2004-07-25 Richard Henderson * trans-decl.c (gfc_build_function_decl): Set DECL_ARTIFICIAL and DECL_IGNORED_P on RESULT_DECL. (gfc_generate_constructors): Likewise. 2004-07-18 Tobias Schlueter PR fortran/16465 * lang.opt (ffixed-line-length-none, ffixed-line-length-): New options. (ffixed-line-length-80, ffixed-line-length-132): Remove. * options.c (gfc_handle_options): Deal with changed options. * scanner.c (load_line): Change second arg to 'char **', allocate if pointing to NULL. Keep track of buffer's length. Adapt buffer size to overlong lines. Pad lines to full length in fixed form. (load_file): Adapt to new interface of load_line. 2004-07-17 Joseph S. Myers * trans.h (builtin_function): Declare. 2004-07-16 Tobias Schlueter PR fortran/16404 (parts ported from g95) * parse.h (gfc_state_data): New field do_variable. (gfc_check_do_variable): Add prototype. * parse.c (push_state): Initialize field 'do_variable'. (gfc_check_do_variable): New function. (parse_do_block): Remember do iterator variable. (parse_file): Initialize field 'do_variable'. * match.c (gfc_match_assignment, gfc_match_do, gfc_match_allocate, gfc_match_nullify, gfc_match_deallocate): Add previously missing checks. (gfc_match_return): Reformat error message. * io.c (match_out_tag): New function. (match_open_element, match_close_element, match_file_element, match_dt_element): Call match_out_tag instead of match_vtag where appropriate. (match_io_iterator, match_io_element): Add missing check. (match_io): Reformat error message. (match_inquire_element): Call match_out_tag where appropriate. * parse.c (gfc_check_do_variable): Fix error locus. 2004-07-15 Tobias Schlueter PR fortran/15129 * trans-decl.c (gfc_build_function_decl): Create a new chardecl for every assumed length character dummy argument. PR fortran/15140 * trans-decl.c (gfc_trans_deferred_vars): Remove bogus assertion. PR fortran/13792 * simplify.c (gfc_simplify_bound): Copy the bound expression. 2004-07-15 Tobias Schlueter PR fortran/15324 * trans-array.c gfc_trans_g77_array, gfc_trans_dummy_array_bias): Don't call gfc_trans_string_init for assumed length characters. (gfc_conv_expr_descriptor): Set se->string_length if dealing with a character expression. (gfc_cvonv_array_parameter): Pass string length when passing character array according to g77 conventions. 2004-07-12 Paul Brook * expr.c (gfc_check_assign_symbol): Handle pointer assignments. * trans-array.c (gfc_trans_auto_array_allocation): Remove initialization code. * trans-common.c (create_common): Use gfc_conv_initializer. * trans-decl.c (gfc_get_symbol_decl): Use gfc_conv_initializer. * trans-expr.c (gfc_conv_initializer): New function. (gfc_conv_structure): Use it. * trans.h (gfc_conv_initializer): Add prototype. 2004-07-11 Paul Brook PR fortran/15986 * parse.c (gfc_fixup_sibling_symbols): Also look for untyped variables. (parse_contained): Mark contained symbols as referenced. 2004-07-11 Tobias Schlueter PR fortran/16455 * module.c (gfc_dump_module, gfc_use_module): Print locus when opening of module file fails. PR fortran/16404 * io.c (match_io): Flag 'WRITE(...), ...' as extension. PR fortran/16404 * match.c (gfc_match_program): A program name is obligatory. (gfc_match_return): RETURN in main program is an extension. (gfc_match_block_data): A space is required before a block data name. PR fortran/16433 * primary.c (match_boz_constant): Call gfc_notify_std only if we actually have a non-standard boz-literal-constant. PR fortran/15754 * expr.c (gfc_check_assign): Print ranks if incompatible. Issue warning if assigning NULL(). 2004-07-11 Joseph S. Myers * f95-lang.c (set_block): Remove. (gfc_clear_binding_stack): New. (LANG_HOOKS_CLEAR_BINDING_STACK): Define. (struct binding_level): Remove block_created_by_back_end. (clear_binding_level): Likewise. (poplevel): Don't handle block_created_by_back_end. 2004-07-10 Tobias Schlueter * trans-decl.c (gfc_create_module_variable): Nothing to do if symbol is in common, because we ... (gfc_generate_module_vars): Call gfc_trans_common. 2004-07-10 Paul Brook * trans-array.c (gfc_build_null_descriptor): New function. (gfc_trans_static_array_pointer): Use it. * trans-array.h (gfc_build_null_descriptor): Add prototype. * trans-expr.c (gfc_conv_structure): Handle array pointers. 2004-07-10 Tobias Schlueter PR fortran/16336 * decl.c (gfc_match_save): Use-associated common block doesn't collide. * gfortran.h (gfc_common_head): Add new field 'name'. Fix typo in comment after #endif. * match.c (gfc_get_common): Add new argument from_common, mangle name if flag is set, fill in new field in structure gfc_common_head. (match_common): Set new arg in call to gfc_get_common, use-associated common block doesn't collide. * match.h (gfc_get_common): Adapt prototype. * module.c (load_commons): Set new arg in call to gfc_get_common. * symbol.c (free_common_tree): New function. (gfc_free_namespace): Call new function. * trans-common.c (several functions): Remove argument 'name', use name from gfc_common_head instead. 2004-07-10 Tobias Schlueter * expr.c (gfc_check_pointer_assign): Verify that rank of the LHS and RHS match. Return early if the RHS is NULL(). PR fortran/16336 * match.c (match_common): Fix error reporting for used common. PR fortran/15969 * trans-expr.c (gfc_conv_structure): Handle initialization of scalar pointer components. * parse.c (decode_statement): Fix matching of BLOCK DATA. * trans-decl.c (generate_local_decl): Remove workaround obsoleted by fix for PR 15481. 2004-07-10 Tobias Schlueter * trans-common.c: Fix whitespace issues, make variable names more readable. (create_common): Additionally, make loop logic more obvious. 2004-07-10 Tobias Schlueter Paul Brook PR fortran/13415 * trans-common.c (calculate_length): Remove ... (get_segment_info): Merge into here. Save field type. (build_field): Use saved type. (create_common, new_condition, new_segment, finish_equivalences): Use new get_segment_info. * trans-types.c: Update comment. 2004-07-09 Tobias Schlueter PR fortran/14077 * moduele.c (mio_symbol): Don't I/O initial values unless symbol is a parameter. 2004-07-09 Tobias Schlueter PR fortran/13201 * resolve.c (resolve_symbol): Verify that the shape of a parameter array is not only explicit, but also constant. * array.c (gfc_is_compile_time_shape): New function. * gfortran.h (gfc_is_compile_time_shape): Add prototype. 2004-07-09 Tobias Schlueter PR fortran/15481 PR fortran/13372 PR fortran/13575 PR fortran/15978 * module.c (write_symbol, write_symtree): Remove workaround. * primary.c (match_actual_arglist): Enhance comment. (gfc_match_rvalue): Handle function call with first argument a keyword argument correctly. * resolve.c (resolve_symbol): Change call to gfc_set_default_type to issue error if no implicit type can be found. * trans-decl.c (gfc_create_module_variable): Remove workaround. 2004-07-08 Paul Brook * intrinsic.c (add_sym_4s): New function. (add_subroutines): Change gfc_add_sym_? to gfc_add_sym_?s. 2004-07-04 Janne Blomqvist Paul Brook PR fortran/15280 PR fortran/15665 * gfortran.h (enum gfc_generic_isym_id): Add GFC_ISYM_IARGC and GFC_ISYM_COMMAND_ARGUMENT_COUNT. * intrinsic.c (add_functions): Identify iargc. Add command_argument_count. (add_subroutines): Resolve getarg. Add get_command and get_command_argument. * intrinsic.h (gfc_resolve_getarg, gfc_resolve_get_command, gfc_resolve_get_command_argument): Add prototypes. * iresolve.c (gfc_resolve_getarg, gfc_resolve_get_command, gfc_resolve_get_command_argument): New functions. * trans-decl.c (gfor_fndecl_iargc): New variable. (gfc_build_intrinsic_function_decls): Set it. * trans-intrinsic.c (gfc_conv_intrinsic_iargc): New function. (gfc_conv_intrinsic_function): Use it. * trans.h (gfor_fndecl_iargc): Declare. 2004-07-04 Matthias Klose * Make-lang.in: Generate and install gfortran man page. * invoke.texi: Remove extra '@c man end'. 2004-07-04 Richard Henderson * f95-lang.c (gfc_mark_addressable): Don't put_var_into_stack. 2004-07-04 Paul Brook * decl.c (gfc_match_implicit_range): Don't use typespec. (gfc_match_implicit): Handle character selectors. * gfortran.h (gfc_set_implicit): Remove prototype. (gfc_add_new_implicit_range, gfc_merge_new_implicit): Update. * parse.c (accept_statement): Don't call gfc_set_implicit. * symbol.c (new_ts): Remove. (gfc_set_implicit_none): Use same loop bounds as other functions. (gfc_set_implicit): Remove. (gfc_clear_new_implicit, gfc_add_new_implicit_range): Only set flags. (gfc_merge_new_implicit): Combine with gfc_set_implicit. 2004-06-30 Richard Henderson * match.c (var_element): Remove unused variable. * trans-decl.c (gfc_generate_function_code): Don't set x_whole_function_mode_p. (gfc_generate_constructors): Likewise. 2004-06-30 Richard Henderson * trans-decl.c (gfc_generate_function_code): Don't set immediate_size_expand. (gfc_generate_constructors): Likewise. 2004-06-30 Tobias Schlueter PR fortran/16161 * decl.c (gfc_match_type_spec): Rename second argument to 'implicit_flag', reverse meaning. Don't match_char_spec if 'implicit_flag' is set. Rename to ... (match_type_spec): ... this. (gfc_match_implicit_none, match_implicit_range): Move here from match.c. (gfc_match_implicit): Move here from match.c, try to match_char_len if match_implicit_range doesn't succeed for CHARACTER implicits. Call renamed fucntion match_type_spec. (gfc_match_data_decl, match_prefix): Call renamed function match_type_spec. * match.c (gfc_match_implicit_none, match_implicit_range, gfc_match_implicit): Move to decl.c. * match.h (gfc_match_implicit_none, gfc_match_implicit): Move protoypes to section 'decl.c'. (gfc_match_type_spec): Remove prototype. 2004-06-29 Tobias Schlueter * decl.c, interface.c, symbol.c, trans-common.c: Add 2004 to copyright years. 2004-06-29 Steven Bosscher Make sure types in assignments are compatible. Mostly mechanical. * trans-const.h (gfc_index_one_node): New define. * trans-array.c (gfc_trans_allocate_array_storage, gfc_trans_allocate_temp_array, gfc_trans_array_constructor_subarray, gfc_trans_array_constructor_value, gfc_trans_array_constructor, gfc_conv_array_ubound, gfc_conv_array_ref, gfc_trans_scalarized_loop_end, gfc_conv_section_startstride, gfc_conv_ss_startstride, gfc_conv_loop_setup, gfc_array_init_size, gfc_trans_array_bounds, gfc_trans_dummy_array_bias, gfc_conv_expr_descriptor, gfc_trans_deferred_array): Use the correct types in assignments, conversions and conditionals for expressions. * trans-expr.c (gfc_conv_expr_present, gfc_conv_substring, gfc_conv_unary_op, gfc_conv_cst_int_power, gfc_conv_string_tmp, gfc_conv_function_call, gfc_trans_pointer_assignment, gfc_trans_scalar_assign): Likewise. * trans-intrinsic.c (build_fixbound_expr, gfc_conv_intrinsic_bound, gfc_conv_intrinsic_anyall, gfc_conv_intrinsic_count, gfc_conv_intrinsic_minmaxloc, gfc_conv_intrinsic_btest, gfc_conv_intrinsic_singlebitop, gfc_conv_intrinsic_ishft, gfc_conv_intrinsic_ishftc, gfc_conv_intrinsic_strcmp, gfc_conv_allocated, gfc_conv_associated, gfc_conv_intrinsic_rrspacing, gfc_conv_intrinsic_trim): Likewise. * trans-io.c (set_string): Likewise. * trans-stmt.c (gfc_trans_do, gfc_trans_forall_loop, gfc_do_allocate, generate_loop_for_temp_to_lhs, generate_loop_for_rhs_to_temp, compute_inner_temp_size, compute_overall_iter_number, gfc_trans_assign_need_temp, gfc_trans_pointer_assign_need_temp, gfc_trans_forall_1, gfc_evaluate_where_mask, gfc_trans_where_assign, gfc_trans_where_2): Likewise. * trans-types.c (gfc_get_character_type, gfc_build_array_type, gfc_get_nodesc_array_type, gfc_get_array_type_bounds): Likewise. * trans.c (gfc_add_modify_expr): Add sanity check that types for the lhs and rhs are the same for scalar assignments. 2004-06-29 Tobias Schlueter * dump-parse-tree.c (show_common): New function. (gfc_show_namespace): Show commons. 2004-06-29 Tobias Schlueter Andrew Vaught PR fortran/13249 PR fortran/15481 * decl.c (gfc_match_save): Adapt to new common structures, don't allow saving USE-associated common. * dump-parse-tree (gfc_show_attr): (saved_)common are not symbol attributes any longer. (gfc_show_symbol): Don't show old-style commons any longer. (gfc_show_namespace): Adapt call to gfc_traverse_symtree to new interface. * gfortran.h (symbol_attribute): Remove common and saved_common attributes. (gfc_symbol): Remove common_head element. (gfc_common_head): New struct. (gfc_get_common_head): New macro. (gfc_symtree): Add field 'common' to union. (gfc_namespace): Add field 'common_root'; change type of field 'blank_common' to blank_common. (gfc_add_data): New prototype. (gfc_traverse_symtree): Expect a symtree as first argument instead of namespace. * match.c (gfc_get_common): New function. (match_common_name): Change to take char * as argument, adapt, fix bug with empty name. (gfc_match_common): Adapt to new data structures. Disallow redeclaration of USE-associated COMMON-block. Fix bug with empty common. (var_element): Adapt to new common structures. * match.h (gfc_get_common): Declare. * module.c: Add 2004 to copyright years, add commons to module file layout description. (ab_attribute, attr_bits, mio_symbol_attributes): Remove code for removed attributes. (mio_symbol): Adapt to new way of storing common relations. (load_commons): New function. (read_module): Skip common list on first pass, load_commons at second. (write_commons): New function. (write_module): Call write_commons(). * symbol.c (gfc_add_saved_comon, gfc_add_common): Remove functions related to removed attributes. (gfc_add_data): New function. (gfc_clear_attr): Don't set removed attributes. (gfc_copy_attr): Don't copy removed attributes. (traverse_symtree): Remove. (gfc_traverse_symtree): Don't traverse symbol tree of the passed namespace, but require a symtree to be passed instead. Unify with traverse_symtree. (gfc_traverse_ns): Call gfc_traverse_symtree according to new interface. (save_symbol): Remove setting of removed attribute. * trans-common.c (gfc_sym_mangled_common_id): Change to take 'char *' argument instead of 'gfc_symbol'. (build_common_decl, new_segment, translate_common): Adapt to new data structures, add new argument name. (create_common): Adapt to new data structures, add new argument name. Fix typo in intialization of derived types. (finish_equivalences): Add second argument in call to create_common. (named_common): take 'gfc_symtree' instead of 'gfc_symbol'. (gfc_trans_common): Adapt to new data structures. * trans-decl.c (gfc_create_module_variables): Remove test for removed attribute. 2004-06-29 Tobias Schlueter * io.c: Add 2004 to copyright years. 2004-06-29 Tobias Schlueter Andrew Vaught * gfortran.h (gfc_gsymbol): New typedef. (gfc_gsym_root): New variable. (gfc_get_gsymbol, gfc_find_gsym): New prototypes. * parse.c (global_used): New function. (parse_block_data): Check for double empty BLOCK DATA, use global symbol table. (parse_module): Use global symbol table. (add_global_procedure, add_global_program): New functions. (gfc_parse_file): Use global symbol table. * symbol.c (gfc_gsym_root): New variable. (gfc_find_gsym, gsym_compare, gfc_get_gsymbol): New functions. 2004-06-29 Tobias Schlueter * module.c (mio_gmp_real): Correct writing of negative numbers. 2004-06-29 Tobias Schlueter PR fortran/15963 * expr.c (check_intrinsic_op): Allow comparison of characters. Make logic easier. 2004-06-26 Tobias Schlueter Andrew Vaught * decl.c (contained_procedure): New function. (match_end): Verify correctness of END STATEMENT in all cases. 2004-06-26 Tobias Schlueter Andrew Vaught PR fortran/15190 * decl.c (gfc_match_type_spec), io.c (match_io), parse.c (decode_statement): Enforce required space in free-form. 2004-06-22 Richard Kenner * f95-lang.c (LANG_HOOKS_GIMPLE_BEFORE_INLINING): Deleted. * trans-array.c (gfc_conv_descriptor_data): Add operand for COMPONENT_REF. (gfc_conv_descriptor_offset, gfc_conv_descriptor_dtype): Likewise. (gfc_conv_descriptor_dimension, gfc_conv_descriptor_stride): Likewise. (gfc_conv_descriptor_lbound, gfc_conv_descriptor_ubound): Likewise. * trans-common.c (create_common): Likewise. * trans-expr.c (gfc_conv_component_ref): Likewise. * trans-io.c (set_parameter_value): Likewise. (set_parameter_ref, set_string, set_flag, io_result): Likewise. (transfer_expr): Likewise. * trans-decl.c (gfc_trans_auto_character_variable): Set up to get DECL_SIZE and DECL_SIZE_UNIT gimplified. (gfc_gimplify_function): New function. (gfc_generate_function-code): Properly handle nested functions. * trans.c (gfc_build_array_ref): Add two new operands for ARRAY_REF. 2004-06-22 Janne Blomqvist PR fortran/15750 * io.c (gfc_match_inquire): Bugfix for iolength related stuff. (gfc_resolve_inquire): Resolve the iolength tag. Return SUCCESS at end of function if no failure has occured. * resolve.c (resolve_code): Resolve if iolength is encountered. * trans-io.c: (ioparm_iolength, iocall_iolength, iocall_iolength_done): New variables. (last_dt): Add IOLENGTH. (gfc_build_io_library_fndecls ): Set iolength related variables. (gfc_trans_iolength): Implement. (gfc_trans_dt_end): Treat iolength as a third form of data transfer. 2004-06-21 Tobias Schlueter * resolve.c (resolve_symbol): Add comment in function body. (check_data_variable): Change type of mark to ar_type, adapt code accordingly. 2004-06-21 Tobias Schlueter * array.c (gfc_insert_constructor): Avoid redundant call to mpz_comp. Add 2004 to copyright years. 2004-06-21 Joseph S. Myers * trans.h (stmtblock_t): Change has_scope to unsigned int. 2004-06-20 Steven G. Kargl * arith.c (gfc_range_check): correct complex underflow. 2004-06-15 Tobias Schlueter PR fortran/15962 * match.c (match_case_selector): Call gfc_match_init_expr instead of gfc_match_expr. * resolve.c (validate_case_label_expr): No need to check for constant, since it wouldn't have been matched with the fix to match.c. 2004-06-14 Tobias Schlueter PR fortran/15211 * trans-intrinsic.c (gfc_conv_intrinsic_len): Deal with arrays of strings. 2004-06-14 Tobias Schlueter PR fortran/15510 * trans-deecl.c (generate_local_decl): Do not issue warning for unused variables if they're use associated. 2004-06-14 Tobias Schlueter Andrew Vaught PR fortran/14928 * gfortran.h (gfc_check_f): Add new field f3ml. * check.c (gfc_check_minloc_maxloc): Take argument list instead of individual arguments, reorder if necessary. * intrinsic.h (gfc_check_minloc_maxloc): ... adapt prototype. * intrinsic.c (add_sym_3ml): New function. (add_functions): Change to add_sym_3ml for MINLOC, MAXLOC. (check_specific): Catch special case MINLOC, MAXLOC. 2004-06-14 Paul Brook * intrinsic.c (add_sym_2s): Use correct function types. 2004-06-12 Tobias Schlueter * Make-lang.in (F95_OBJS, F95_PARSER_OBJS): Alphabetize. Move data.c * data.c (gfc_get_section_index): Remove dependency on trans.h. 2004-06-12 Steven G. Kargl * check.c (gfc_check_second_sub, gfc_check_irand, gfc_check_rand gfc_check_srand, gfc_check_etime, gfc_check_etime_sub): New functions. * gfortran.h (gfc_generic_isym_id): New symbols GFC_ISYM_ETIME, GFC_ISYM_IRAND, GFC_ISYM_RAND, GFC_ISYM_SECOND. * trans-intrinsic.c: Use symbols. * intrinsic.c (add_sym_2s): New function. * intrinsic.c: Add etime, dtime, irand, rand, second, srand. * intrinsic.h: Function prototypes. * iresolve.c (gfc_resolve_etime_sub, gfc_resolve_second_sub gfc_resolve_srand): New functions. 2004-06-12 Tobias Schlueter PR fortran/14957 * decl.c (gfc_match_end): Require END {SUBROUTINE|FUNCTION} for contained procedure. 2004-06-12 Tobias Schlueter PR fortran/12841 * interface.c (compare_parameter, compare_actual_formal): Don't check types and array shapes for NULL() * trans-expr.c (conv_function_call): No double indirection for NULL() 2004-06-09 Toon Moene * trans-expr.c (gfc_conv_cst_int_power): Compute x**(-n) by converting it to (1/x)**n instead of 1/x**n. 2004-06-09 Tobias Schlueter PR fortran/13372 * module.c (write_symbol, write_symtree): Don't write symbols wrongly added to namespace. * trans-decl.c (gfc_create_module_variable): Don't create a backend decl for a symbol incorrectly added to namespace. 2004-06-09 Tobias Schlueter PR fortran/13201 * resolve.c (resolve_symbol): Verify that parameter array has an explicit shape. Fix typos and coding style issues in surrounding lines. 2004-06-05 Tobias Schlueter PR fortran/15478 * gfortran.texi: The documentation doesn't contain infomration on how to report bugs, and shouldn't, so remove the line which says it does. 2004-06-05 Tobias Schlueter * intrinsic.c (sort_actual): Keep track of type of missing arguments. (Missing from previous commit.) 2004-06-03 Tobias Schlueter * gfortran.h (gfc_actual_arglist): New field missing_arg_type. * interface.c (compare_actual_formal): Keep type of omitted optional arguments. * trans-expr.c (gfc_conv_function_call): Add string length argument for omitted string argument. 2004-06-03 Paul Brook * trans.c (gfc_finish_block, gfc_add_expr_to_block): Build statement lists instead of compound expr chains. (gfc_trans_code): Annotate statement lists. 2004-06-03 Tobias Schlueter * trans-array.c: Fix spelling in comments. 2004-06-02 Tobias Schlueter PR fortran/15557 * data.c (assign_substring_data_value): New function. (gfc_assign_data_value): Call the new function if we're dealing with a substring LHS. 2004-06-01 Tobias Schlueter PR fortran/15477 * gfortran.h (GFC_VERSION): Remove. * gfortran.texi (version-gfortran): Remove, replace by version-GCC where used. 2004-05-31 Tobias Schlueter * trans-types.c: Fix spelling & layout in comments. 2004-05-30 Tobias Schlueter PR fortran/14067 * trans-const.c (gfc_conv_string_init): Allow variable string length lower than initialization string length. 2004-05-30 Paul Brook PR fortran/15620 * trans-decl.c (gfc_shadow_sym, gfc_restore_sym): New functions. * trans-expr.c (gfc_trans_string_copy): New function. (gfc_conv_statement_function): Use them. Create temp vars. Enforce character lengths. (gfc_conv_string_parameter): Use gfc_trans_string_copy. * trans-stmt.c (gfc_trans_forall_1): Use gfc_{shadow,restore}_sym. * trans.h (struct gfc_saved_var): Define. (gfc_shadow_sym, gfc_restore_sym): Add prototypes. 2004-05-30 Steven G. Kargl * iresolve.c (gfc_resolve_random_number): Clean up conditional. 2004-05-29 Steven G. Kargl * simplify.c (gfc_simplify_log): Remove useless line of code. 2004-05-29 Paul Brook * trans-common.c (find_equivalence): Find multiple rules. 2004-05-27 Tobias Schlueter * gfortran.h (gfc_current_locus, gfc_set_locus): Remove. (gfc_current_locus): Declare new global variable. * scanner.c (gfc_current_locus, gfc_set_locus): Remove. (gfc_current_locus1): Rename ... (gfc_current_locus): ... to this. (gfc_at_eof, gfc_at_bol, gfc_at_eol, gfc_advance_line, next_char, skip_fixed_comments, skip_free_comments, gfc_next_char_literal, gfc_peek_char, gfc_gobble_whitespace, gfc_new_file): Use gfc_current_locus instead of gfc_current_locus1, gfc_set_locus() and gfc_current_locus(), respectively. * array.c (match_subscript, gfc_match_array_ref, match_array_list, match_array_cons_element, gfc_match_array_constructor): Read/modify gfc_current_locus instead of calling gfc_set_locus() and gfc_current_locus(). * decl.c (gfc_match_null, variable_decl, gfc_match_kind_spec, match_attr_spec, gfc_match_function_decl, gfc_match_end, attr_decl1, gfc_match_save): Likewise. * error.c (error_print, gfc_internal_error): Likewise. * expr.c (gfc_int_expr, gfc_default_logical_kind): Likewise. * interface.c (gfc_add_interface): Likewise. * io.c (gfc_match_format, match_dt_format, match_dt_element, match_io_iterator, match_io): Likewise. * match.c (gfc_match_space, gfc_match_eos, gfc_match_small_literal_int, gfc_match_st_label, gfc_match_strings, gfc_match_name, gfc_match_iterator, gfc_match_char, gfc_match, gfc_match_assignment, gfc_match_pointer_assignment, gfc_match_if, gfc_match_do, gfc_match_nullify, gfc_match_call, match_implicit_range, gfc_match_implicit, gfc_match_data, match_case_selector, gfc_match_case, match_forall_iterator): Likewise. * matchexp.c (gfc_match_defined_op_name, next_operator, match_level_1, match_mult_operand, match_ext_mult_operand, match_add_operand, match_ext_add_operand, match_level_2, match_level_3, match_level_4, match_and_operand, match_or_operand, match_equiv_operand, match_level_5, gfc_match_expr): Likewise. * module.c (gfc_match_use, mio_array_ref, mio_expr): Likewise. * parse.c (match_word, decode_statement, next_free, next_fixed, add_statement, verify_st_order, parse_if_block, gfc_parse_file): Likewise. * primary.c (match_digits, match_integer_constant, match_boz_constant, match_real_constant, match_substring, next_string_char, match_charkind_name, match_string_constant, match_logical_constant, match_const_complex_part, match_complex_constant, match_actual_arg, match_keyword_arg, gfc_match_actual_arglist, gfc_match_structure_constructor, gfc_match_rvalue, gfc_match_variable): Likewise. * st.c (gfc_get_code): Likewise. * symbol.c (check_conflict, check_used, check_done, duplicate_attr, add_flavor, gfc_add_procedure, gfc_add_intent, gfc_add_access, gfc_add_explicit_interface, gfc_add_type, gfc_add_component, gfc_reference_st_label, gfc_new_symbol): Likewise. 2004-05-26 Roger Sayle * io.c (format_asterisk): Silence compiler warnings by correcting the number of elements of a "locus" initializer. 2004-05-25 Roger Sayle PR fortran/13912 * matchexp.c: Allow unary operators after arithmetic operators as a GNU extension. (match_ext_mult_operand, match_ext_add_operand): New functions. (match_mult_operand): Tweak to call match_ext_mult_operand. (match_add_operand): Tweak to call match_ext_mult_operand. (match_level_2): Rearrange to call match_ext_add_operand. 2004-05-25 Paul Brook * expr.c (check_inquiry): Remove bogus tests. 2004-05-23 Paul Brook PR fortran/13773 * expr.c (restricted_args): Remove redundant checks/argument. (external_spec_function): Update to match. (restricted_intrinsic): Rewrite. 2004-05-23 Paul Brook Victor Leikehman * gfortran.h (struct gfc_symbol): Add equiv_built. * trans-common.c: Change int to HOST_WIDE_INT. Capitalize error messages. (current_length): Remove. (add_segments): New function. (build_equiv_decl): Create initialized common blocks. (build_common_decl): Always add decl to bindings. (create_common): Create initializers. (find_segment_info): Reformat to match coding conventions. (new_condition): Use add_segments. (add_condition, find_equivalence, add_equivalences): Move iteration inside functions. Only process each segment once. (new_segment, finish_equivalences, translate_common): Simplify. 2004-05-23 Steven G. Kargl * check.c (gfc_check_random_seed): Issue for too many arguments. 2004-05-22 Steven G. Kargl * intrinsic.c (add_subroutines): Use add_sym_3s for random_seed. 2004-05-22 Paul Brook * dump-parse-tree.c (gfc_show_equiv): New function. (gfc_show_namespace): Use it. 2004-05-22 Victor Leikehman PR fortran/13249 * symbol.c (gfc_add_common): Disable checks to work around other more fundamental inadequacies. 2004-05-22 Tobias Schlüter * trans-decl.c (gfc_get_extern_function_decl): Set DECL_IS_PURE only for functions. (gfc_build_function_decl): Likewise. 2004-05-22 Steven G. Kargl * check.c (gfc_check_system_clock): New function. * intrinsic.c (add_sym_3s): New function. (add_subroutines): Use it. * intrinsic.h (gfc_check_system_clock, gfc_resolve_system_clock): Add prototypes. * iresolve.c (gfc_resolve_system_clock): New function. 2004-05-22 Steven G. Kargl * invoke.texi: Document -Wunderflow and spell check. * lang.opt: Add Wunderflow. * gfortran.h (gfc_option_t): Add warn_underflow option. * options.c (gfc_init_options, set_Wall): Use it. * primary.c (match_real_constant): Explicitly handle UNDERFLOW. * arith.c (gfc_arith_uminus, gfc_arith_plus, gfc_arith_minus, gfc_arith_times, gfc_arith_divide, gfc_arith_power, gfc_real2real, gfc_real2complex, gfc_complex2real, gfc_complex2complex): Ditto. * arith.c (common_logarithm): Fix typo in comment. 2004-05-21 Roger Sayle * io.c (check_format): As a GNU extension, allow the comma after a string literal to be optional in a format. Use gfc_notify_std to issue an error/warning as appropriate. 2004-05-21 Roger Sayle * io.c (check_format): Use gfc_notify_std to determine whether to issue an error/warning for omitting the digits from the X format. 2004-05-20 Roger Sayle * io.c (check_format): Allow the number before the X format to be optional when not -pedantic. 2004-05-18 Feng Wang Paul Brook * f95-lang.c (gfc_init_builtin_functions): Use vold_list_node. Create decls for __builtin_pow{,f}. * gfortran.h (PREFIX_LEN): Define. * trans-decl.c (gfor_fndecl_math_powi): Add. (gfor_fndecl_math_powf, gfor_fndecl_math_pow): Remove. (gfc_build_intrinsic_function_decls): Create decls for powi. * trans-expr.c (powi_table): Add. (gfc_conv_integer_power): Remove. (gfc_conv_powi): New function. (gfc_conv_cst_int_power): New function. (gfc_conv_power_op): Use new powi routines. * trans.h (struct gfc_powdecl_list): Add. (gfor_fndecl_math_powi): Add. (gfor_fndecl_math_powf, gfor_fndecl_math_pow): Remove. 2004-05-18 Tobias Schlueter * trans.c, trans-decl.c: Fix comment typos. 2004-05-18 Tobias Schlueter * trans-const.c (gfc_conv_mpf_to_tree): Fix typo. 2004-05-18 Steve Kargl * arith.c (gfc_int2complex): Fix incorrect range checking. 2004-05-18 Paul Brook PR fortran/13930 * decl.c (add_init_expr_to_sym): Remove incorrect check. (default_initializer): Move to expr.c. (variable_decl): Don't assign default initializer to variables. * expr.c (gfc_default_initializer): Move to here. * gfortran.h (gfc_default_initializer): Add prototype. * resolve.c (resolve_symbol): Check for illegal initializers. Assign default initializer. 2004-05-17 Steve Kargl * arith.c (gfc_arith_power): Complex number raised to 0 power is 1. 2004-05-17 Steve Kargl * arith.c (gfc_real2complex): Range checking wrong part of complex number. 2004-05-16 Paul Brook * options.c (gfc_handle_module_path_options): Fix buffer overrun. 2004-05-16 Paul Brook * arith.c (gfc_range_check): Fix logic error. 2004-05-16 Steve Kargl * arith.c: Fix comment typos. 2004-05-15 Tobias Schlueter PR fortran/13742 * decl.c (add_init_expr_to_sym): Verify that COMMON variable is not initialized in a disallowed fashion. * match.c (gfc_match_common): Likewise. (var_element): Verify that variable is not in the blank COMMON, if it is in a common. 2004-05-15 Joseph S. Myers * Make-lang.in (f95.generated-manpages): Remove. (f95.srcextra): New. (f95.info, fortran/gfortran.info, fortran/gfortran.dvi, f95.maintainer-clean): Generate info and dvi files in objdir/doc. (f95.dvi): Remove. (dvi): New. (f95.install-info): Remove. (install-info): New. 2004-05-15 Victor Leikehman * decl.c (add_init_expr_to_sym): Check for variable size arrays. 2004-05-15 Tobias Schlueter * primary.c (match_boz_constant): Use gfc_notify_std() for issuing a warning or an error. 2004-05-15 Tobias Schlueter PR fortran/13826 * primary.c (match_structure_constructor): Rename ... (gfc_match_structure_constructor): ... to this. Make non-static. (gfc_match_rvalue): Call renamed function. * match.h (gfc_match_structure_constructor): Declare. * match.c (gfc_match_data_constant): Handle structure constructor. 2004-05-15 Tobias Schlueter PR fortran/13702 (Port from g95) * gfortran.h (gfc_linebuf): New typedef. (linebuf): Remove. (gfc_file): Revamped, use new gfc_linebuf. (locus): Revamped, use new types. (gfc_current_file): Remove. (gfc_current_form, gfc_source_file): New global variables. * match.c (gfc_match_space, gfc_match_strings): Use gfc_current_form to find source form. * module.c (gfc_dump_module): Use gfc_source_file when printing module header. * error.c (show_locus, show_loci) Use new data structures to print locus. * scanner.c (first_file, first_duplicated_file, gfc_current_file): Remove. (file_head, current_file, gfc_current_form, line_head, line_tail, gfc_current_locus1, gfc_source_file): New global variables. (gfc_scanner_init1): Set new global variables. (gfc_scanner_done1): Free new data structures. (gfc_current_locus): Return pointer to gfc_current_locus1. (gfc_set_locus): Set gfc_current_locus1. (gfc_at_eof): Set new variables. (gfc_at_bol, gfc_at_eol, gfc_advance_line, gfc_next_char): Adapt to new locus structure. (gfc_check_include): Remove. (skip_free_comments, skip_fixed_comments): Use gfc_current_locus1. (gfc_skip_comments): Use gfc_current_form, find locus with gfc_current_locus1. (gfc_next_char): Use gfc_current_form. (gfc_peek_char, gfc_gobble_whitespace): Use gfc_current_locus1. (load_line): Use gfc_current_form. Recognize ^Z as EOF. Fix comment formatting. (get_file): New function. (preprocessor_line, include_line): New functions. (load_file): Move down, rewrite to match new data structures. (gfc_new_file): Rewrite to match new data structures. * parse.c (next_statement): Remove code which is now useless. Use gfc_source_form and gfc_source_file where appropriate. * trans-decl.c (gfc_get_label_decl): adapt to new data structures when determining locus of frontend code. * trans-io.c (set_error_locus): Same. * trans.c (gfc_get_backend_locus, gfc_set_backend_locus): Likewise. * lang-specs.h (@f77-cpp-input, @f95-cpp-input): Remove '-P' from preprocessor flags. (all): Add missing initializers. 2004-05-15 Tobias Schlueter * Make-lang.in (trans-common.o): Remove redundant dependency. (data.c): Replace object file name ... (data.o): ... by the correct one. 2004-05-14 Tobias Schlueter * dump-parse-tree.c (gfc_show_array_ref): Print colon only for ranges when dumping array references. 2004-05-14 Victor Leikehman * decl.c (variable_decl): Always apply default initializer. 2004-05-08 Tobias Schlüter PR fortran/15206 * trans-intrinsic.c (gfc_conv_intrinsic_rrspacing): Fixed to handle zero correctly. 2004-05-14 Tobias Schlueter * match.c (gfc_match): Eliminate dead code. 2004-05-14 Tobias Schlueter * parse.c (gfc_statement_next_fixed): (Change from Andy's tree) Detect bad continuation line in fixed form sources. 2004-05-14 Tobias Schlueter PR fortran/15205 * iresolve.c (gfc_resolve_nearest): Add new function. * intrinsic.h: ... declare it here. * intrinsic.c (add_functions): ... add it as resolving function for NEAREST. 2004-05-14 Tobias Schlueter PR fortran/14066 * match.c (gfc_match_do): Allow infinite loops with label-do-stmt. Do not enforce space after comma. 2004-05-14 Tobias Schlueter PR fortran/15051 * parse.c (parse_interface): Allow empty INTERFACE, remove seen_body. 2004-05-14 Tobias Schlueter * Make-lang.in, arith.c, arith.h, array.c, bbt.c, check.c, decl.c, dependency.c, dependency.h, dump-parse-tree.c, error.c, expr.c, f95-lang.c, gfortran.h, interface.c, intrinsic.c, intrinsic.h, io.c, iresolve.c, lang-specs.h, match.c, match.h, matchexp.c, misc.c, module.c, options.c, parse.c, parse.h, primary.c, resolve.c, scanner.c, simplify.c, st.c, symbol.c, trans-array.c, trans-array.h, trans-common.c, trans-const.c, trans-const.h, trans-decl.c, trans-expr.c, trans-intrinsic.c, trans-io.c, trans-stmt.c, trans-stmt.h, trans-types.c, trans-types.h, trans.c, trans.h: Update copyright years and boilerplate. * data.c: Likewise, also removed two whitespace-only lines. * gfortranspec.c, lang.opt: Update copyright years. 2004-05-14 Tobias Schlueter PR fortran/14568 * trans-decl.c (generate_local_decl): Don't warn for unused variables which are in common blocks. 2004-05-13 Diego Novillo * Make-lang.in, f95-lang.c, trans-array.c, trans-decl.c, trans-expr.c, trans-intrinsic.c, trans-io.c, trans-stmt.c, trans.c: Rename tree-simple.[ch] to tree-gimple.[ch]. 2004-05-13 Victor Leikehman PR fortran/15314 * trans-expr.c (gfc_conv_structure): Use field type, not expr type. 2004-05-13 Joseph S. Myers * gfortran.texi: Use @table @emph instead of @itemize @emph. Remove "set DEVELOPMENT". (Compiling GFORTRAN): Remove. 2004-05-09 Tobias Schlüter * array.c (match_subscript, match_array_ref): Add comments explaining argument 'init'. * decl.c, f95-lang.c, match.c, resolve.c, trans-array.c, trans-expr.c, trans.c: Fix some typos in comments. * dump-parse-tree.c (gfc_show_expr): Remove wrong comment. * primary.c (match_digits, match_integer_constant): Add comment explaining signflag. 2004-05-01 Tobias Schlüter PR fortran/13940 * primary.c: Include system.h and flags.h, needed for pedantic. (match_boz_constant): Allow "x" for hexadecimal constants, warn if pedantic is set. 2004-05-01 Tobias Schlüter PR fortran/13940 * match.c (match_data_constant): Handle case where gfc_find_symbol sets sym to NULL 2004-04-28 Tobias Schlüter * Make-lang.in (f95-lang.o, trans-intrinsic.o): Add missing dependency on mathbuiltins.def 2004-04-24 Victor Leikehman * trans-io.c (transfer_expr): Implemented recursive printing of derived types. 2004-04-24 Andrew Pinski * gfortranspec.c: Do not include multilib.h. 2004-04-24 Tobias Schlüter * trans-intrinsic.c: Fix comment, this is not trans-expr.c. Add 2004 to copyright years. * trans-expr.c, trans-decl.c: Comment update, we now generate GENERIC, not SIMPLE. Add 2004 to copyright years. 2004-04-24 Paul Brook * Make-lang.in (gfortranspec.o): Add dependency on $(TM_H). 2004-04-24 Feng Wang PR 14817 * arith.c (gfc_arith_divide): Fix complex divide. 2004-04-23 Andrew Pinski * gfortranspec.c: Include the target headers. 2004-04-18 Feng Wang PR fortran/14921 PR fortran/14540 * arith.c (arctangent2): New function. * arith.h (arctangent2): Add function prototype. * simplify.c (gfc_simplify_atan2): Use it. (gfc_simplify_log): Use it. 2004-04-12 Diego Novillo * fortran/f95-lang.c (gfc_expand_stmt): Remove. (LANG_HOOKS_RTL_EXPAND_STMT): Remove. 2004-04-11 Bud Davis PR fortran/14872 * trans-io.c (build_dt): Change REC to value. 2004-04-11 Feng Wang PR 14394 * trans-const.c (gfc_conv_mpf_to_tree): Loosen the maximum digits of the real value when converting mpf to string. 2004-04-11 Feng Wang PR 14395 * trans-intrinsic.c (gfc_conv_intrinsic_cmplx): Fix the imag part of the result. 2004-04-11 Feng Wang PR fortran/14377 * simplify.c (simplify_min_max): Convert the type of the result. 2004-04-11 Paul Brook * gfortran.texi: Use full target triplet. 2004-04-11 Paul Brook * Make-lang.in (GFORTRAN_TEXI): Set it. (fortran/dfortran.dvi): Use it. Add fortran to include paths. (fortran/gfortran.info): Ditto. * gfortran.texi: Major update. * invoke.texi: New file. 2004-04-10 Paul Brook * trans-array.c (gfc_trans_allocate_temp_array, gfc_conv_tmp_array_ref): Don't use GFC_DECL_STRING. * trans-decl.c (gfc_build_dummy_array_decl, gfc_get_symbol_decl, gfc_build_function_decl, gfc_create_module_variable): Ditto. * trans-expr.c (gfc_conv_variable): Ditto. * trans-intrinsic.c (gfc_conv_intrinsic_len): Ditto. * trans.h (GFC_DECL_STRING): Remove. (GFC_DECL_PACKED_ARRAY, GFC_DECL_PARTIAL_PACKED_ARRAY, GFC_DECL_ASSIGN): Renumber flags. 2004-04-05 Paul Brook PR 13252 PR 14081 * f95-lang.c (gfc_init_builtin_functions): Add stack_alloc, stack_save and stack_restore. * gfortran.h (struct gfc_charlen): Add backend_decl. * trans-array.c (gfc_trans_allocate_temp_array, gfc_conv_temp_array_ref, gfc_conv_resolve_dependencies, (gfc_conv_loop_setup, gfc_array_allocate, gfc_conv_array_init_size): Remove old, broken string handling. (gfc_trans_auto_array_allocation, gfc_trans_g77_array, gfc_trans_dummy_array_bias, gfc_conv_expr_descriptor, gfc_trans_deferred_array): Handle character arrays. * trans-const.c (gfc_conv_const_charlen): New function. * trans-const.h (gfc_conv_const_charlen): Add prototype. * trans-decl.c (gfc_finish_var_decl): Don't mark automatic variables as static. (gfc_build_dummy_array_decl): Handle arrays with unknown element size. (gfc_create_string_length): New function. (gfc_get_symbol_decl): Create lengths for character variables. (gfc_get_fake_result_decl): Ditto. (gfc_build_function_decl): Only set length for assumed length character arguments. (gfc_trans_dummy_character): New function. (gfc_trans_auto_character_variable): Rewrite. (gfc_trans_deferred_vars): Handle more types of character variable. (gfc_create_module_variable): String lengths have moved. (gfc_generate_function_code): Initialize deferred var chain earlier. * trans-expr.c (gfc_conv_init_string_length): Rename ... (gfc_trans_init_string_length): ... to this. (gfc_conv_component_ref, gfc_conv_variable, gfc_conv_concat_op, gfc_conv_function_call): Update to new format for character variables. (gfc_conv_string_length): Remove. (gfc_conv_string_parameter): Update assertion. * trans-intrinsic.c (gfc_conv_intrinsic_len): Use new location. * trans-io.c (set_string): Use new macro names. * trans-stmt.c (gfc_trans_label_assign. gfc_trans_goto): Ditto. * trans-types.c (gfc_get_character_type): Use existing length expr. (gfc_is_nodesc_array): Make public. (gfc_get_dtype_cst): Rename ... (gfc_get_dtype): ... to this. Handle unknown size arrays. (gfc_get_nodesc_array_type): Use new name. (gfc_sym_type): New character variable code. (gfc_get_derived_type): Ditto. (gfc_get_function_type): Evaluate character variable lengths. * trans-types.h (gfc_strlen_kind): Define. (gfc_is_nodesc_array): Add prototype. * trans.h: Update prototypes. (struct lang_type): Update comments. (GFC_DECL_STRING_LEN): New name for GFC_DECL_STRING_LENGTH. (GFC_KNOWN_SIZE_STRING_TYPE): Remove. 2004-04-04 Paul Brook * gfortran.h (struct gfc_option_t): Remove flag_g77_calls. * options.c (gfc_init.options, gfc_handle_option): Ditto. * trans-expr.c (gfc_conv_function_call): Ditto. * trans-types.c (gfc_is_nodesc_array): Ditto * lang.opt (fg77-calls): Remove. 2004-04-04 Paul Brook * trans-array.c (OFFSET_FIELD): Rename from BASE_FIELD. (gfc_conv_descriptor_base): Rename ... (gfc_conv_descriptor_offset): ... to this. (gfc_trans_allocate_array_storage): Set offset to zero. (gfc_conv_array_base): Rename ... (gfc_conv_array_offset): ... to this. (gfc_conv_array_index_ref): Add offset parameter. (gfc_conv_array_ref): Include offset. (gfc_trans_preloop_setup): Use existing offset. (gfc_trans_allocate_temp_array, gfc_array_allocate, gfc_trans_auto_array_allocation, gfc_trans_g77_array, gfc_trans_dummy_array_bias, gfc_conv_expr_descriptor, gfc_conf_ss_descriptor): Set offset. * trans-array.h: Rename prototypes. * trans-const.h (gfc_index_zero_node): Define. * trans-decl.c (gfc_build_qualified_array): Change base to offset. * trans-types.c (gfc_get_array_type_bounds): Ditto. (gfc_get_nodesc_array_type): Calculate offset before upper bound. 2004-03-25 Diego Novillo * convert.c (convert): Don't handle WITH_RECORD_EXPR. 2004-03-24 Bud Davis PR 14055 * arith.c (gfc_convert_integer,gfc_convert_real): Removed leading '+' before conversion by gmp library call. 2004-03-24 Bud Davis PR 12921 * trans-io.c (gfc_trans_open): Change RECL= to a value parameter. 2004-02-24 Richard Henderson * trans-array.c (gfc_trans_dummy_array_bias): Fix typo. 2004-02-19 Loren J. Rittle * Make-lang.in ($(srcdir)/fortran/gfortran.info): Move... (fortran/gfortran.info): ... to here. (f95.srcinfo): New. 2004-02-16 Richard Henderson * Make-lang.in (f95-lang.o, trans-decl.o): Depend on cgraph.h. * f95-lang.c (LANG_HOOKS_EXPAND_DECL): Remove. (LANG_HOOKS_CALLGRAPH_EXPAND_FUNCTION): New. (gfc_expand_function): Rename from expand_function_body, make static, don't do anything except invoke tree_rest_of_compilation. (gfc_be_parse_file): Invoke cgraph. (gfc_expand_decl): Remove. (gfc_init_builtin_functions): Add __builtin_init_trampoline and __builtin_adjust_trampoline. * trans-decl.c (gfc_get_extern_function_decl): Don't set DECL_CONTEXT. (gfc_finalize): New. (gfc_generate_function_code): Use it. Lower nested functions. * trans-expr.c (gfc_conv_function_call): Add static chain operand to call_expr. * trans.c (gfc_build_function_call): Likewise. * trans.h (expand_function_body): Remove. 2004-02-15 Victor Leikehman PR gfortran/13433 * trans-decl.c (gfc_build_function_decl) For functions returning CHARACTER pass an extra length argument, following g77 calling conventions. * trans-types.c (gfc_get_function_type) Ditto. * trans-expr.c (gfc_conv_function_call) Ditto. 2004-02-14 Paul Brook * f95-lang.c (gfc_init_builtin_functions): Build chain properly. 2004-02-12 Paul Brook * BUGS: Remove. 2004-02-08 Steve Kargl * gfortran.texi: Fix typos. 2004-02-07 Bud Davis PR gfortran/13909 * intrinsic.c (add_conversions) Use logical conversion instead of real. * trans-types.c (gfc_get_logical_type) implemented logical*1 and logical*2. 2004-01-17 Paul Brook * lang-specs.h: Remove % * lang-specs.h: Enable preprocessing of source files ending in .F, .fpp, .FPP, .F90 and .F95. 2004-01-13 Toon Moene PR fortran/12912 * lang-specs.h: Enable compilation of files ending in .f, .for and .FOR. 2004-01-11 Paul Brook * trans-stmt.c (gfc_trans_if_1): New function. (gfc_trans_if): Use it. 2004-01-11 Erik Schnetter * gfortran.h (GFC_MAX_SYMBOL_LEN): Increase. (gfc_option_t): Add max_identifier_length. * lang.opt: Add fmax-identifier-length. * match.c (parse_name): Use limit. * options.c (gfc_init_options): Set max_identifier_length. (gfc_handle_option): Ditto. 2004-01-11 Feng Wang * intrinsic.c (add_functions): Add resolve function to dcmplx. * intrinsic.h (gfc_resolve_dcmplx): Add prototype. * iresolve.c (gfc_resolve_dcmplx): New function. 2004-01-10 Paul Brook * trans-decl.c (gfc_get_symbol_decl): Don't set subroutine attr. * trans-types.c (gfc_sym_type): Handle external dummy procedures. (gfc_return_by_reference): Correct condition. (gfc_get_function_type): Ditto. 2004-01-10 Paul Brook * trans-intrinsic.c (gfc_conv_intrinsic_minmax): Convert mismatched types. 2004-01-10 Huang Chun * iresolve.c: Use correct kind. 2004-01-10 Huang Chun PR fortran/13467 * trans-decl.c (gfc_create_module_variable): Output array valued parameters. 2004-01-10 Paul Brook * resolve.c (resolve_branch): Get error message right way round. 2004-01-10 Canqun Yang * trans-array (gfc_conv_loop_setup): Adjust comment to track reality. (gfc_array_allocate): Don't count size of element twice. 2004-01-04 Paul Brook * lang.opt (i8, r8, std=*): Remove RejectNegative. 2004-01-04 Paul Brook * error.c (gfc_notify_std): New function. * gfortran.h (gfc_notify_std): Declare. (GFC_STD_*): Define. (gfc_option_t): Add warn_std and allow_std. * intrinsic.c (gfc_init_expr_extensions): Fix logic. (gfc_intrinsic_func_interface): Use gfc_notify_std. * check.c (check_rest): Use gfc_notify_std. * match.c (gfc_match_pause): Ditto. (gfc_match_assign): Ditto. (gfc_match_goto): Ditto. * resolve.c (resolve_branch): Ditto. * lang.opt: Add std= and w. * options.c (gfc_init_options): Set allow_std and warn_std. (gfc_handle_option): Handle OPT_std_* and OPT_w. 2004-01-01 Paul Brook * array.c (gfc_append_constructor): Take constructor, not expression. * data.c (struct gfc_expr_stack): Remove. (expr_stack): Remove. (find_con_by_offset): Rename from find_expr_in_con. (find_con_by_component): Rename from find_component_in_con. (gfc_get_expr_stack): Remove. (gfc_assign_data_value): Rewrite. (gfc_expr_push): Remove. (gfc_expr_pop): Remove. (gfc_advance_section): Rename from gfc_modify_index_and_calculate_offset. Handle unbounded sections. (gfc_get_section_index): Handle unbounded sections. * gfortran.h: Update prototypes. * resolve.c (check_data_variable): Array section maight not be the last ref. 2004-01-01 Paul Brook PR fortran/13432 * resolve.c (resolve_symbol): Allow assumed length function results. 2004-01-01 Steve Kargl * match.c (gfc_match_pause): Fix spelling. 2004-01-01 Steven Bosscher PR fortran/13251 * trans-expr.c (gfc_conv_variable): Take the type kind of a substring reference from the expression. Copyright (C) 2004 Free Software Foundation, Inc. Copying and distribution of this file, with or without modification, are permitted in any medium without royalty provided the copyright notice and this notice are preserved.