blob: d5d66540627314776132173ac34c4d49cf6b0099 [file] [log] [blame]
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
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
* scanner.c (skip_fixed_comments): Fix typo in comment preceding
2004-12-14 Richard Henderson <>
* gfortran.h ( 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
* 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
(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_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
(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
* 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 <>
(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
(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
* 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
(parse_do_block): Generate possible END DO label inside END DO
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
* trans-intrinsic.c (gfc_conv_intrinsic_function): Deal with
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
(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
* 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
* 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
(gfc_generate_function_code): Likewise.
2004-09-20 Tobias Schlueter <>
PR fortran/15957
* simplify.c (gfc_simplify_reshape): Set shape of return value
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 <>
* 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
(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
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
* 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 <>
* (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_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
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.
(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}
(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.
* 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
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.
(gfc_integer_kinds, gfc_logical_kinds, gfc_real_kinds,
gfc_index_integer_kind, gfc_default_integer_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 <>
* 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
* 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_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
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
* 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):
(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
* iresolve.c (gfc_resolve_get_environment_variable): New
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.
cosine,arctangent,hypercos,hypersine ): Remove.
(gfc_mpfr_to_mpz,gfc_set_model_kind,gfc_set_model): New functions.
gfc_check_real_range, gfc_constant_result, gfc_range_check,
gfc_arith_uminus,gfc_arith_plus, gfc_arith_minus, gfc_arith_times,
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.
(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_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
2004-07-25 Richard Henderson <>
* trans-decl.c (gfc_build_function_decl): Set DECL_ARTIFICIAL
(gfc_generate_constructors): Likewise.
2004-07-18 Tobias Schlueter <>
PR fortran/16465
* lang.opt (ffixed-line-length-none, ffixed-line-length-): New
(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
(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
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.
(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
(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
* 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
* intrinsic.c (add_functions): Identify iargc. Add
(add_subroutines): Resolve getarg. Add get_command and
* 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 <>
* 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
(gfc_generate_constructors): Likewise.
2004-06-30 Richard Henderson <>
* trans-decl.c (gfc_generate_function_code): Don't set
(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.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
* gfortran.h (symbol_attribute): Remove common and saved_common
(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
(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
(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
(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
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 <>
* trans-array.c (gfc_conv_descriptor_data): Add operand
(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 <
PR fortran/15511
* scanner.c (load_line): Don't truncate preprocessor lines.
Reformat error message.
(preprocessor_line): Issue warning in case of malformed
preprocessor line.
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
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
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 <>
* (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,
* 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
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
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
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):
* 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
(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
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 <>
* (f95.generated-manpages): Remove.
(f95.srcextra): New.
(, fortran/, 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
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
* scanner.c (first_file, first_duplicated_file, gfc_current_file):
(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_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 <>
* (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
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
2004-05-14 Tobias Schlueter <>
*, 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
* 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 <>
*, 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 <>
* (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 <>
* (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.
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 <>
* (GFORTRAN_TEXI): Set it.
(fortran/dfortran.dvi): Use it. Add fortran to include paths.
(fortran/ 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_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.
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 <>
* ($(srcdir)/fortran/ Move...
(fortran/ ... to here.
(f95.srcinfo): New.
2004-02-16 Richard Henderson <>
* (f95-lang.o, trans-decl.o): Depend on cgraph.h.
* f95-lang.c (LANG_HOOKS_EXPAND_DECL): Remove.
(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
* 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 %<fixed-form.
2004-01-15 Toon Moene <>
* 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
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
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
(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=<foo> 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.