2005-01-21 Paul Thomas <pault@gcc.gnu.org>
PR fortran/25124
PR fortran/25625
* decl.c (get_proc_name): If there is an existing
symbol in the encompassing namespace, call errors
if it is a procedure of the same name or the kind
field is set, indicating a type declaration.
PR fortran/20881
PR fortran/23308
PR fortran/25538
PR fortran/25710
* decl.c (add_global_entry): New function to check
for existing global symbol with this name and to
create new one if none exists.
(gfc_match_entry): Call add_global_entry before
matching argument lists for subroutine and function
entries.
* gfortran.h: Prototype for existing function,
global_used.
* resolve.c (resolve_global_procedure): New function
to check global symbols for procedures.
(resolve_call, resolve_function): Calls to this
new function for non-contained and non-module
procedures.
* match.c (match_common): Add check for existing
global symbol, creat one if none exists and emit
error if there is a clash.
* parse.c (global_used): Remove static and use the
gsymbol name rather than the new_block name, so that
the function can be called from resolve.c.
(parse_block_data, parse_module, add_global_procedure):
Improve checks for existing gsymbols. Emit error if
already defined or if references were to another type.
Set defined flag.
PR fortran/PR24276
* trans-expr.c (gfc_conv_aliased_arg): New function called by
gfc_conv_function_call that coverts an expression for an aliased
component reference to a derived type array into a temporary array
of the same type as the component. The temporary is passed as an
actual argument for the procedure call and is copied back to the
derived type after the call.
(is_aliased_array): New function that detects an array reference
that is followed by a component reference.
(gfc_conv_function_call): Detect an aliased actual argument with
is_aliased_array and convert it to a temporary and back again
using gfc_conv_aliased_arg.
2005-01-21 Paul Thomas <pault@gcc.gnu.org>
PR fortran/25124
PR fortran/25625
* gfortran.dg/internal_references_1.f90: New test.
PR fortran/20881
PR fortran/23308
PR fortran/25538
PR fortran/25710
* gfortran.dg/global_references_1.f90: New test.
* gfortran.dg/g77/19990905-1.f: Restore the error that
there is a clash between the common block name and
the name of a subroutine reference.
PR fortran/PR24276
* gfortran.dg/aliasing_dummy_1.f90: New test.
From-SVN: r110063
PR fortran/25106
* parse.c (next_free): Use new prototype for gfc_match_st_label.
Correctly emit hard error if a label is zero.
* match.c (gfc_match_st_label): Never allow zero as a valid
label.
(gfc_match, gfc_match_do, gfc_match_goto): Use new prototype for
gfc_match_st_label.
* primary.c (): Use new prototype for gfc_match_st_label.
* io.c (): Likewise.
* match.h: Likewise.
From-SVN: r107999
fortran/
2005-11-01 Erik Edelmann <eedelman@gcc.gnu.org>
PR 24245
* trans.c (gfc_generate_code): Move code to create a main
program symbol from here ...
* parse.c (main_program_symbol): ... to this new
function, setting the locus from gfc_current_locus
instead of ns->code->loc.
(gfc_parse_file): Call main_program_symbol for main programs.
From-SVN: r106353
PR fortran/15586
* arith.c (gfc_arith_error): Change message to include locus.
(check_result, eval_intrinsic, gfc_int2int, gfc_real2real,
gfc_real2complex, gfc_complex2real, gfc_complex2complex): Use
the new gfc_arith_error.
(arith_error): Rewrite full error messages instead of building
them from pieces.
* check.c (must_be): Removed.
(type_check, numeric_check, int_or_real_check, real_or_complex_check,
kind_check, double_check, logical_array_check, array_check,
scalar_check, same_type_check, rank_check, kind_value_check,
variable_check, gfc_check_allocated, gfc_check_associated,
gfc_check_cmplx, gfc_check_dcmplx, gfc_check_dot_product,
gfc_check_index, gfc_check_kind, gfc_check_matmul, gfc_check_null,
gfc_check_pack, gfc_check_precision, gfc_check_present,
gfc_check_spread): Rewrite full error messages instead of
building them from pieces.
* decl.c (gfc_match_entry): Rewrite full error messages instead
of building them from pieces.
* parse.c (gfc_state_name): Remove.
* parse.h: Remove prototype for gfc_state_name.
From-SVN: r105844
2005-10-05 Richard Guenther <rguenther@suse.de>
PR fortran/24176
* parse.c (gfc_parse_file): Exit early for empty files.
* gfortran.fortran-torture/compile/empty.f90: New testcase.
From-SVN: r104984
2005-08-14 Asher Langton <langton2@llnl.gov>
* parse.c (match): Enclosed macro in do...while(0) and braces.
Also fix formatting of a few previous ChangeLog entries
From-SVN: r103086
2005-04-15 Richard Guenther <rguenth@gcc.gnu.org>
PR fortran/14569
* gfortran.h (gfc_linebuf): Add truncated field.
* parse.c (next_statement): Handle warning for truncated
lines.
* scanner.c (load_line): Return if line was truncated.
No longer warn for truncated lines. Remove unused parameters.
(load_file): Store load_line return value to linebuf.
(gfc_error_recovery): Do not advance line at the end.
From-SVN: r98210
fortran/
* gfortran.h (gfc_get_namespace): Add second argument to prototype.
* intrinsic.c (gfc_intrinsic_init_1): Pass second argument to
gfc_get_namespace.
* module.c (mio_namespace_ref, load_needed): Likewise.
* parse.c (parse_interface, parse_contained): Likewise. Here the
correct second argument matters.
* symbol.c (gfc_get_namespace): Add parent_types argument, only copy
parent's implicit types if this is set.
(gfc_symbol_init_2): Pass second argument to gfc_get_namespace.
* trans-common.c (build_common_decl): Likewise.
testsuite/
* gfortran.dg/implicit_3.f90: New test.
From-SVN: r95463
fortran/
PR fortran/17708
* parse.c (accept_statement): Don't treat END DO like END IF and
END SELECT.
(parse_do_block): Generate possible END DO label inside END DO
block.
also, added ChangeLog entry for previous commit.
testsuite/
PR fortran/17708
* gfortran.dg/pr17708.f90: New test.
From-SVN: r88529
fortran/
* 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.
testsuite/
* gfortran.dg/blockdata_1.f90: New test.
From-SVN: r86796
PR fortran/15986
* parse.c (gfc_fixup_sibling_symbols): Also look for untyped
variables.
(parse_contained): Mark contained symbols as referenced.
testsuite/
* gfortran.dg/contained_1.f90: New test.
From-SVN: r84536
2004-06-29 Tobias Schlueter <tobias.schlueter@physik.uni-muenchen.de>
Andrew Vaught <andyv@firstinter.net>
PR fortran/13249
PR fortran/15481
* declc (gfc_match_save): Adapt to new common structures,
don't allow saving USE-associated common.
* dump-parse-tree (gfc_show_attr): (saved_)common are not
symbol attributes any longer.
(gfc_show_symbol): Don't show old-style commons any longer.
(gfc_show_namespace): Adapt call to gfc_traverse_symtree to new
interface.
* gfortran.h (symbol_attribute): Remove common and saved_common
attributes.
(gfc_symbol): Remove common_head element.
(gfc_common_head): New struct.
(gfc_get_common_head): New macro.
(gfc_symtree): Add field 'common' to union.
(gfc_namespace): Add field 'common_root'; change type of field
'blank_common' to blank_common.
(gfc_add_data): New prototype.
(gfc_traverse_symtree): Expect a symtree as first argument
instead of namespace.
* match.c (gfc_get_common): New function.
(match_common_name): Change to take char * as argument, adapt,
fix bug with empty name.
(gfc_match_common): Adapt to new data structures. Disallow
redeclaration of USE-associated COMMON-block. Fix bug with
empty common.
(var_element): Adapt to new common structures.
* match.h (gfc_get_common): Declare.
* module.c: Add 2004 to copyright years, add commons to module
file layout description.
(ab_attribute, attr_bits, mio_symbol_attributes): Remove code
for removed attributes.
(mio_symbol): Adapt to new way of storing common relations.
(load_commons): New function.
(read_module): Skip common list on first pass, load_commons at
second.
(write_commons): New function.
(write_module): Call write_commons().
* symbol.c (gfc_add_saved_comon, gfc_add_common): Remove
functions related to removed attributes.
(gfc_add_data): New function.
(gfc_clear_attr): Don't set removed attributes.
(gfc_copy_attr): Don't copy removed attributes.
(traverse_symtree): Remove.
(gfc_traverse_symtree): Don't traverse symbol
tree of the passed namespace, but require a symtree to be passed
instead. Unify with traverse_symtree.
(gfc_traverse_ns): Call gfc_traverse_symtree according to new
interface.
(save_symbol): Remove setting of removed attribute.
* trans-common.c (gfc_sym_mangled_common_id): Change to
take 'char *' argument instead of 'gfc_symbol'.
(build_common_decl, new_segment, translate_common): Adapt to new
data structures, add new
argument name.
(create_common): Adapt to new data structures, add new
argument name. Fix typo in intialization of derived types.
(finish_equivalences): Add second argument in call to
create_common.
(named_common): take 'gfc_symtree' instead of 'gfc_symbol'.
(gfc_trans_common): Adapt to new data structures.
* trans-decl.c (gfc_create_module_variables): Also output
symbols from commons.
Co-Authored-By: Andrew Vaught <andyv@firstinter.net>
From-SVN: r83871
2004-06-29 Tobias Schlueter <tobias.schlueter@physik.uni-muenchen.de>
Andrew Vaught <andyv@firstinter.net>
* gfortran.h (gfc_gsymbol): New typedef.
(gfc_gsym_root): New variable.
(gfc_get_gsymbol, gfc_find_gsym): New prototypes.
* parse.c (global_used): New function.
(parse_block_data): Check for double empty BLOCK DATA,
use global symbol table.
(parse_module): Use global symbol table.
(add_global_procedure, add_global_program): New functions.
(gfc_parse_file): Use global symbol table.
* symbol.c (gfc_gsym_root): New variable.
(gfc_find_gsym, gsym_compare, gfc_get_gsymbol): New
functions.
Co-Authored-By: Andrew Vaught <andyv@firstinter.net>
From-SVN: r83868
PR fortran/13702
(Port from g95)
* gfortran.h (gfc_linebuf): New typedef.
(linebuf): Remove.
(gfc_file): Revamped, use new gfc_linebuf.
(locus): Revamped, use new types.
(gfc_current_file): Remove.
(gfc_current_form, gfc_source_file): New global variables.
* match.c (gfc_match_space, gfc_match_strings): Use
gfc_current_form to find source form.
* module.c (gfc_dump_module): Use gfc_source_file when printing
module header.
* error.c (show_locus, show_loci) Use new data structures to print
locus.
* scanner.c (first_file, first_duplicated_file, gfc_current_file):
Remove.
(file_head, current_file, gfc_current_form, line_head, line_tail,
gfc_current_locus1, gfc_source_file): New global variables.
(gfc_scanner_init1): Set new global variables.
(gfc_scanner_done1): Free new data structures.
(gfc_current_locus): Return pointer to gfc_current_locus1.
(gfc_set_locus): Set gfc_current_locus1.
(gfc_at_eof): Set new variables.
(gfc_at_bol, gfc_at_eol, gfc_advance_line, gfc_next_char): Adapt
to new locus structure.
(gfc_check_include): Remove.
(skip_free_comments, skip_fixed_comments): Use gfc_current_locus1.
(gfc_skip_comments): Use gfc_current_form, find locus with
gfc_current_locus1.
(gfc_next_char): Use gfc_current_form.
(gfc_peek_char, gfc_gobble_whitespace): Use gfc_current_locus1.
(load_line): Use gfc_current_form. Recognize ^Z as EOF. Fix
comment formatting.
(get_file): New function.
(preprocessor_line, include_line): New functions.
(load_file): Move down, rewrite to match new data structures.
(gfc_new_file): Rewrite to match new data structures.
* parse.c (next_statement): Remove code which is now useless. Use
gfc_source_form and gfc_source_file where appropriate.
* trans-decl.c (gfc_get_label_decl): adapt to new data structures
when determining locus of frontend code.
* trans-io.c (set_error_locus): Same.
* trans.c (gfc_get_backend_locus, gfc_set_backend_locus): Likewise.
* lang-specs.h (@f77-cpp-input, @f95-cpp-input): Remove '-P' from
preprocessor flags.
(all): Add missing initializers.
From-SVN: r81888
fortran:
* parse.c (gfc_statement_next_fixed): (Change from Andy's tree)
Detect bad continuation line in fixed form sources.
testsuite:
* gfortran.fortran-torture/compile/noncontinuation_1.f90: New
test.
From-SVN: r81845