From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 8034 invoked by alias); 6 Dec 2015 21:02:41 -0000 Mailing-List: contact fortran-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Id: List-Subscribe: List-Post: List-Help: , Sender: fortran-owner@gcc.gnu.org Received: (qmail 8015 invoked by uid 89); 6 Dec 2015 21:02:41 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-1.1 required=5.0 tests=AWL,BAYES_05,FREEMAIL_FROM,RCVD_IN_DNSWL_LOW,SPF_PASS autolearn=ham version=3.3.2 X-Spam-User: qpsmtpd, 2 recipients X-HELO: mail-io0-f182.google.com Received: from mail-io0-f182.google.com (HELO mail-io0-f182.google.com) (209.85.223.182) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with (AES128-GCM-SHA256 encrypted) ESMTPS; Sun, 06 Dec 2015 21:02:38 +0000 Received: by iouu10 with SMTP id u10so166706973iou.0; Sun, 06 Dec 2015 13:02:36 -0800 (PST) MIME-Version: 1.0 X-Received: by 10.107.33.203 with SMTP id h194mr20885445ioh.108.1449435756425; Sun, 06 Dec 2015 13:02:36 -0800 (PST) Received: by 10.107.34.75 with HTTP; Sun, 6 Dec 2015 13:02:36 -0800 (PST) Date: Sun, 06 Dec 2015 21:02:00 -0000 Message-ID: Subject: [Fortran, Patch] Memory sync after coarray image control statements and assignment From: Alessandro Fanfarillo To: gfortran , gcc-patches , opencoarrays@googlegroups.com Content-Type: multipart/mixed; boundary=001a114072e0631d580526410fa8 X-IsSubscribed: yes X-SW-Source: 2015-12/txt/msg00050.txt.bz2 --001a114072e0631d580526410fa8 Content-Type: text/plain; charset=UTF-8 Content-length: 779 Dear all, currently, a coarray assignment in a program composed by a single segment (without any sync statements) produces wrong results. Furthermore, a coarray code compiled with an optimization flag higher that -O0 may produce wrong results. The patch (re)introduces a __sync_synchronize() after coarray image control statements (sync all, sync images, critical, locks and events) and get/put. The attached patch fixes the problems reported by Deepak in the following discussion: https://gcc.gnu.org/ml/fortran/2015-04/msg00062.html. Built and regtested on x86_64-pc-linux-gnu. PS: Adding the __sync_synchronize() after get/put and sync statements fix all the problems reported by Deepak. I do the same also for locks, critical and events. Suggestions are warmly welcome. --001a114072e0631d580526410fa8 Content-Type: text/plain; charset=US-ASCII; name="patch_sync.diff" Content-Disposition: attachment; filename="patch_sync.diff" Content-Transfer-Encoding: base64 X-Attachment-Id: f_ihuzxgsn0 Content-length: 6499 Y29tbWl0IDc1YzkzZDMwODUxMTY3NDgxMTVjOGY2OWFkNWFkNThmNGFkOTM2 OWMKQXV0aG9yOiBBbGVzc2FuZHJvIEZhbmZhcmlsbG8gPGZhbmZhcmlsbG9A aW5nLnVuaXJvbWEyLml0PgpEYXRlOiAgIFN1biBEZWMgNiAxODo1MDo1MSAy MDE1ICswMTAwCgogICAgSW50cm9kdWNpbmcgX19zeW5jX3N5bmNocm9uaXpl KCkgYWZ0ZXIgaW1hZ2UgY29udHJvbCBzdGF0ZW1lbnRzLCBzZW5kIGFuZCBn ZXQKCmRpZmYgLS1naXQgYS9nY2MvZm9ydHJhbi9DaGFuZ2VMb2cgYi9nY2Mv Zm9ydHJhbi9DaGFuZ2VMb2cKaW5kZXggYmExNzZhMS4uYjQ1MGZhZSAxMDA2 NDQKLS0tIGEvZ2NjL2ZvcnRyYW4vQ2hhbmdlTG9nCisrKyBiL2djYy9mb3J0 cmFuL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBACisyMDE1LTEyLTA2ICBB bGVzc2FuZHJvIEZhbmZhcmlsbG8gPGZhbmZhcmlsbG8uZ2NjQGdtYWlsLmNv bT4KKworCSogdHJhbnMuYyAoZ2ZjX2FsbG9jYXRlX3VzaW5nX2xpYixnZmNf ZGVhbGxvY2F0ZV93aXRoX3N0YXR1cyk6CisJSW50cm9kdWNpbmcgX19zeW5j X3N5bmNocm9uaXplKCkgYWZ0ZXIgaW1hZ2UgY29udHJvbCBzdGF0ZW1lbnRz LgorCSogdHJhbnMtc3RtdC5jIChnZmNfdHJhbnNfc3luYyxnZmNfdHJhbnNf ZXZlbnRfcG9zdF93YWl0LAorCWdmY190cmFuc19sb2NrX3VubG9jayk6IERp dHRvLgorCSogdHJhbnMtaW50cmluc2ljLmMgKGdmY19jb252X2ludHJpbnNp Y19jYWZfZ2V0LAorCWNvbnZfY2FmX3NlbmQpOiBJbnRyb2R1Y2luZyBfX3N5 bmNfc3luY2hyb25pemUoKSBhZnRlciBzZW5kLAorCWdldCBhbmQgc2VuZGdl dC4KKwogMjAxNS0xMi0wNSAgUGF1bCBUaG9tYXMgIDxwYXVsdEBnY2MuZ251 Lm9yZz4KIAogCVBSIGZvcnRyYW4vNjg2NzYKZGlmZiAtLWdpdCBhL2djYy9m b3J0cmFuL3RyYW5zLWludHJpbnNpYy5jIGIvZ2NjL2ZvcnRyYW4vdHJhbnMt aW50cmluc2ljLmMKaW5kZXggMjFlZmU0NC4uMDc3OTVjYSAxMDA2NDQKLS0t IGEvZ2NjL2ZvcnRyYW4vdHJhbnMtaW50cmluc2ljLmMKKysrIGIvZ2NjL2Zv cnRyYW4vdHJhbnMtaW50cmluc2ljLmMKQEAgLTEyMjIsNiArMTIyMiwxMiBA QCBnZmNfY29udl9pbnRyaW5zaWNfY2FmX2dldCAoZ2ZjX3NlICpzZSwgZ2Zj X2V4cHIgKmV4cHIsIHRyZWUgbGhzLCB0cmVlIGxoc19raW5kLAogICBzZS0+ ZXhwciA9IHJlc192YXI7CiAgIGlmIChhcnJheV9leHByLT50cy50eXBlID09 IEJUX0NIQVJBQ1RFUikKICAgICBzZS0+c3RyaW5nX2xlbmd0aCA9IGFyZ3Nl LnN0cmluZ19sZW5ndGg7CisKKyAgLyogSXQgZ3VhcmFudGVlcyBtZW1vcnkg Y29uc2lzdGVuY3kgd2l0aGluIHRoZSBzYW1lIHNlZ21lbnQgKi8KKyAgdG1w ID0gYnVpbHRpbl9kZWNsX2V4cGxpY2l0IChCVUlMVF9JTl9TWU5DX1NZTkNI Uk9OSVpFKTsKKyAgdG1wID0gYnVpbGRfY2FsbF9leHByX2xvYyAoaW5wdXRf bG9jYXRpb24sIHRtcCwgMCk7CisgIGdmY19hZGRfZXhwcl90b19ibG9jayAo JnNlLT5wcmUsIHRtcCk7CisKIH0KIAogCkBAIC0xMzkwLDYgKzEzOTYsMTIg QEAgY29udl9jYWZfc2VuZCAoZ2ZjX2NvZGUgKmNvZGUpIHsKICAgZ2ZjX2Fk ZF9leHByX3RvX2Jsb2NrICgmYmxvY2ssIHRtcCk7CiAgIGdmY19hZGRfYmxv Y2tfdG9fYmxvY2sgKCZibG9jaywgJmxoc19zZS5wb3N0KTsKICAgZ2ZjX2Fk ZF9ibG9ja190b19ibG9jayAoJmJsb2NrLCAmcmhzX3NlLnBvc3QpOworCisg IC8qIEl0IGd1YXJhbnRlZXMgbWVtb3J5IGNvbnNpc3RlbmN5IHdpdGhpbiB0 aGUgc2FtZSBzZWdtZW50ICovCisgIHRtcCA9IGJ1aWx0aW5fZGVjbF9leHBs aWNpdCAoQlVJTFRfSU5fU1lOQ19TWU5DSFJPTklaRSk7CisgIHRtcCA9IGJ1 aWxkX2NhbGxfZXhwcl9sb2MgKGlucHV0X2xvY2F0aW9uLCB0bXAsIDApOwor ICBnZmNfYWRkX2V4cHJfdG9fYmxvY2sgKCZibG9jaywgdG1wKTsKKwogICBy ZXR1cm4gZ2ZjX2ZpbmlzaF9ibG9jayAoJmJsb2NrKTsKIH0KIApkaWZmIC0t Z2l0IGEvZ2NjL2ZvcnRyYW4vdHJhbnMtc3RtdC5jIGIvZ2NjL2ZvcnRyYW4v dHJhbnMtc3RtdC5jCmluZGV4IDNkZjQ4M2EuLmIxZGUwZjUgMTAwNjQ0Ci0t LSBhL2djYy9mb3J0cmFuL3RyYW5zLXN0bXQuYworKysgYi9nY2MvZm9ydHJh bi90cmFucy1zdG10LmMKQEAgLTgxOCw2ICs4MTgsMTEgQEAgZ2ZjX3RyYW5z X2xvY2tfdW5sb2NrIChnZmNfY29kZSAqY29kZSwgZ2ZjX2V4ZWNfb3Agb3Ap CiAJCQkJICAgZXJybXNnLCBlcnJtc2dfbGVuKTsKICAgICAgIGdmY19hZGRf ZXhwcl90b19ibG9jayAoJnNlLnByZSwgdG1wKTsKIAorICAgICAgLyogSXQg Z3VhcmFudGVlcyBtZW1vcnkgY29uc2lzdGVuY3kgd2l0aGluIHRoZSBzYW1l IHNlZ21lbnQgKi8KKyAgICAgIHRtcCA9IGJ1aWx0aW5fZGVjbF9leHBsaWNp dCAoQlVJTFRfSU5fU1lOQ19TWU5DSFJPTklaRSk7CisgICAgICB0bXAgPSBi dWlsZF9jYWxsX2V4cHJfbG9jIChpbnB1dF9sb2NhdGlvbiwgdG1wLCAwKTsK KyAgICAgIGdmY19hZGRfZXhwcl90b19ibG9jayAoJnNlLnByZSwgdG1wKTsK KwogICAgICAgaWYgKHN0YXQyICE9IE5VTExfVFJFRSkKIAlnZmNfYWRkX21v ZGlmeSAoJnNlLnByZSwgc3RhdDIsCiAJCQlmb2xkX2NvbnZlcnQgKFRSRUVf VFlQRSAoc3RhdDIpLCBzdGF0KSk7CkBAIC05OTUsNiArMTAwMCwxMSBAQCBn ZmNfdHJhbnNfZXZlbnRfcG9zdF93YWl0IChnZmNfY29kZSAqY29kZSwgZ2Zj X2V4ZWNfb3Agb3ApCiAJCQkgICAgICAgZXJybXNnLCBlcnJtc2dfbGVuKTsK ICAgZ2ZjX2FkZF9leHByX3RvX2Jsb2NrICgmc2UucHJlLCB0bXApOwogCisg IC8qIEl0IGd1YXJhbnRlZXMgbWVtb3J5IGNvbnNpc3RlbmN5IHdpdGhpbiB0 aGUgc2FtZSBzZWdtZW50ICovCisgIHRtcCA9IGJ1aWx0aW5fZGVjbF9leHBs aWNpdCAoQlVJTFRfSU5fU1lOQ19TWU5DSFJPTklaRSk7CisgIHRtcCA9IGJ1 aWxkX2NhbGxfZXhwcl9sb2MgKGlucHV0X2xvY2F0aW9uLCB0bXAsIDApOwor ICBnZmNfYWRkX2V4cHJfdG9fYmxvY2sgKCZzZS5wcmUsIHRtcCk7CisKICAg aWYgKHN0YXQyICE9IE5VTExfVFJFRSkKICAgICBnZmNfYWRkX21vZGlmeSAo JnNlLnByZSwgc3RhdDIsIGZvbGRfY29udmVydCAoVFJFRV9UWVBFIChzdGF0 MiksIHN0YXQpKTsKIApAQCAtMTA4MCw2ICsxMDkwLDE1IEBAIGdmY190cmFu c19zeW5jIChnZmNfY29kZSAqY29kZSwgZ2ZjX2V4ZWNfb3AgdHlwZSkKIAkJ CSAgICAgICBmb2xkX2NvbnZlcnQgKGludGVnZXJfdHlwZV9ub2RlLCBpbWFn ZXMpKTsKICAgICB9CiAKKyAgLyogUGVyIEYyMDA4LCA4LjUuMSwgYSBTWU5D IE1FTU9SWSBpcyBpbXBsaWVkIGJ5IGNhbGxpbmcgdGhlCisgICAgIGltYWdl IGNvbnRyb2wgc3RhdGVtZW50cyBTWU5DIElNQUdFUyBhbmQgU1lOQyBBTEwu ICAqLworICBpZiAoZmxhZ19jb2FycmF5ID09IEdGQ19GQ09BUlJBWV9MSUIp CisgICAgeworICAgICAgdG1wID0gYnVpbHRpbl9kZWNsX2V4cGxpY2l0IChC VUlMVF9JTl9TWU5DX1NZTkNIUk9OSVpFKTsKKyAgICAgIHRtcCA9IGJ1aWxk X2NhbGxfZXhwcl9sb2MgKGlucHV0X2xvY2F0aW9uLCB0bXAsIDApOworICAg ICAgZ2ZjX2FkZF9leHByX3RvX2Jsb2NrICgmc2UucHJlLCB0bXApOworICAg IH0KKyAgCiAgIGlmIChmbGFnX2NvYXJyYXkgIT0gR0ZDX0ZDT0FSUkFZX0xJ QikKICAgICB7CiAgICAgICAvKiBTZXQgU1RBVCB0byB6ZXJvLiAgKi8KZGlm ZiAtLWdpdCBhL2djYy9mb3J0cmFuL3RyYW5zLmMgYi9nY2MvZm9ydHJhbi90 cmFucy5jCmluZGV4IDAwMWRiNDEuLmU3ODAzYmQgMTAwNjQ0Ci0tLSBhL2dj Yy9mb3J0cmFuL3RyYW5zLmMKKysrIGIvZ2NjL2ZvcnRyYW4vdHJhbnMuYwpA QCAtNzQ2LDYgKzc0NiwxMSBAQCBnZmNfYWxsb2NhdGVfdXNpbmdfbGliIChz dG10YmxvY2tfdCAqIGJsb2NrLCB0cmVlIHBvaW50ZXIsIHRyZWUgc2l6ZSwK IAkJCSBUUkVFX1RZUEUgKHBvaW50ZXIpLCBwb2ludGVyLAogCQkJIGZvbGRf Y29udmVydCAoIFRSRUVfVFlQRSAocG9pbnRlciksIHRtcCkpOwogICBnZmNf YWRkX2V4cHJfdG9fYmxvY2sgKGJsb2NrLCB0bXApOworCisgIC8qIEl0IGd1 YXJhbnRlZXMgbWVtb3J5IGNvbnNpc3RlbmN5IHdpdGhpbiB0aGUgc2FtZSBz ZWdtZW50ICovCisgIHRtcCA9IGJ1aWx0aW5fZGVjbF9leHBsaWNpdCAoQlVJ TFRfSU5fU1lOQ19TWU5DSFJPTklaRSk7CisgIHRtcCA9IGJ1aWxkX2NhbGxf ZXhwcl9sb2MgKGlucHV0X2xvY2F0aW9uLCB0bXAsIDApOworICBnZmNfYWRk X2V4cHJfdG9fYmxvY2sgKGJsb2NrLCB0bXApOwogfQogCiAKQEAgLTEzNTYs NiArMTM2MSwxMSBAQCBnZmNfZGVhbGxvY2F0ZV93aXRoX3N0YXR1cyAodHJl ZSBwb2ludGVyLCB0cmVlIHN0YXR1cywgdHJlZSBlcnJtc2csCiAJICAgICB0 b2tlbiwgcHN0YXQsIGVycm1zZywgZXJybGVuKTsKICAgICAgIGdmY19hZGRf ZXhwcl90b19ibG9jayAoJm5vbl9udWxsLCB0bXApOwogCisgICAgICAvKiBJ dCBndWFyYW50ZWVzIG1lbW9yeSBjb25zaXN0ZW5jeSB3aXRoaW4gdGhlIHNh bWUgc2VnbWVudCAqLworICAgICAgdG1wID0gYnVpbHRpbl9kZWNsX2V4cGxp Y2l0IChCVUlMVF9JTl9TWU5DX1NZTkNIUk9OSVpFKTsKKyAgICAgIHRtcCA9 IGJ1aWxkX2NhbGxfZXhwcl9sb2MgKGlucHV0X2xvY2F0aW9uLCB0bXAsIDAp OworICAgICAgZ2ZjX2FkZF9leHByX3RvX2Jsb2NrICgmbm9uX251bGwsIHRt cCk7CisKICAgICAgIGlmIChzdGF0dXMgIT0gTlVMTF9UUkVFKQogCXsKIAkg IHRyZWUgc3RhdCA9IGJ1aWxkX2ZvbGRfaW5kaXJlY3RfcmVmX2xvYyAoaW5w dXRfbG9jYXRpb24sIHN0YXR1cyk7Cg== --001a114072e0631d580526410fa8--