From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from smtp.smtpout.orange.fr (smtp-27.smtpout.orange.fr [80.12.242.27]) by sourceware.org (Postfix) with ESMTPS id A22043858CDB for ; Wed, 21 Sep 2022 18:57:17 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org A22043858CDB Authentication-Results: sourceware.org; dmarc=none (p=none dis=none) header.from=orange.fr Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=orange.fr Received: from [192.168.1.17] ([86.215.174.255]) by smtp.orange.fr with ESMTPA id b4tJoBCMqtUbyb4u9o0dSa; Wed, 21 Sep 2022 20:57:06 +0200 X-ME-Helo: [192.168.1.17] X-ME-Auth: bW9yaW4tbWlrYWVsQG9yYW5nZS5mcg== X-ME-Date: Wed, 21 Sep 2022 20:57:06 +0200 X-ME-IP: 86.215.174.255 Message-ID: Date: Wed, 21 Sep 2022 20:56:12 +0200 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.2.2 Subject: Re: [PATCH 09/10] fortran: Support clobbering of variable subreferences [PR88364] To: Thomas Koenig , Harald Anlauf , Richard Biener Cc: gcc-patches@gcc.gnu.org, fortran@gcc.gnu.org References: <20220916202439.549820-1-mikael@gcc.gnu.org> <20220916202439.549820-10-mikael@gcc.gnu.org> <3edab734-f5bb-5557-ff98-b0ce47d7c510@orange.fr> <3ef8c5c4-35a1-fa60-2a2d-a7bb3fbd35fc@gmx.de> <9996bd59-9cf1-12df-faa5-7d546e5732f7@orange.fr> <6ac60050-2298-df01-1345-d53c868ed5d9@gmx.de> <0a36f845-13fb-5046-7731-87f4832e8deb@orange.fr> Content-Language: en-US From: Mikael Morin In-Reply-To: Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit X-Spam-Status: No, score=-5.8 required=5.0 tests=BAYES_00,FREEMAIL_FROM,JMQ_SPF_NEUTRAL,KAM_DMARC_STATUS,NICE_REPLY_A,RCVD_IN_DNSWL_NONE,RCVD_IN_MSPIKE_H2,SPF_HELO_PASS,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: Le 21/09/2022 à 11:57, Thomas Koenig a écrit : > > Hi Harald, > >> I think I understand much of what is said, but I feel that I do >> not really understand what *clobber* means for the different >> beasts we are discussing (although I have an impression of what >> it means for a scalar object). > > Obviously, "clobber" means taking a big stick and hitting the beast > in question over the head with it :-) > > More seriously: My understanding of a clobber it is a hint to > the middle end that the value in question will not be used, > and that operations leading to this value can be removed, > unless they are used otherwise. > My understanding is that "clobber" means "overwrite with garbage" for all the beasts we have been discussing, which translates to nothing in the final code, but can be used by the optimizers as Thomas said. This is a bit off-topic but clobbers model registers having their values changed unpredictably or by ways unknown to the compiler, in the backend code, or in inline assembly statements. Here is an excerpt from rtl.texi: > @item (clobber @var{x}) > Represents the storing or possible storing of an unpredictable, > undescribed value into @var{x} I Hope it helps.