From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 119105 invoked by alias); 24 Jan 2020 11:45:27 -0000 Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Id: List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Received: (qmail 118964 invoked by uid 89); 24 Jan 2020 11:45:18 -0000 Authentication-Results: sourceware.org; auth=none X-Spam-SWARE-Status: No, score=-8.9 required=5.0 tests=AWL,BAYES_00,RCVD_IN_DNSWL_NONE,SPF_PASS autolearn=ham version=3.3.1 spammy=helped X-HELO: mail-lf1-f51.google.com Received: from mail-lf1-f51.google.com (HELO mail-lf1-f51.google.com) (209.85.167.51) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Fri, 24 Jan 2020 11:45:16 +0000 Received: by mail-lf1-f51.google.com with SMTP id 203so892359lfa.12 for ; Fri, 24 Jan 2020 03:45:10 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=MNtSomzjYY10OqdFGGQUG+VQrSK+dsTAhKDtOvoNkSA=; b=iRN3n8/3Lr3izKAJqDyBVQlmPq3vGBRmc/6sUwrBSR3PfR/LWlaiPGkZaAomUCJdhb U/5kr82+9BeEUl5MK4b91oyxzcDobKmIfTNeaoRo3IaD2e+s+7y9DdwJxbVMTyfw9vNh J1uRrIFSMk9bvelbn2UwejxkBsOpPmIBjP6qmH7H5DuRFzPZpmozQ0LQL30f50EGpAgX /zPXF2QG7TlQLwWGZFzcWlM/V9BzxgwkyuvdKgooytjifiGS50Qb+AhhCEeJuVEwIyJZ PSBgRfDDb73Y2DZ7UnwIudvk1pO3eZM0zMYASbbm0LocmxLjuZfvWMHqcRQgv9S2hxTl lryg== MIME-Version: 1.0 References: In-Reply-To: From: Prathamesh Kulkarni Date: Fri, 24 Jan 2020 12:22:00 -0000 Message-ID: Subject: Re: [RFC] [c-family] PR92867 - Add returns_arg attribute To: Joseph Myers Cc: gcc Patches , Jakub Jelinek Content-Type: multipart/mixed; boundary="0000000000001b10ce059ce14a7b" X-IsSubscribed: yes X-SW-Source: 2020-01/txt/msg01656.txt.bz2 --0000000000001b10ce059ce14a7b Content-Type: text/plain; charset="UTF-8" Content-length: 2145 On Tue, 21 Jan 2020 at 04:35, Joseph Myers wrote: > > On Mon, 20 Jan 2020, Prathamesh Kulkarni wrote: > > > Hi, > > This patch attempts to add returns_arg attribute for c-family > > languages. For C++ methods, first arg is assumed to be this pointer, > > This is missing .texi documentation explaining the attribute and the cases > for which it would be useful. > > A restriction to the first 4 arguments is not a good design of a language > feature, whatever implementation issues there may be. > > Do you intend to update builtins.def in a followup patch for the various > built-in functions (e.g. memcpy) for which such an attribute would be > applicable? > > When extracting an integer value from an INTEGER_CST provided in user > source code, you should always use tree_to_uhwi / tree_to_shwi as > appropriate, after checking the relevant tree_fits_*, rather than using > TREE_INT_CST_LOW directly, to avoid mishandling arguments that have a > small number in the low part of the INTEGER_CST but have bits set in the > high part as well. Any direct use of TREE_INT_CST_LOW should have a > specific justification for why it is correct to discard the high part of > the integer. See c-attribs.c:positional_argument, and try to use that > function if possible rather than reimplementing bits of it, so that > handling of attribute arguments giving the position of a function argument > can be as consistent as possible between different attributes. > > There are coding style issues, e.g. diagnostics should not end with '.' > and lines should be broken before not after an operator. Hi Joseph, Thanks for the suggestions. Using positional_argument helped to simplify the patch, and also catches the case when return-type and arg-type differ. Does it look OK ? I will update builtins.def in follow-up patch. The middle-end representation issue of ERF_RETURNS_ARG still remains, which restricts the attribute till first four args. The patch simply emits sorry(), for arguments beyond first four.. I will try to address this in follow up patch. Thanks, Prathamesh > > -- > Joseph S. Myers > joseph@codesourcery.com --0000000000001b10ce059ce14a7b Content-Type: application/x-patch; name="returns-arg-2.diff" Content-Disposition: attachment; filename="returns-arg-2.diff" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_k5s318he0 Content-length: 6369 ZGlmZiAtLWdpdCBhL2djYy9jLWZhbWlseS9jLWF0dHJpYnMuYyBiL2djYy9j LWZhbWlseS9jLWF0dHJpYnMuYwppbmRleCBkYzk1NzljNWM2MC4uYmFlZDFi ODExYmEgMTAwNjQ0Ci0tLSBhL2djYy9jLWZhbWlseS9jLWF0dHJpYnMuYwor KysgYi9nY2MvYy1mYW1pbHkvYy1hdHRyaWJzLmMKQEAgLTE1MCw2ICsxNTAs NyBAQCBzdGF0aWMgdHJlZSBoYW5kbGVfZGVzaWduYXRlZF9pbml0X2F0dHJp YnV0ZSAodHJlZSAqLCB0cmVlLCB0cmVlLCBpbnQsIGJvb2wgKik7CiBzdGF0 aWMgdHJlZSBoYW5kbGVfcGF0Y2hhYmxlX2Z1bmN0aW9uX2VudHJ5X2F0dHJp YnV0ZSAodHJlZSAqLCB0cmVlLCB0cmVlLAogCQkJCQkJICAgICAgIGludCwg Ym9vbCAqKTsKIHN0YXRpYyB0cmVlIGhhbmRsZV9jb3B5X2F0dHJpYnV0ZSAo dHJlZSAqLCB0cmVlLCB0cmVlLCBpbnQsIGJvb2wgKik7CitzdGF0aWMgdHJl ZSBoYW5kbGVfcmV0dXJuc19hcmdfYXR0cmlidXRlICh0cmVlICosIHRyZWUs IHRyZWUsIGludCwgYm9vbCAqKTsKIAogLyogSGVscGVyIHRvIGRlZmluZSBh dHRyaWJ1dGUgZXhjbHVzaW9ucy4gICovCiAjZGVmaW5lIEFUVFJfRVhDTChu YW1lLCBmdW5jdGlvbiwgdHlwZSwgdmFyaWFibGUpCVwKQEAgLTQ4NCw2ICs0 ODUsOCBAQCBjb25zdCBzdHJ1Y3QgYXR0cmlidXRlX3NwZWMgY19jb21tb25f YXR0cmlidXRlX3RhYmxlW10gPQogCQkJICAgICAgaGFuZGxlX25vaW5pdF9h dHRyaWJ1dGUsIGF0dHJfbm9pbml0X2V4Y2x1c2lvbnMgfSwKICAgeyAiYWNj ZXNzIiwJCSAgICAgIDEsIDMsIGZhbHNlLCB0cnVlLCB0cnVlLCBmYWxzZSwK IAkJCSAgICAgIGhhbmRsZV9hY2Nlc3NfYXR0cmlidXRlLCBOVUxMIH0sCisg IHsgInJldHVybnNfYXJnIiwJICAgICAgMSwgMSwgdHJ1ZSwgZmFsc2UsIGZh bHNlLCBmYWxzZSwKKwkJCSAgICAgIGhhbmRsZV9yZXR1cm5zX2FyZ19hdHRy aWJ1dGUsIE5VTEwgfSwKICAgeyBOVUxMLCAgICAgICAgICAgICAgICAgICAg IDAsIDAsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBOVUxMLCBOVUxM IH0KIH07CiAKQEAgLTQ2MDMsNiArNDYwNiw1NSBAQCBoYW5kbGVfcGF0Y2hh YmxlX2Z1bmN0aW9uX2VudHJ5X2F0dHJpYnV0ZSAodHJlZSAqLCB0cmVlIG5h bWUsIHRyZWUgYXJncywKICAgcmV0dXJuIE5VTExfVFJFRTsKIH0KIAorLyog SGFuZGxlIGEgInJldHVybnNfYXJnIiBhdHRyaWJ1dGU7IGFyZ3VtZW50cyBh cyBpbgorICAgc3RydWN0IGF0dHJpYnV0ZV9zcGVjLmhhbmRsZXIuICAqLwor CitzdGF0aWMgdHJlZQoraGFuZGxlX3JldHVybnNfYXJnX2F0dHJpYnV0ZSAo dHJlZSAqbm9kZSwgdHJlZSBuYW1lLCB0cmVlIGFyZ3MsCisJCQkgICAgICBp bnQgZmxhZ3MsIGJvb2wgKm5vX2FkZF9hdHRycykKK3sKKyAgdHJlZSBkZWNs ID0gKm5vZGU7CisgIHRyZWUgcmV0dHlwZSA9IFRSRUVfVFlQRSAoZGVjbCk7 CisKKyAgaWYgKFRSRUVfQ09ERSAocmV0dHlwZSkgPT0gTUVUSE9EX1RZUEUK KyAgICAgIHx8IFRSRUVfQ09ERSAocmV0dHlwZSkgPT0gRlVOQ1RJT05fVFlQ RSkKKyAgICByZXR0eXBlID0gVFJFRV9UWVBFIChyZXR0eXBlKTsKKworICBp ZiAoVk9JRF9UWVBFX1AgKHJldHR5cGUpKQorICAgIHsKKyAgICAgIHdhcm5p bmdfYXQgKERFQ0xfU09VUkNFX0xPQ0FUSU9OIChkZWNsKSwgT1BUX1dhdHRy aWJ1dGVzLAorCQkgICIlcUUgYXR0cmlidXRlIGlnbm9yZWQgb24gYSBmdW5j dGlvbiByZXR1cm5pbmcgJXFULiIsCisJCSAgbmFtZSwgcmV0dHlwZSk7Cisg ICAgICAqbm9fYWRkX2F0dHJzID0gdHJ1ZTsKKyAgICAgIHJldHVybiBOVUxM X1RSRUU7CisgICAgfQorCisgIGlmICghcG9zaXRpb25hbF9hcmd1bWVudCAo VFJFRV9UWVBFIChkZWNsKSwgbmFtZSwgVFJFRV9WQUxVRSAoYXJncyksCisJ CQkgICAgVFJFRV9DT0RFIChyZXR0eXBlKSkpCisgICAgeworICAgICAgKm5v X2FkZF9hdHRycyA9IHRydWU7CisgICAgICByZXR1cm4gTlVMTF9UUkVFOwor ICAgIH0KKworICAqbm9fYWRkX2F0dHJzID0gZmFsc2U7CisgIGdjY19hc3Nl cnQgKGFyZ3MpOworICB0cmVlIHZhbCA9IFRSRUVfVkFMVUUgKGFyZ3MpOwor ICB1bnNpZ25lZCBIT1NUX1dJREVfSU5UIGFyZ251bSA9IHRyZWVfdG9fdWh3 aSAodmFsKTsKKworICBpZiAoYXJnbnVtID49IDQpCisgICAgc29ycnkgKCJy ZXR1cm5zX2FyZyBhdHRyIGNhbiBvbmx5IGJlIGFwcGxpZWQgdG8gZmlyc3Qg Zm91ciBhcmdzLlxuIik7CisKKyAgY2hhciBzWzJdOworICBzWzBdID0gYXJn bnVtICsgJzAnOworICBzWzFdID0gJ1wwJzsKKworICB0cmVlIGF0dHIgPSB0 cmVlX2NvbnMgKGdldF9pZGVudGlmaWVyICgiZm4gc3BlYyIpLAorCQkJIGJ1 aWxkX3RyZWVfbGlzdCAoTlVMTF9UUkVFLCBidWlsZF9zdHJpbmcgKDEsIHMp KSwKKwkJCSBOVUxMX1RSRUUpOworICBkZWNsX2F0dHJpYnV0ZXMgKG5vZGUs IGF0dHIsIGZsYWdzKTsKKyAgcmV0dXJuIE5VTExfVFJFRTsKK30KKwogLyog QXR0ZW1wdCB0byBwYXJ0aWFsbHkgdmFsaWRhdGUgYSBzaW5nbGUgYXR0cmli dXRlIEFUVFIgYXMgaWYKICAgIGl0IHdlcmUgdG8gYmUgYXBwbGllZCB0byBh biBlbnRpdHkgT1BFUi4gICovCiAKZGlmZiAtLWdpdCBhL2djYy9kb2MvZXh0 ZW5kLnRleGkgYi9nY2MvZG9jL2V4dGVuZC50ZXhpCmluZGV4IGVjOTljMzhh NjA3Li4zNTMxZTBjODI5MiAxMDA2NDQKLS0tIGEvZ2NjL2RvYy9leHRlbmQu dGV4aQorKysgYi9nY2MvZG9jL2V4dGVuZC50ZXhpCkBAIC0zNTY2LDYgKzM1 NjYsMTkgQEAgZGlhZ25vc2VkLiAgQmVjYXVzZSBhIHB1cmUgZnVuY3Rpb24g Y2Fubm90IGhhdmUgYW55IG9ic2VydmFibGUgc2lkZQogZWZmZWN0cyBpdCBk b2VzIG5vdCBtYWtlIHNlbnNlIGZvciBzdWNoIGEgZnVuY3Rpb24gdG8gcmV0 dXJuIEBjb2Rle3ZvaWR9LgogRGVjbGFyaW5nIHN1Y2ggYSBmdW5jdGlvbiBp cyBkaWFnbm9zZWQuCiAKK0BpdGVtIHJldHVybnNfYXJnIChAdmFye3Bvc2l0 aW9ufSkKK0BjaW5kZXggQGNvZGV7cmV0dXJuc19hcmd9IGZ1bmN0aW9uIGF0 dHJpYnV0ZQorVGhlIEBjb2Rle3JldHVybnNfYXJnfSwgd2hlbiBhcHBsaWVk IHRvIGFuIGFyZ3VtZW50IHN0YXRlcyB0aGF0Cit0aGUgZnVuY3Rpb24gcmV0 dXJucyB0aGF0IGFyZ3VtZW50IHVtb2RpZmllZC4KK0ZvciBpbnN0YW5jZSwg dGhlIGRlY2xhcmF0aW9uOgorCitAc21hbGxleGFtcGxlCitpbnQgZm9vKGlu dCB4KSBfX2F0dHJpYnV0ZV9fKChyZXR1cm5zX2FyZygxKSkpOworQGVuZCBz bWFsbGV4YW1wbGUKKworQG5vaW5kZW50CitsZXRzIHRoZSBjb21waWxlciBr bm93IHRoYXQgZm9vIHJldHVybnMgeC4KKwogQGl0ZW0gcmV0dXJuc19ub25u dWxsCiBAY2luZGV4IEBjb2Rle3JldHVybnNfbm9ubnVsbH0gZnVuY3Rpb24g YXR0cmlidXRlCiBUaGUgQGNvZGV7cmV0dXJuc19ub25udWxsfSBhdHRyaWJ1 dGUgc3BlY2lmaWVzIHRoYXQgdGhlIGZ1bmN0aW9uCmRpZmYgLS1naXQgYS9n Y2MvdGVzdHN1aXRlL2crKy5kZy9XYXR0cmlidXRlcy02LkMgYi9nY2MvdGVz dHN1aXRlL2crKy5kZy9XYXR0cmlidXRlcy02LkMKbmV3IGZpbGUgbW9kZSAx MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLmZjZjY2MGE0Njg0Ci0tLSAvZGV2 L251bGwKKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nKysuZGcvV2F0dHJpYnV0ZXMt Ni5DCkBAIC0wLDAgKzEsMTMgQEAKKy8qIHsgZGctZG8gY29tcGlsZSB9ICov CisvKiBDaGVjayB0aGF0ICd0aGlzJyBpcyBjb3VudGVkIGFzIGZpcnN0IGFy ZyB0byB0aGUgYXR0cmlidXRlLiAgKi8KKworc3RydWN0IFgKK3sKKyAgWCAq ZigpIF9fYXR0cmlidXRlX18oKHJldHVybnNfYXJnKDEpKSk7Cit9OworCitp bnQgbWFpbigpCit7CisgIFggeDsKKyAgeC5mKCk7Cit9CmRpZmYgLS1naXQg YS9nY2MvdGVzdHN1aXRlL2djYy5kZy9XYXR0cmlidXRlcy0xMS5jIGIvZ2Nj L3Rlc3RzdWl0ZS9nY2MuZGcvV2F0dHJpYnV0ZXMtMTEuYwpuZXcgZmlsZSBt b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uODEyNDViNDRjZmEKLS0t IC9kZXYvbnVsbAorKysgYi9nY2MvdGVzdHN1aXRlL2djYy5kZy9XYXR0cmli dXRlcy0xMS5jCkBAIC0wLDAgKzEsMTAgQEAKKy8qIHsgZGctZG8gY29tcGls ZSB9ICovCisvKiB7IGRnLW9wdGlvbnMgIi1XYXR0cmlidXRlcyIgfSAqLwor CitpbnQgZjEgKGludCkgX19hdHRyaWJ1dGVfXygocmV0dXJuc19hcmcpKTsg LyogeyBkZy1lcnJvciAid3JvbmcgbnVtYmVyIG9mIGFyZ3VtZW50cyBzcGVj aWZpZWQgZm9yICdyZXR1cm5zX2FyZycgYXR0cmlidXRlIiB9ICovCisKK3Zv aWQgZjIgKGludCkgX19hdHRyaWJ1dGVfXygocmV0dXJuc19hcmcgKDEpKSk7 IC8qIHsgZGctd2FybmluZyAiJ3JldHVybnNfYXJnJyBhdHRyaWJ1dGUgaWdu b3JlZCBvbiBhIGZ1bmN0aW9uIHJldHVybmluZyAndm9pZCciIH0gKi8KKwor aW50IGYzIChpbnQpIF9fYXR0cmlidXRlX18oKHJldHVybnNfYXJnICgiZm9v IikpKTsgLyogeyBkZy13YXJuaW5nICIncmV0dXJuc19hcmcnIGF0dHJpYnV0 ZSBhcmd1bWVudCBoYXMgdHlwZSAnY2hhclxcXFs0XFxcXSciIH0gKi8KKwor aW50IGY0IChjaGFyICopIF9fYXR0cmlidXRlX18oKHJldHVybnNfYXJnICgx KSkpOyAvKiB7IGRnLXdhcm5pbmcgIidyZXR1cm5zX2FyZycgYXR0cmlidXRl IGFyZ3VtZW50IHZhbHVlICcxJyByZWZlcnMgdG8gcGFyYW1ldGVyIHR5cGUg J2NoYXIgXFwqJyIgfSAqLwo= --0000000000001b10ce059ce14a7b--