From patchwork Wed May 22 12:44:49 2013 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Tobias Burnus X-Patchwork-Id: 245605 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Received: from sourceware.org (server1.sourceware.org [209.132.180.131]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (Client CN "localhost", Issuer "www.qmailtoaster.com" (not verified)) by ozlabs.org (Postfix) with ESMTPS id 72F0C2C0089 for ; Wed, 22 May 2013 22:45:04 +1000 (EST) DomainKey-Signature: a=rsa-sha1; c=nofws; d=gcc.gnu.org; h=list-id :list-unsubscribe:list-archive:list-post:list-help:sender :message-id:date:from:mime-version:to:subject:content-type; q= dns; s=default; b=F5QSuiQ4ZYThMTOtqdOM0F5VvVJHlN0C0QWgp3wRKpRl4G 4/WzAevReEBP+L0V63kXPYAOh/mGR3lXLkDJUAVKYQpUZgRd9/pYNbJ/8lUVubYV gtF2gm8HTzxxNt2W+oJ/Hk1Z+PpV6d8lw0qYfdseCUPAgUfpl/Eih+F6/U2dY= DKIM-Signature: v=1; a=rsa-sha1; c=relaxed; d=gcc.gnu.org; h=list-id :list-unsubscribe:list-archive:list-post:list-help:sender :message-id:date:from:mime-version:to:subject:content-type; s= default; bh=5xAuIhXZZgm1t0yCH9GDf/dazi8=; b=bKOQu522gcv8hkXDkUM1 lWgfVexcV7f2OiuOjBApttU3ojaSaGvNvgQ+4GdFaid5gowBZPRd4Qee8TCbMyXe voP/qsmhHyeZpD3Bi8iOW1G70Y0a8+wYf1FOTqa9FG/pOpjuQeSrNQbCrAG2z5yC ZxjXmR2MaejLoJk9W2TnBjg= Received: (qmail 9590 invoked by alias); 22 May 2013 12:44:58 -0000 Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Id: List-Unsubscribe: List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Delivered-To: mailing list gcc-patches@gcc.gnu.org Received: (qmail 9559 invoked by uid 89); 22 May 2013 12:44:55 -0000 X-Spam-SWARE-Status: No, score=-1.9 required=5.0 tests=AWL, BAYES_00, RCVD_IN_DNSWL_NONE, RCVD_IN_SEMBACKSCATTER autolearn=no version=3.3.1 X-Spam-User: qpsmtpd, 2 recipients Received: from mx02.qsc.de (HELO mx02.qsc.de) (213.148.130.14) by sourceware.org (qpsmtpd/0.84/v0.84-167-ge50287c) with ESMTP; Wed, 22 May 2013 12:44:54 +0000 Received: from archimedes.net-b.de (port-92-195-69-235.dynamic.qsc.de [92.195.69.235]) by mx02.qsc.de (Postfix) with ESMTP id 9129124C56; Wed, 22 May 2013 14:44:50 +0200 (CEST) Message-ID: <519CBDC1.4050905@net-b.de> Date: Wed, 22 May 2013 14:44:49 +0200 From: Tobias Burnus User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:17.0) Gecko/20130510 Thunderbird/17.0.6 MIME-Version: 1.0 To: gcc patches , gfortran Subject: [Patch, Fortran, committed] PR57364 - add missing gfc_commit_symbol (4.8/4.9 regression) X-Virus-Found: No A rather obvious patch. Committed to the trunk as Rev. 199196 after build+regtesting on x86-64-gnu-linux. I will backport the patch to 4.9 in a while. Tobias 2013-05-22 Tobias Burnus PR fortran/57364 * resolve.c (get_temp_from_expr): Commit created sym. 2013-05-22 Tobias Burnus PR fortran/57364 * gfortran.dg/defined_assignment_6.f90: New. diff --git a/gcc/fortran/resolve.c b/gcc/fortran/resolve.c index 74e0aa4..6f32df8 100644 --- a/gcc/fortran/resolve.c +++ b/gcc/fortran/resolve.c @@ -9300,6 +9300,7 @@ get_temp_from_expr (gfc_expr *e, gfc_namespace *ns) gfc_set_sym_referenced (tmp->n.sym); gfc_add_flavor (&tmp->n.sym->attr, FL_VARIABLE, name, NULL); + gfc_commit_symbol (tmp->n.sym); e = gfc_lval_expr_from_sym (tmp->n.sym); /* Should the lhs be a section, use its array ref for the diff --git a/gcc/testsuite/gfortran.dg/defined_assignment_6.f90 b/gcc/testsuite/gfortran.dg/defined_assignment_6.f90 new file mode 100644 index 0000000..a5666fe --- /dev/null +++ b/gcc/testsuite/gfortran.dg/defined_assignment_6.f90 @@ -0,0 +1,36 @@ +! { dg-do compile } +! +! PR fortran/57364 +! +! Contributed by Damian Rouson +! +module ref_counter_implementation + type ref_counter + contains + procedure :: assign + generic :: assignment(=) => assign + end type +contains + subroutine assign (lhs, rhs) + class (ref_counter), intent(inout) :: lhs + class (ref_counter), intent(in) :: rhs + end subroutine +end module +module foo_parent_implementation + use ref_counter_implementation ,only: ref_counter + type :: foo_parent + type(ref_counter) :: counter + end type +contains + type(foo_parent) function new_foo_parent() + end function +end module +module foo_implementation + use foo_parent_implementation ,only: foo_parent,new_foo_parent + type, extends(foo_parent) :: foo + end type +contains + type(foo) function new_foo() + new_foo%foo_parent = new_foo_parent() + end function +end module