From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from cc-smtpout2.netcologne.de (cc-smtpout2.netcologne.de [IPv6:2001:4dd0:100:1062:25:2:0:2]) by sourceware.org (Postfix) with ESMTPS id 3F4553858D32; Sun, 2 Oct 2022 20:07:39 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org 3F4553858D32 Authentication-Results: sourceware.org; dmarc=pass (p=none dis=none) header.from=netcologne.de Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=netcologne.de Received: from cc-smtpin1.netcologne.de (cc-smtpin1.netcologne.de [89.1.8.201]) by cc-smtpout2.netcologne.de (Postfix) with ESMTP id 0E09A1268B; Sun, 2 Oct 2022 22:07:37 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=netcologne.de; s=nc1116a; t=1664741257; bh=UV8gC1ndAu4SPEwpjVh6In6QOfWxqVarYDUxFkvIjsU=; h=Message-ID:Date:To:From:Subject:From; b=XZqvuNjSE3+Zcgf2/n8eATsvjOcnmVVUx2TbPt2Vg/TpMppHx1ZlH0jE5Wmjzg3yg iKHXJwxj1ECW4ngkCZyBg1j7hFgiROvrQ7Ohk05PGA/Eh+f90XnaNBqp4gTM0tF6P3 WDO2QEHUE1/GjMcxORVi95oZRpt9hnxBa7EwNpcIwJvCDCLEvEL5z+jG8zT1cTzb7s U2XnA6GY9Sqqji+1GAZjiUXthk02dJnKnbPBQjrIKi6sOcnTtEIm42vm5mSM3gds4C zwNYG1VfmLb1xvmRoMU+QN5exAeYq0VENVuuu6+qyj+DUszVI2h8uV8RryCElDovkV DLUGNt8fivEKw== Received: from [IPV6:2a0a:a540:3831:0:7285:c2ff:fe6c:992d] (2a0a-a540-3831-0-7285-c2ff-fe6c-992d.ipv6dyn.netcologne.de [IPv6:2a0a:a540:3831:0:7285:c2ff:fe6c:992d]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) by cc-smtpin1.netcologne.de (Postfix) with ESMTPSA id 8C80111D70; Sun, 2 Oct 2022 22:07:35 +0200 (CEST) Content-Type: multipart/mixed; boundary="------------1TRBSfY0wLCWgGCRmEHWmeuv" Message-ID: Date: Sun, 2 Oct 2022 22:07:34 +0200 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:91.0) Gecko/20100101 Thunderbird/91.11.0 Content-Language: en-US To: "fortran@gcc.gnu.org" , gcc-patches From: Thomas Koenig Subject: [patch, RFC. Fortran] Some clobbering for INTENT(OUT) arrays X-NetCologne-Spam: L X-Rspamd-Queue-Id: 8C80111D70 X-Spamd-Bar: / X-Spam-Status: No, score=-11.3 required=5.0 tests=BAYES_00,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,GIT_PATCH_0,RCVD_IN_DNSWL_LOW,SPF_HELO_NONE,SPF_PASS,TXREP 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: This is a multi-part message in MIME format. --------------1TRBSfY0wLCWgGCRmEHWmeuv Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit Hi, following Mikael's recent patch series, here is a first idea of what extending clobbering to arrays wold look like. The attached patch works for a subset of cases, for example program main implicit none interface subroutine foo(a) integer, intent(out) :: a(*) end subroutine foo end interface integer, dimension(10) :: a call foo(a) end program main and program main implicit none interface subroutine foo(a) integer, intent(out) :: a(:) end subroutine foo end interface integer, dimension(10) :: a a(1) = 32 a(2) = 32 call foo(a) end program main but it does not cover cases like an assumed-size array being handed down to an INTENT(OUT) argument. What happens if the + if (!sym->attr.allocatable && !sym->attr.pointer + && !POINTER_TYPE_P (TREE_TYPE (sym->backend_decl))) part is taken out is that the whole descriptor can be clobbered in such a case, which is of course not what is wanted. I am a bit stuck of how to generate a reference to the first element of the array (really, just dereferencing the data pointer) in the most elegant way. I am currently leaning towards building a gfc_expr, which should work, but would be less than elegant. So, anything more elegant at hand? Best regards Thomas --------------1TRBSfY0wLCWgGCRmEHWmeuv Content-Type: text/x-patch; charset=UTF-8; name="p1.diff" Content-Disposition: attachment; filename="p1.diff" Content-Transfer-Encoding: base64 ZGlmZiAtLWdpdCBhL2djYy9mb3J0cmFuL3RyYW5zLWV4cHIuY2MgYi9nY2MvZm9ydHJhbi90 cmFucy1leHByLmNjCmluZGV4IDRmM2FlODJkMzljLi5iYmIwMGY5MGE3NyAxMDA2NDQKLS0t IGEvZ2NjL2ZvcnRyYW4vdHJhbnMtZXhwci5jYworKysgYi9nY2MvZm9ydHJhbi90cmFucy1l eHByLmNjCkBAIC00Myw2ICs0Myw3IEBAIGFsb25nIHdpdGggR0NDOyBzZWUgdGhlIGZpbGUg Q09QWUlORzMuICBJZiBub3Qgc2VlCiAjaW5jbHVkZSAiZ2ltcGxpZnkuaCIKICNpbmNsdWRl ICJ0bS5oIgkJLyogRm9yIENIQVJfVFlQRV9TSVpFLiAgKi8KIAorI2luY2x1ZGUgImRlYnVn LmgiCiAKIC8qIENhbGN1bGF0ZSB0aGUgbnVtYmVyIG9mIGNoYXJhY3RlcnMgaW4gYSBzdHJp bmcuICAqLwogCkBAIC01OTgxLDcgKzU5ODIsNiBAQCBwb3N0X2NhbGw6CiAgICAgZ2ZjX2Fk ZF9ibG9ja190b19ibG9jayAoJnBhcm1zZS0+cG9zdCwgJmJsb2NrKTsKIH0KIAotCiAvKiBH ZW5lcmF0ZSBjb2RlIGZvciBhIHByb2NlZHVyZSBjYWxsLiAgTm90ZSBjYW4gcmV0dXJuIHNl LT5wb3N0ICE9IE5VTEwuCiAgICBJZiBzZS0+ZGlyZWN0X2J5cmVmIGlzIHNldCB0aGVuIHNl LT5leHByIGNvbnRhaW5zIHRoZSByZXR1cm4gcGFyYW1ldGVyLgogICAgUmV0dXJuIG5vbnpl cm8sIGlmIHRoZSBjYWxsIGhhcyBhbHRlcm5hdGUgc3BlY2lmaWVycy4KQEAgLTYwOTksNiAr NjA5OSw3IEBAIGdmY19jb252X3Byb2NlZHVyZV9jYWxsIChnZmNfc2UgKiBzZSwgZ2ZjX3N5 bWJvbCAqIHN5bSwKICAgICB7CiAgICAgICBib29sIGZpbmFsaXplZCA9IGZhbHNlOwogICAg ICAgdHJlZSBkZXJpdmVkX2FycmF5ID0gTlVMTF9UUkVFOworICAgICAgdHJlZSBjbG9iYmVy X2FycmF5ID0gTlVMTF9UUkVFOwogCiAgICAgICBlID0gYXJnLT5leHByOwogICAgICAgZnN5 bSA9IGZvcm1hbCA/IGZvcm1hbC0+c3ltIDogTlVMTDsKQEAgLTY4OTYsMTAgKzY4OTcsMjMg QEAgZ2ZjX2NvbnZfcHJvY2VkdXJlX2NhbGwgKGdmY19zZSAqIHNlLCBnZmNfc3ltYm9sICog c3ltLAogCQkJCQkgICAgIGZzeW0tPmF0dHIucG9pbnRlcik7CiAJCX0KIAkgICAgICBlbHNl Ci0JCS8qIFRoaXMgaXMgd2hlcmUgd2UgaW50cm9kdWNlIGEgdGVtcG9yYXJ5IHRvIHN0b3Jl IHRoZQotCQkgICByZXN1bHQgb2YgYSBub24tbHZhbHVlIGFycmF5IGV4cHJlc3Npb24uICAq LwotCQlnZmNfY29udl9hcnJheV9wYXJhbWV0ZXIgKCZwYXJtc2UsIGUsIG5vZGVzY19hcmcs IGZzeW0sCi0JCQkJCSAgc3ltLT5uYW1lLCBOVUxMKTsKKwkJeworCQkgIC8qIFRoaXMgaXMg d2hlcmUgd2UgaW50cm9kdWNlIGEgdGVtcG9yYXJ5IHRvIHN0b3JlIHRoZQorCQkgICAgIHJl c3VsdCBvZiBhIG5vbi1sdmFsdWUgYXJyYXkgZXhwcmVzc2lvbi4gICovCisJCSAgZ2ZjX2Nv bnZfYXJyYXlfcGFyYW1ldGVyICgmcGFybXNlLCBlLCBub2Rlc2NfYXJnLCBmc3ltLAorCQkJ CQkgICAgc3ltLT5uYW1lLCBOVUxMKTsKKwkJICBpZiAoZnN5bSAmJiBmc3ltLT5hdHRyLmlu dGVudCA9PSBJTlRFTlRfT1VUCisJCSAgICAgICYmIGdmY19mdWxsX2FycmF5X3JlZl9wIChl LT5yZWYsIE5VTEwpKQorCQkgICAgeworCQkgICAgICBnZmNfc3ltYm9sICpzeW0gPSBlLT5z eW10cmVlLT5uLnN5bTsKKwkJICAgICAgaWYgKCFzeW0tPmF0dHIuYWxsb2NhdGFibGUgJiYg IXN5bS0+YXR0ci5wb2ludGVyCisJCQkgICYmICFQT0lOVEVSX1RZUEVfUCAoVFJFRV9UWVBF IChzeW0tPmJhY2tlbmRfZGVjbCkpKQorCQkJY2xvYmJlcl9hcnJheQorCQkJICA9IGdmY19i dWlsZF9hcnJheV9yZWYgKGUtPnN5bXRyZWUtPm4uc3ltLT5iYWNrZW5kX2RlY2wsCisJCQkJ CQkgYnVpbGRfaW50X2NzdCAoc2l6ZV90eXBlX25vZGUsIDApLAorCQkJCQkJIE5VTExfVFJF RSwgdHJ1ZSwgTlVMTF9UUkVFKTsKKwkJICAgIH0KKwkJfQogCiAJICAgICAgLyogSWYgYW4g QUxMT0NBVEFCTEUgZHVtbXkgYXJndW1lbnQgaGFzIElOVEVOVChPVVQpIGFuZCBpcwogCQkg YWxsb2NhdGVkIG9uIGVudHJ5LCBpdCBtdXN0IGJlIGRlYWxsb2NhdGVkLgpAQCAtNjk1Miw2 ICs2OTY2LDEzIEBAIGdmY19jb252X3Byb2NlZHVyZV9jYWxsIChnZmNfc2UgKiBzZSwgZ2Zj X3N5bWJvbCAqIHN5bSwKIAkJCQkgICAgICAgdG1wLCBidWlsZF9lbXB0eV9zdG10IChpbnB1 dF9sb2NhdGlvbikpOwogCQkgIGdmY19hZGRfZXhwcl90b19ibG9jayAoJnNlLT5wcmUsIHRt cCk7CiAJCX0KKworCSAgICAgIGlmIChjbG9iYmVyX2FycmF5ICE9IE5VTExfVFJFRSkKKwkJ eworCQkgIHRyZWUgY2xvYmJlcjsKKwkJICBjbG9iYmVyID0gYnVpbGRfY2xvYmJlciAoVFJF RV9UWVBFKGNsb2JiZXJfYXJyYXkpKTsKKwkJICBnZmNfYWRkX21vZGlmeSAoJmNsb2JiZXJz LCBjbG9iYmVyX2FycmF5LCBjbG9iYmVyKTsKKwkJfQogCSAgICB9CiAJfQogICAgICAgLyog U3BlY2lhbCBjYXNlIGZvciBhbiBhc3N1bWVkLXJhbmsgZHVtbXkgYXJndW1lbnQuICovCg== --------------1TRBSfY0wLCWgGCRmEHWmeuv--