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 3B522385841E; Sat, 7 Jan 2023 15:46:23 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 3B522385841E 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 A0140125B8; Sat, 7 Jan 2023 16:46:21 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=netcologne.de; s=nc1116a; t=1673106381; bh=D2R32ONtPoujtnJZNJm7ZAQDsQ03EoL4ogw+VhsE8CM=; h=Message-ID:Date:To:From:Subject:From; b=ew4cUz8ZeZ5Nbfzv55Ty1TxgqsInDhnh4QDdmXqd1X4ykXYximBYzJhFgmyDGy8VP IC1yjrg4A8Yxz/tZf7SJiVwJ8O3XumU0JieaBDVvpwskH77UEa7DdoLti++WqyeE00 ek4ApYZGhB7KFF5u9/WroXzmLfrTgk0IEDxm3MUme84m05NnUVldjOjk9djqFZMHqL t3dhGe88lyIXb0xoI+a7hmjjGl7Lia4gSU5Lzv2dpK/+be6SgWj8o04VU6B/j0fseT 3UVJdK37oVGSZVDuAcYQBcC3MMDqK4mbXFDTsGDt3si3epptBVv/9KFZzDBpeYHW8c HJF3JUJfqehbw== Received: from [IPV6:2001:4dd7:6842:0:7285:c2ff:fe6c:992d] (2001-4dd7-6842-0-7285-c2ff-fe6c-992d.ipv6dyn.netcologne.de [IPv6:2001:4dd7:6842: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)) (No client certificate requested) by cc-smtpin1.netcologne.de (Postfix) with ESMTPSA id 64F6811D86; Sat, 7 Jan 2023 16:46:20 +0100 (CET) Content-Type: multipart/mixed; boundary="------------YZrul0j9RhZZv9Lhe0YQAIpt" Message-ID: <7bd3545a-7b9d-a9b2-6923-0d02df809177@netcologne.de> Date: Sat, 7 Jan 2023 16:46:20 +0100 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.4.2 Content-Language: en-US To: "fortran@gcc.gnu.org" , gcc-patches From: Thomas Koenig Subject: [patch, fortran] Fix common subexpression elimination with IEEE rounding (PR108329) X-NetCologne-Spam: L X-Rspamd-Queue-Id: 64F6811D86 X-Spamd-Bar: + X-Rspamd-Pre-Result: action=add header; module=force_actions; unknown reason X-Rspamd-Action: add header X-Spam-Status: No, score=-10.7 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. --------------YZrul0j9RhZZv9Lhe0YQAIpt Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit Hello world, this patch fixes Fortran's handling of common subexpression elimination across ieee_set_rouding_mode calls. It does so using a rather big hammer, by issuing a memory barrier to force reload from memory (and thus a recomputation). This is a rather big hammer, so if there are more elegant ways to fix it, I am very much open to suggestions. If PR 34678 is fixed, then this solution can also be applied here. OK for trunk? How do you feel about a backport? Best regards Thomas Add memory barrier for calls to ieee_set_rounding_mode. gcc/fortran/ChangeLog: PR fortran/108329 * trans-expr.cc (trans_memory_barrier): New functions. (gfc_conv_procedure_call): Insert memory barrier for ieee_set_rounding_mode. gcc/testsuite/ChangeLog: PR fortran/108329 * gfortran.dg/rounding_4.f90: New test. --------------YZrul0j9RhZZv9Lhe0YQAIpt Content-Type: text/x-patch; charset=UTF-8; name="p1.diff" Content-Disposition: attachment; filename="p1.diff" Content-Transfer-Encoding: base64 ZGlmZiAtLWdpdCBhL2djYy9mb3J0cmFuL3RyYW5zLWV4cHIuY2MgYi9nY2MvZm9ydHJhbi90 cmFucy1leHByLmNjCmluZGV4IDRmM2FlODJkMzljLi4yOWJlNzgwNGUxMSAxMDA2NDQKLS0t IGEvZ2NjL2ZvcnRyYW4vdHJhbnMtZXhwci5jYworKysgYi9nY2MvZm9ydHJhbi90cmFucy1l eHByLmNjCkBAIC01OTgxLDYgKzU5ODEsMjAgQEAgcG9zdF9jYWxsOgogICAgIGdmY19hZGRf YmxvY2tfdG9fYmxvY2sgKCZwYXJtc2UtPnBvc3QsICZibG9jayk7CiB9CiAKKy8qIEhlbHBl ciBmdW5jdGlvbiAtIGdlbmVyYXRlIGEgbWVtb3J5IGJhcnJpZXIuICAqLworCitzdGF0aWMg dHJlZQordHJhbnNfbWVtb3J5X2JhcnJpZXIgKHZvaWQpCit7CisgIHRyZWUgdG1wOworCisg IHRtcCA9IGdmY19idWlsZF9zdHJpbmdfY29uc3QgKHNpemVvZiAoIm1lbW9yeSIpLCAibWVt b3J5Iik7CisgIHRtcCA9IGJ1aWxkNV9sb2MgKGlucHV0X2xvY2F0aW9uLCBBU01fRVhQUiwg dm9pZF90eXBlX25vZGUsCisJCSAgICBnZmNfYnVpbGRfc3RyaW5nX2NvbnN0ICgxLCAiIiks IE5VTExfVFJFRSwgTlVMTF9UUkVFLAorCQkgICAgdHJlZV9jb25zIChOVUxMX1RSRUUsIHRt cCwgTlVMTF9UUkVFKSwgTlVMTF9UUkVFKTsKKyAgQVNNX1ZPTEFUSUxFX1AgKHRtcCkgPSAx OworICByZXR1cm4gdG1wOworfQogCiAvKiBHZW5lcmF0ZSBjb2RlIGZvciBhIHByb2NlZHVy ZSBjYWxsLiAgTm90ZSBjYW4gcmV0dXJuIHNlLT5wb3N0ICE9IE5VTEwuCiAgICBJZiBzZS0+ ZGlyZWN0X2J5cmVmIGlzIHNldCB0aGVuIHNlLT5leHByIGNvbnRhaW5zIHRoZSByZXR1cm4g cGFyYW1ldGVyLgpAQCAtNzY5Miw2ICs3NzA2LDE5IEBAIGdmY19jb252X3Byb2NlZHVyZV9j YWxsIChnZmNfc2UgKiBzZSwgZ2ZjX3N5bWJvbCAqIHN5bSwKICAgZWxzZQogICAgIGNvbnZf YmFzZV9vYmpfZmNuX3ZhbCAoc2UsIGJhc2Vfb2JqZWN0LCBleHByKTsKIAorICAvKiBGSVhN RTogU3BlY2lhbCBoYW5kaW5nIG9mIGllZWVfc2V0X3JvdW5kaW5nX21vZGUgLSB3ZSBjbG9i YmVyCisgICAgIG1lbW9yeSBoZXJlIHRvIGF2b2lkIGNvbW1vbiBzdWJleHByZXNzaW9uIG1v dmluZyBjb2RlIHBhc3QgY2FsbHMKKyAgICAgdG8gaWVlZV9zZXRfcm91bmRpbmdfbW9kZS4g IFRoaXMgc2hvdWxkIG9ubHkgYmUgZG9uZSBmb3IKKyAgICAgZmxvYXRpbmcgcG9pbnQsIGJ1 dCBjdXJyZW50bHkgZ2NjIG9mZmVycyBubyBvdGhlciBwb3NzaWJpbGl0eS4KKyAgICAgU2Vl IFBSIDEwODMyOS4gICovCisKKyAgaWYgKHN5bS0+ZnJvbV9pbnRtb2QgPT0gSU5UTU9EX0lF RUVfQVJJVEhNRVRJQworICAgICAgJiYgc3RyY21wIChzeW0tPm5hbWUsICJpZWVlX3NldF9y b3VuZGluZ19tb2RlIikgPT0gMCkKKyAgICB7CisgICAgICB0cmVlIHRtcCA9IHRyYW5zX21l bW9yeV9iYXJyaWVyICgpOworICAgICAgZ2ZjX2FkZF9leHByX3RvX2Jsb2NrICgmcG9zdCwg dG1wKTsKKyAgICB9CisKICAgLyogSWYgdGhlcmUgYXJlIGFsdGVybmF0ZSByZXR1cm4gbGFi ZWxzLCBmdW5jdGlvbiB0eXBlIHNob3VsZCBiZQogICAgICBpbnRlZ2VyLiAgQ2FuJ3QgbW9k aWZ5IHRoZSB0eXBlIGluIHBsYWNlIHRob3VnaCwgc2luY2UgaXQgY2FuIGJlIHNoYXJlZAog ICAgICB3aXRoIG90aGVyIGZ1bmN0aW9ucy4gIEZvciBkdW1teSBhcmd1bWVudHMsIHRoZSB0 eXBpbmcgaXMgZG9uZSB0bwpkaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nZm9ydHJhbi5k Zy9yb3VuZGluZ180LmY5MCBiL2djYy90ZXN0c3VpdGUvZ2ZvcnRyYW4uZGcvcm91bmRpbmdf NC5mOTAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLmU4Nzk5ZGE2 N2RjCi0tLSAvZGV2L251bGwKKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nZm9ydHJhbi5kZy9yb3Vu ZGluZ180LmY5MApAQCAtMCwwICsxLDMxIEBACishIHsgZGctZG8gcnVuIH0KK21vZHVsZSB5 CisgIGltcGxpY2l0IG5vbmUKKyAgaW50ZWdlciwgcGFyYW1ldGVyIDo6IHdwID0gc2VsZWN0 ZWRfcmVhbF9raW5kKDE1KQorY29udGFpbnMKKyAgc3Vicm91dGluZSBmb28oYSxiLGMpCisg ICAgdXNlIGllZWVfYXJpdGhtZXRpYworICAgIHJlYWwoa2luZD13cCksIGRpbWVuc2lvbig0 KSwgaW50ZW50KG91dCkgOjogYQorICAgIHJlYWwoa2luZD13cCksIGludGVudChpbikgOjog YiwgYworICAgIHR5cGUgKGllZWVfcm91bmRfdHlwZSksIGRpbWVuc2lvbig0KSwgcGFyYW1l dGVyIDo6IG1vZGUgPSAmCisgICAgICAgICBbaWVlZV9uZWFyZXN0LCBpZWVlX3RvX3plcm8s IGllZWVfdXAsIGllZWVfZG93bl0KKyAgICBjYWxsIGllZWVfc2V0X3JvdW5kaW5nX21vZGUg KG1vZGUoMSkpCisgICAgYSgxKSA9IGIgKyBjCisgICAgY2FsbCBpZWVlX3NldF9yb3VuZGlu Z19tb2RlIChtb2RlKDIpKQorICAgIGEoMikgPSBiICsgYworICAgIGNhbGwgaWVlZV9zZXRf cm91bmRpbmdfbW9kZSAobW9kZSgzKSkKKyAgICBhKDMpID0gYiArIGMKKyAgICBjYWxsIGll ZWVfc2V0X3JvdW5kaW5nX21vZGUgKG1vZGUoNCkpCisgICAgYSg0KSA9IGIgKyBjCisgIGVu ZCBzdWJyb3V0aW5lIGZvbworZW5kIG1vZHVsZSB5CisKK3Byb2dyYW0gbWFpbgorICB1c2Ug eQorICByZWFsKGtpbmQ9d3ApLCBkaW1lbnNpb24oNCkgOjogYQorICBjYWxsIGZvbyhhLDAu MV93cCwwLjJfd3ApCisgIGlmIChhKDEpIDw9IGEoMikpIHN0b3AgMQorICBpZiAoYSgzKSA8 PSBhKDQpKSBzdG9wIDIKKyAgaWYgKGEoMSkgLz0gYSgzKSkgc3RvcCAzCisgIGlmIChhKDIp IC89IGEoNCkpIHN0b3AgNAorZW5kIHByb2dyYW0gbWFpbgo= --------------YZrul0j9RhZZv9Lhe0YQAIpt--