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 BE17F385781F for ; Fri, 17 Feb 2023 15:57:10 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org BE17F385781F Authentication-Results: sourceware.org; dmarc=pass (p=none dis=none) header.from=gmx.at Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=gmx.at DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=gmx.at; s=s31663417; t=1676649428; i=hz2012@gmx.at; bh=nLDRgaw7OxphKCHZmx725IJOC3cGcYPNVGOitIJv/VI=; h=X-UI-Sender-Class:From:To:Subject:Date:In-Reply-To:References; b=iz1nG+VYHs+GR3UQN6LciNhpZ9Zh4A/WS9kpR56d3n0azCSYdtiMUHk9ejiEQ8keO TWhCO5ZXOm5uO0mG7u6AcGg7SFY06H3Iu4DY69nqaGYFwMV/H8RiW5Anw2333Rmqfx NnbhjP3/wi15+bEdtygIH3xU2FyMo3ybRRYtiUXCbhXucwv81Ia4KztvkQ1i3/lb9Q e3+t3mgXRTZd7vVKnBZiArELv3YyrujyNQZR4fmJU/bwUG1FOhJ5v300m1AlNv6ZIY luH8JL9dsjOMcZoppjKCL5wx793LD+gKj4Do9loa1UR0GHhKgXl3f34+kj07yjjguW 7F/8FcU0va1xw== X-UI-Sender-Class: 724b4f7f-cbec-4199-ad4e-598c01a50d3a Received: from [90.146.27.93] ([90.146.27.93]) by web-mail.gmx.net (3c-app-gmx-bap61.server.lan [172.19.172.131]) (via HTTP); Fri, 17 Feb 2023 16:57:08 +0100 MIME-Version: 1.0 Message-ID: From: Helmut Zeisel To: Jonathan Wakely , gcc@gcc.gnu.org Subject: Aw: Re: Warning: shared mutable data Content-Type: text/plain; charset=UTF-8 Date: Fri, 17 Feb 2023 16:57:08 +0100 Importance: normal Sensitivity: Normal In-Reply-To: References: Content-Transfer-Encoding: quoted-printable X-UI-Message-Type: mail X-Priority: 3 X-Provags-ID: V03:K1:dIZ4wJP9ToeLFJqAJkiX8FC9DG63OAnm3Sh2ODoBBqCCiLjjymLD82VxyrtE25/QYN7Ts 8eoGQslr3RJ6JlbUDPhjEK7MffqZnk2GQ63bjiF+QFnVP5F3xUwyKssd5XIKYqhKcDB7xueFnVOY 8ejLnNOGbwr4zvQlf5pBiS8zX0+VUKRgb2ReaCat7GsOtxm25vXXBTCP5NoC7HnhISdw8FGbqeri /9kolrWL8HWIbCHcF8GYRa5I1l1Hp1WalHTVAZ/ZayzekIqNzKhYZNQ4/8ENRR84KpH8DCI+htpM 4Y= UI-OutboundReport: notjunk:1;M01:P0:uDxKrAV97jk=;yrLLzq4t7XQWYW64sZ28N4bhlIT +lmpuQYcLKR2YrOK5kzMgbjAYu93fGOAwslQt21OmN209iAbnONEYbdJSl/JOrReLyJyCjZJJ 5nRFmsAweU2XY3NQXXNZuOhygQT70mVVXQcJJMlnhDdSzGBofAX8o+evXMDzLg2z/SV+aIX9d aA5NmlVW+h0ySblU/K4c7pofhdrI/TxwSdmgCUAWEZIL3F08dhWevOszOog7xRzop8bCaAqEs je+KL7MlyfycKnnT8fHZhR1NIHJoP/nyE1hlVjdRlicBhdj83iZrpMh3lRJm2Q5gfay26n/xV mb55nakmuQvaA677ech4seXBPzUgxtOaBKM1Amf+anyBTEHZP2D0Hbz3SEvw1y1LRBuKtL33w 0QZwbg0n3JO4vexjpN5+KoPmB6yQTofM/GbsQqN4t9JCqQ1T9eBUScGAnlAxoI5/UVSCpxZTI tuPZQXwQh3zG6VN2FdR/7CBj+nvzkKDmvphb1aTBHcVWBtSIlFHMRgCOxxVQiCxkpF6MPrT65 EMZmuxS5qvJmDnErXPXH1hv0gXQ0XueAlDDyx3h6h/3T6amnC2OlfWg9ZwGdUi+PKPNGuQnPc f/xt5jvLaa3nyOCjGUJZ59+wFoHkbPRs0j1iltDnfY/ldRnmv0LpnWlRvHGAIKovS4S8qX7ng 5SOmNWoMUfB+Pw7vDeYK+zCjWjaaoG6cz0kxccAurS2uyI+tlEcsWVxTtdb9GVUcNFxNs5XwE i7+rf2NAeaO1R8U4yom8Y1OHM0lkCBvNMjW+dzRBUoRBMzVRxlUc2cq7TZD2ZrQuynr0/bNMZ OdhUX/2yn0udOEICIou/mDhA== X-Spam-Status: No, score=-2.5 required=5.0 tests=BAYES_00,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,FREEMAIL_ENVFROM_END_DIGIT,FREEMAIL_FROM,RCVD_IN_DNSWL_LOW,RCVD_IN_MSPIKE_H2,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: Von:=C2=A0"Jonathan Wakely" =C2=A0> What exactly are you suggesting for the semantics of the warning?= =20 Good question=2E It is difficult to detect all suspiscious cases, but at l= east some of the can be defined: If we have a function prototype=20 f(=2E=2E=2E,Ti xi,=2E=2E=2ETj xj,=2E=2E=2E) and call the function f(=2E=2E=2E xi, =2E=2E=2E xj,=2E=2E=2E) with some xi= , xj with aliasing / data sharing, and both Ti and Tj are references/pointers and at least one is a non-const= pointer / reference, then the warning should be given=2E E=2Eg=2E for both int: Ti int: no warning Ti int& or int*: warning if Tj is int*, const int*, int&, or const int&; n= o warning for Tj int=2E Ti const int& or const int*: warning if Tj is int*, or int&; no warning if= Tj is const int*, const int&, or int=2E=20 Or maybe some code example: void increase_x_by_y_and_z(int& x, const int& y, const int& z) { x+=3Dy; x+=3Dz; } This should be OK (no sharing, no warning): x=3D1; y=3D1; z=3D1; increase_x_by_y_and_z(x,y,z); This should give a warning (sharing of int& and const int&): x=3D1; y=3D1; increase_x_by_y_and_z(x,y,x); On the other hand, this is OK (y is shared but not mutable - two times con= st int&): x=3D1; y=3D1; increase_x_by_y_and_z(x,y,y); Helmut