This is the mail archive of the gcc-bugs@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[Bug fortran/23308] named common block confused as procedure - runtime segfault



------- Comment #11 from pault at gcc dot gnu dot org  2006-01-21 09:09 -------
Subject: Bug 23308

Author: pault
Date: Sat Jan 21 09:08:54 2006
New Revision: 110063

URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=110063
Log:
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.

Added:
    trunk/gcc/testsuite/gfortran.dg/aliasing_dummy_1.f90
    trunk/gcc/testsuite/gfortran.dg/global_references_1.f90
    trunk/gcc/testsuite/gfortran.dg/internal_references_1.f90
Modified:
    trunk/gcc/fortran/ChangeLog
    trunk/gcc/fortran/decl.c
    trunk/gcc/fortran/gfortran.h
    trunk/gcc/fortran/match.c
    trunk/gcc/fortran/parse.c
    trunk/gcc/fortran/resolve.c
    trunk/gcc/fortran/trans-expr.c
    trunk/gcc/testsuite/ChangeLog
    trunk/gcc/testsuite/gfortran.dg/g77/19990905-1.f


-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=23308


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]