From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 1787 invoked by alias); 2 Feb 2011 18:11:13 -0000 Received: (qmail 1740 invoked by uid 22791); 2 Feb 2011 18:11:10 -0000 X-SWARE-Spam-Status: No, hits=-2.6 required=5.0 tests=ALL_TRUSTED,AWL,BAYES_00 X-Spam-Check-By: sourceware.org Received: from localhost (HELO gcc.gnu.org) (127.0.0.1) by sourceware.org (qpsmtpd/0.43rc1) with ESMTP; Wed, 02 Feb 2011 18:10:58 +0000 From: "dnovillo at gcc dot gnu.org" To: gcc-bugs@gcc.gnu.org Subject: [Bug fortran/35810] [TR 15581 / F2003] Automatic reallocation on assignment to allocatable variables X-Bugzilla-Reason: CC X-Bugzilla-Type: changed X-Bugzilla-Watch-Reason: None X-Bugzilla-Product: gcc X-Bugzilla-Component: fortran X-Bugzilla-Keywords: wrong-code X-Bugzilla-Severity: normal X-Bugzilla-Who: dnovillo at gcc dot gnu.org X-Bugzilla-Status: RESOLVED X-Bugzilla-Priority: P3 X-Bugzilla-Assigned-To: unassigned at gcc dot gnu.org X-Bugzilla-Target-Milestone: --- X-Bugzilla-Changed-Fields: Message-ID: In-Reply-To: References: X-Bugzilla-URL: http://gcc.gnu.org/bugzilla/ Auto-Submitted: auto-generated Content-Type: text/plain; charset="UTF-8" MIME-Version: 1.0 Date: Wed, 02 Feb 2011 18:11:00 -0000 Mailing-List: contact gcc-bugs-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Id: List-Archive: List-Post: List-Help: Sender: gcc-bugs-owner@gcc.gnu.org X-SW-Source: 2011-02/txt/msg00370.txt.bz2 http://gcc.gnu.org/bugzilla/show_bug.cgi?id=35810 --- Comment #19 from Diego Novillo 2011-02-02 17:59:36 UTC --- Author: dnovillo Date: Wed Feb 2 17:59:29 2011 New Revision: 169666 URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=169666 Log: 2011-01-28 Paul Thomas Tobias Burnus PR fortran/45170 PR fortran/35810 PR fortran/47350 * interface.c (compare_actual_formal): An allocatable or pointer deferred length actual is only allowed if the formal argument is also deferred length. Clean up whitespace. * trans-expr.c (gfc_conv_procedure_call): Pass string length for deferred character length formal arguments by reference. Do the same for function results. (gfc_trans_pointer_assignment): Do not do runtime check of lhs and rhs character lengths, if deferred length lhs. In this case set the lhs character length to that of the rhs. (gfc_conv_string_parameter): Remove assert that string length is an integer type. (is_scalar_reallocatable_lhs): New function. (alloc_scalar_allocatable_for_assignment): New function. (gfc_trans_assignment_1): Call above new function. If the rhs is a deferred character length itself, makes ure that the function is called before reallocation, so that the length is available. (gfc_trans_asssignment): Remove error about assignment to deferred length character variables. * gfortran.texi : Update entry about (re)allocation on assignment. * trans-stmt.c (gfc_trans_allocate): Add code to handle deferred length character variables. * module.c (mio_typespec): Transfer deferred characteristic. * trans-types.c (gfc_get_function_type): New code to generate hidden typelist, so that those character lengths that are passed by reference get the right type. * resolve.c (resolve_contained_fntype): Supress error for deferred character length functions. (resolve_function, resolve_fl_procedure) The same. (check_symbols): Remove the error that support for entity with deferred type parameter is not yet implemented. (resolve_fl_derived): The same. match.c (alloc_opt_list): Allow MOLD for deferred length object. * trans-decl.c (gfc_get_symbol_decl): For deferred character length dummies, generate a local variable for string length. (create_function_arglist): Hidden length can be a pointer. (gfc_trans_deferred_vars): For deferred character length results and dummies, assign the string length to the local variable from the hidden argument on entry and the other way round on exit, as appropriate. 2011-01-28 Paul Thomas Tobias Burnus PR fortran/45170 PR fortran/35810 PR fortran/47350 * gfortran.dg/realloc_on_assign_3.f03: New test. * gfortran.dg/realloc_on_assign_4.f03: New test. * gfortran.dg/realloc_on_assign_5.f90: New test. * gfortran.dg/allocatable_function_5.f90: New test. * gfortran.dg/allocate_deferred_char_scalar_1.f90: New test. * gfortran.dg/deferred_type_param_2.f90: Remove two "not yet implemented" dg-errors. Added: branches/google/integration/gcc/testsuite/gfortran.dg/allocate_deferred_char_scalar_1.f03 branches/google/integration/gcc/testsuite/gfortran.dg/realloc_on_assign_3.f03 branches/google/integration/gcc/testsuite/gfortran.dg/realloc_on_assign_4.f03 Modified: branches/google/integration/gcc/fortran/ChangeLog branches/google/integration/gcc/fortran/gfortran.texi branches/google/integration/gcc/fortran/interface.c branches/google/integration/gcc/fortran/match.c branches/google/integration/gcc/fortran/module.c branches/google/integration/gcc/fortran/resolve.c branches/google/integration/gcc/fortran/trans-decl.c branches/google/integration/gcc/fortran/trans-expr.c branches/google/integration/gcc/fortran/trans-stmt.c branches/google/integration/gcc/fortran/trans-types.c branches/google/integration/gcc/testsuite/ChangeLog branches/google/integration/gcc/testsuite/gfortran.dg/deferred_type_param_2.f90