From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mout.gmx.net (mout.gmx.net [212.227.17.21]) by sourceware.org (Postfix) with ESMTPS id 15A313858283; Wed, 29 Nov 2023 21:16:24 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 15A313858283 Authentication-Results: sourceware.org; dmarc=pass (p=none dis=none) header.from=gmx.de Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=gmx.de ARC-Filter: OpenARC Filter v1.0.0 sourceware.org 15A313858283 Authentication-Results: server2.sourceware.org; arc=none smtp.remote-ip=212.227.17.21 ARC-Seal: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1701292588; cv=none; b=nwAkAgZp+7X7N94qdtPVeshv3BxfIMIPakwjiQDHMuSdNYfkeSkaRajmqp3hD3SBY1gLTktrsFL6V9gRYuMx//m6DEsGCseTyXAS86V2FoytVH7EaDPVmk2Th4dTwl222n5KLe/wBfZOdlM5KuiiWy4VrFI3NHGMYOsuz+j0gPU= ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1701292588; c=relaxed/simple; bh=WUjIAMP1o1zHvKfKTFXb0iIElCnQvradLaw+dynIgkM=; h=DKIM-Signature:MIME-Version:Message-ID:From:To:Subject:Date; b=TrgymR6cgUXhly+14MNdoFdhP3Jn/aOofCE6uhoSl9cUrrTiuZlcHjShqSgMHBQmYPK3FYgJfLyL4P2ukTpYYGbEDj69T01nnUm+zDTMSFR4Pfly5vU9pQ/MhIXBUJmC3T8IiLTluMErajlOLi/syVggDvdfmXFyG9aFEj7/2OE= ARC-Authentication-Results: i=1; server2.sourceware.org DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=gmx.de; s=s31663417; t=1701292583; x=1701897383; i=anlauf@gmx.de; bh=WUjIAMP1o1zHvKfKTFXb0iIElCnQvradLaw+dynIgkM=; h=X-UI-Sender-Class:From:To:Subject:Date; b=fICcBxrWDerf5vXUkimC0GUPp46Ns4N25Sp7Nj7tQRGd0BoAQfuFUoEvxPhVzf7E 3faWoNh1Y/dPl4v5QZu48aJZLSobcrs5bvi4vSDZg2hIhJL2m0oe9WYhhhzEEstFY y6qQGhybfMcwtHvL+Jp6ap8Kq/M7X7yAAZShuWgjmdY+NRFVx5VYaJtk22Zla/ZLi 2ZedSKzOC/n3a6+aePhQpXMcVoqS3zeLREhi+GJ7erx+VdCXSDSWQgWVvqvpZMDKC WdbLj8xiTwhVPjoXuyrz+xjVse7VlExWFQAjesvW+hmLprXd0hfjvs9uy2mT2TLbO NlS3aTzGb3WwR17n2Q== X-UI-Sender-Class: 724b4f7f-cbec-4199-ad4e-598c01a50d3a Received: from [79.232.146.2] ([79.232.146.2]) by web-mail.gmx.net (3c-app-gmx-bap39.server.lan [172.19.172.109]) (via HTTP); Wed, 29 Nov 2023 22:16:23 +0100 MIME-Version: 1.0 Message-ID: From: Harald Anlauf To: fortran , gcc-patches Subject: [PATCH] Fortran: fix TARGET attribute of associating entity in ASSOCIATE [PR112764] Content-Type: multipart/mixed; boundary=nika-a64482cc-7727-4c32-9e4c-4f2831da68e5 Date: Wed, 29 Nov 2023 22:16:23 +0100 Importance: normal Sensitivity: Normal X-Priority: 3 X-Provags-ID: V03:K1:3OlX2Km6gQ7UKnZiWvSFl/vaLCvTd7Yi3U7yVN4+1MVBS+gB2NrqLef/epPpaepf6rnwW pJQ3mO1hmx5pWdhbcDa3h6Ov4Nh1uE8bwPvWMCUVJ305UNFKswDhqNA8+5RmlAgiTEVxXZ5t6xDW MEwyqjo1ZG8PJGSuUrfJik6I7SmxgyfjeXpH1jhZvledHU41RQ7tyKc2KO5GJ5tS+0XNTPdS6ih/ z4TpwjiO+x9jACaXyIgcpTjxGI3HTrKKmItcz0UMiA1gzCeR3VBwZOKgUrEdXPxmFkX0USn/d1En 3w= UI-OutboundReport: notjunk:1;M01:P0:SZFvMF06cUI=;2kRjRxA3B/Y3ckF0ODdp/QFe9+V +IKvD5NA8qqA3f2/Le9BvLiiB3Dne/GIxyskf/p6hqtqFvaIAlL2CQtsdXYoudM9O0q7gJsjg I42uRODOPCG74gVQPCQ1N1b59uqCjd6BM+nAP3MarLLkOGiFqWiyzfj7FBsTXkQbzjqgK9jt7 5e5v6LEEl6PL+R0yBz0Pi2Iq8e5rGtQ0huRZYymLyDTfZgi+oNbqG0jxqVNtUhBISMlHjAa7d 5Kn0Ed/CV3xhGU7Klk14jn4P7tcyk0JOfpDPB4ZT0wXzzJNITV6zSQ4+6UFiOp74eWOlxxbx6 NNh38l/iLgKs3yhtaDF7ub0YEbGuyCxvPWeb2pxEhcIVAAtF4oQkLwTjV3VvK/R5aKyNS6I72 1wViZzvJs0VYdUfMP+fSOVSvmqIQ5J+4DV3ZRrRF5sRa682BlMcnCQBbDXgO4F0AsIzq81vOQ NAL5+fJtky7FwHgXGKlV3oXQFHU0UzxDisF37FWtlELBjfLLmWp7deF8IpoHcQk1j7WBjol/U hBFACJbl1Tfu2LNuqSrYcs9fFMV2eH/GVTufinEmrCEw33gBitvCDXMzNd+1yUsMB8y3DHlVa wwjaI48didFVXgcBdBbHbs/XtZfgBOFbqor19DczDaLARhAUM25BIaKc8GO2+Z8alAKI0Pw01 Ptec8SyWV9FejQFPq8ETz4inAYp5Sfjhovn8MYO8F/B+7qQowfgZWjN6svH087WI597hxxBxZ +Duih+mrzeuyKyOYA7ofurkWwxiIf7QeVHaBYwpgjPcbLn9lh8NiEOc4yqmUwrTu8y8rBKv3A HT5jCn6M+x2CvAPc2C93ZgJg== X-Spam-Status: No, score=-10.6 required=5.0 tests=BAYES_00,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,FREEMAIL_FROM,GIT_PATCH_0,RCVD_IN_BARRACUDACENTRAL,RCVD_IN_DNSWL_LOW,RCVD_IN_MSPIKE_H4,RCVD_IN_MSPIKE_WL,SPF_HELO_NONE,SPF_PASS,TXREP,T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org List-Id: --nika-a64482cc-7727-4c32-9e4c-4f2831da68e5 Content-Type: text/plain; charset=UTF-8 Dear all, the attached simple patch fixes the handling of the TARGET attribute of an associate variable in an ASSOCIATE construct. See e.g. F2018:11.1.3.3 for a standard reference. (Note that the patch does not touch the pointer or allocatable attributes, as that would lead to several testsuite regressions and thus needs more work.) Regtested on x86_64-pc-linux-gnu. OK for mainline? Thanks, Harald --nika-a64482cc-7727-4c32-9e4c-4f2831da68e5 Content-Type: text/x-patch Content-Disposition: attachment; filename=pr112764.diff Content-Transfer-Encoding: quoted-printable =46rom 023dc4691c73ed594d5c1085f1aab897ca4a7153 Mon Sep 17 00:00:00 2001 From: Harald Anlauf Date: Wed, 29 Nov 2023 21:47:24 +0100 Subject: [PATCH] Fortran: fix TARGET attribute of associating entity in ASSOCIATE [PR112764] The associating entity in an ASSOCIATE construct has the TARGET attribute if and only if the selector is a variable and has either the TARGET or POINTER attribute (e.g. F2018:11.1.3.3). gcc/fortran/ChangeLog: PR fortran/112764 * primary.cc (gfc_variable_attr): Set TARGET attribute of associating entity dependent on TARGET or POINTER attribute of selector. gcc/testsuite/ChangeLog: PR fortran/112764 * gfortran.dg/associate_62.f90: New test. =2D-- gcc/fortran/primary.cc | 16 ++++++++++++++ gcc/testsuite/gfortran.dg/associate_62.f90 | 25 ++++++++++++++++++++++ 2 files changed, 41 insertions(+) create mode 100644 gcc/testsuite/gfortran.dg/associate_62.f90 diff --git a/gcc/fortran/primary.cc b/gcc/fortran/primary.cc index d3aeeb89362..7278932b634 100644 =2D-- a/gcc/fortran/primary.cc +++ b/gcc/fortran/primary.cc @@ -2653,6 +2653,22 @@ gfc_variable_attr (gfc_expr *expr, gfc_typespec *ts= ) if (pointer || attr.proc_pointer) target =3D 1; + /* F2018:11.1.3.3: Other attributes of associate names + "The associating entity does not have the ALLOCATABLE or POINTER + attributes; it has the TARGET attribute if and only if the selector = is + a variable and has either the TARGET or POINTER attribute." */ + if (sym->attr.associate_var && sym->assoc && sym->assoc->target) + { + if (sym->assoc->target->expr_type =3D=3D EXPR_VARIABLE) + { + symbol_attribute tgt_attr; + tgt_attr =3D gfc_expr_attr (sym->assoc->target); + target =3D (tgt_attr.pointer || tgt_attr.target); + } + else + target =3D 0; + } + if (ts !=3D NULL && expr->ts.type =3D=3D BT_UNKNOWN) *ts =3D sym->ts; diff --git a/gcc/testsuite/gfortran.dg/associate_62.f90 b/gcc/testsuite/gf= ortran.dg/associate_62.f90 new file mode 100644 index 00000000000..ce5bf286ee8 =2D-- /dev/null +++ b/gcc/testsuite/gfortran.dg/associate_62.f90 @@ -0,0 +1,25 @@ +! { dg-do compile } +! PR fortran/112764 +! Contributed by martin + +program assoc_target + implicit none + integer, dimension(:,:), pointer :: x + integer, pointer :: j + integer, allocatable, target :: z(:) + allocate (x(1:100,1:2), source=3D1) + associate (i1 =3D> x(:,1)) + j =3D> i1(1) + print *, j + if (j /=3D 1) stop 1 + end associate + deallocate (x) + allocate (z(3)) + z(:) =3D [1,2,3] + associate (i2 =3D> z(2:3)) + j =3D> i2(1) + print *, j + if (j /=3D 2) stop 2 + end associate + deallocate (z) +end program assoc_target =2D- 2.35.3 --nika-a64482cc-7727-4c32-9e4c-4f2831da68e5--