From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 99627 invoked by alias); 22 Dec 2015 01:59:01 -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 99608 invoked by uid 89); 22 Dec 2015 01:58:59 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-2.2 required=5.0 tests=AWL,BAYES_00,RCVD_IN_DNSWL_LOW,SPF_PASS autolearn=ham version=3.3.2 spammy=sk:implici, 10965 X-HELO: mail-ig0-f171.google.com Received: from mail-ig0-f171.google.com (HELO mail-ig0-f171.google.com) (209.85.213.171) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with (AES128-GCM-SHA256 encrypted) ESMTPS; Tue, 22 Dec 2015 01:58:57 +0000 Received: by mail-ig0-f171.google.com with SMTP id ph11so50566600igc.1 for ; Mon, 21 Dec 2015 17:58:56 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:mime-version:in-reply-to:references:date :message-id:subject:from:to:cc:content-type; bh=3+Y5sTIOb6A5ptCckG5FEvCSjydQ7ozL5GxAD8bZc6A=; b=WerrIgZYPahBjespiR52oLjGPXjKK/o5v6BnQsEqEXZPcflxyhwG6wtDAfkrJyuU22 GuabgfU8/R67KMe44a9XFPJwEduWyP5U0RMV8srUD6DfSH7dmxKZpRGh/ixyL99XK79w w+6jheP625ooISpdHMluK6JLiuqzJtGsYlI1D6Y3CT9/QgWXZxlLsZCkLFpDJcR5JQkI DOG0kHWDUrLfNpFa++GEgenGC5rMu1w3aE596L93U2oJmmUn4edgkW2q4L6sn6KDdMZs NjGN9Y01mzBYGsIbBMtLI6moQcZfKbD/PoeqP619w9kY3UPc+KgxmyHjPUCTZxVugk60 6Dsg== X-Gm-Message-State: ALoCoQmELyEq4NJFCLCIbCj6bq9bbNJN5O7rAUOQ6pfqrZze9MgbxjLeIV5A6Hq/z3cMwo0OM50YofhpUIjE2bq3fhdCWEXr1w== MIME-Version: 1.0 X-Received: by 10.50.55.4 with SMTP id n4mr22001037igp.37.1450749534909; Mon, 21 Dec 2015 17:58:54 -0800 (PST) Received: by 10.107.132.98 with HTTP; Mon, 21 Dec 2015 17:58:54 -0800 (PST) In-Reply-To: References: Date: Tue, 22 Dec 2015 01:59:00 -0000 Message-ID: Subject: Re: Go patch committed: Fix passing zero-sized global variable to function From: Ian Lance Taylor To: Andrew Pinski Cc: gcc-patches , "gofrontend-dev@googlegroups.com" Content-Type: multipart/mixed; boundary=e89a8f3b9b49b02e95052772f21a X-SW-Source: 2015-12/txt/msg02016.txt.bz2 --e89a8f3b9b49b02e95052772f21a Content-Type: text/plain; charset=UTF-8 Content-length: 1998 On Mon, Dec 21, 2015 at 4:19 PM, Andrew Pinski wrote: > On Mon, Dec 21, 2015 at 4:10 PM, Ian Lance Taylor wrote: >> The GNU linker doesn't support a zero-sized global variable that is >> dynamically exported, so gccgo generates those global variables with a >> size of 1 byte. Unfortunately, that means that passing a global >> variable to a function that takes an argument of a zero-sized type >> will actually pass 1 byte, taking up an argument slot, rather than a >> zero-sized argument that should be skipped. This patch fixes the >> problem in the Go frontend -> GCC interface by adding a conversion to >> the real type for any such global variables, and undoing the >> conversion where necessary. Bootstrapped and ran Go testsuite on >> x86_64-pc-linux-gnu. Committed to mainline and gccgo branch. > > VIEW_CONVERT_EXPR on different size types is invalid for GCC's IR. > So this patch cause other issues. Thanks again. This patch should fix that by taking a somewhat different approach. Instead of a VIEW_CONVERT_EXPR it generates *(orig_type*)&decl. Bootstrapped and ran Go testsuite on x86_64-pc-linux-gnu. Committed to mainline and gccgo branch. Ian 2015-12-21 Ian Lance Taylor * go-gcc.cc (class Bvariable): Remove Gcc_tree parent class. Add t_ and orig_type_ fields. Add new two parameter constructor. Add get_tree and get_decl methods. (Gcc_backend::var_expression): Pass location to var get_tree. (Gcc_backend::global_variable): Don't add VIEW_CONVERT_EXPR. Use two parameter constructor for Bvariable. (Gcc_backend::global_variable_set_init): Don't remove VIEW_CONVERT_EXPR. Use var get_decl, not get_tree. (Gcc_backend::write_global_definitions): Likewise. (Gcc_backend::init_statement): Call var get_decl, not get_tree. (Gcc_backend::block): Likewise. (Gcc_backend::implicit_variable_set_init): Likewise. (Gcc_backend::immutable_struct_set_init): Likewise. (Gcc_backend::function_set_parameters): Likewise. --e89a8f3b9b49b02e95052772f21a Content-Type: text/plain; charset=US-ASCII; name="patch.txt" Content-Disposition: attachment; filename="patch.txt" Content-Transfer-Encoding: base64 X-Attachment-Id: f_iigqrvml0 Content-length: 7512 SW5kZXg6IGdvLWdjYy5jYwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBn by1nY2MuY2MJKHJldmlzaW9uIDIzMTg4OCkKKysrIGdvLWdjYy5jYwkod29y a2luZyBjb3B5KQpAQCAtMTA5LDIyICsxMDksNjUgQEAgY2xhc3MgQmJsb2Nr IDogcHVibGljIEdjY190cmVlCiAgIHsgfQogfTsKIAotY2xhc3MgQnZhcmlh YmxlIDogcHVibGljIEdjY190cmVlCitjbGFzcyBCbGFiZWwgOiBwdWJsaWMg R2NjX3RyZWUKIHsKICBwdWJsaWM6Ci0gIEJ2YXJpYWJsZSh0cmVlIHQpCisg IEJsYWJlbCh0cmVlIHQpCiAgICAgOiBHY2NfdHJlZSh0KQogICB7IH0KIH07 CiAKLWNsYXNzIEJsYWJlbCA6IHB1YmxpYyBHY2NfdHJlZQorLy8gQnZhcmlh YmxlIGlzIGEgYml0IG1vcmUgY29tcGxpY2F0ZWQsIGJlY2F1c2Ugb2YgemVy by1zaXplZCB0eXBlcy4KKy8vIFRoZSBHTlUgbGlua2VyIGRvZXMgbm90IHBl cm1pdCBkeW5hbWljIHZhcmlhYmxlcyB3aXRoIHplcm8gc2l6ZS4KKy8vIFdo ZW4gd2Ugc2VlIHN1Y2ggYSB2YXJpYWJsZSwgd2UgZ2VuZXJhdGUgYSB2ZXJz aW9uIG9mIHRoZSB0eXBlIHdpdGgKKy8vIG5vbi16ZXJvIHNpemUuICBIb3dl dmVyLCB3aGVuIHJlZmVycmluZyB0byB0aGUgZ2xvYmFsIHZhcmlhYmxlLCB3 ZQorLy8gd2FudCBhbiBleHByZXNzaW9uIG9mIHplcm8gc2l6ZTsgb3RoZXJ3 aXNlLCBpZiwgc2F5LCB0aGUgZ2xvYmFsCisvLyB2YXJpYWJsZSBpcyBwYXNz ZWQgdG8gYSBmdW5jdGlvbiwgd2Ugd2lsbCBiZSBwYXNzaW5nIGEKKy8vIG5v bi16ZXJvLXNpemVkIHZhbHVlIHRvIGEgemVyby1zaXplZCB2YWx1ZSwgd2hp Y2ggY2FuIGxlYWQgdG8gYQorLy8gbWlzY29tcGlsYXRpb24uCisKK2NsYXNz IEJ2YXJpYWJsZQogewogIHB1YmxpYzoKLSAgQmxhYmVsKHRyZWUgdCkKLSAg ICA6IEdjY190cmVlKHQpCisgIEJ2YXJpYWJsZSh0cmVlIHQpCisgICAgOiB0 Xyh0KSwgb3JpZ190eXBlXyhOVUxMKQogICB7IH0KKworICBCdmFyaWFibGUo dHJlZSB0LCB0cmVlIG9yaWdfdHlwZSkKKyAgICA6IHRfKHQpLCBvcmlnX3R5 cGVfKG9yaWdfdHlwZSkKKyAgeyB9CisKKyAgLy8gR2V0IHRoZSB0cmVlIGZv ciB1c2UgYXMgYW4gZXhwcmVzc2lvbi4KKyAgdHJlZQorICBnZXRfdHJlZShM b2NhdGlvbikgY29uc3Q7CisKKyAgLy8gR2V0IHRoZSBhY3R1YWwgZGVjbDsK KyAgdHJlZQorICBnZXRfZGVjbCgpIGNvbnN0CisgIHsgcmV0dXJuIHRoaXMt PnRfOyB9CisKKyBwcml2YXRlOgorICB0cmVlIHRfOworICB0cmVlIG9yaWdf dHlwZV87CiB9OwogCisvLyBHZXQgdGhlIHRyZWUgb2YgYSB2YXJpYWJsZSBm b3IgdXNlIGFzIGFuIGV4cHJlc3Npb24uICBJZiB0aGlzIGlzIGEKKy8vIHpl cm8tc2l6ZWQgZ2xvYmFsLCBjcmVhdGUgYW4gZXhwcmVzc2lvbiB0aGF0IHJl ZmVycyB0byB0aGUgZGVjbCBidXQKKy8vIGhhcyB6ZXJvIHNpemUuCit0cmVl CitCdmFyaWFibGU6OmdldF90cmVlKExvY2F0aW9uIGxvY2F0aW9uKSBjb25z dAoreworICBpZiAodGhpcy0+b3JpZ190eXBlXyA9PSBOVUxMCisgICAgICB8 fCB0aGlzLT50XyA9PSBlcnJvcl9tYXJrX25vZGUKKyAgICAgIHx8IFRSRUVf VFlQRSh0aGlzLT50XykgPT0gdGhpcy0+b3JpZ190eXBlXykKKyAgICByZXR1 cm4gdGhpcy0+dF87CisgIC8vIFJldHVybiAqKG9yaWdfdHlwZSopJmRlY2wu ICAqLworICB0cmVlIHQgPSBidWlsZF9mb2xkX2FkZHJfZXhwcl9sb2MobG9j YXRpb24uZ2NjX2xvY2F0aW9uKCksIHRoaXMtPnRfKTsKKyAgdCA9IGZvbGRf YnVpbGQxX2xvYyhsb2NhdGlvbi5nY2NfbG9jYXRpb24oKSwgTk9QX0VYUFIs CisJCSAgICAgIGJ1aWxkX3BvaW50ZXJfdHlwZSh0aGlzLT5vcmlnX3R5cGVf KSwgdCk7CisgIHJldHVybiBidWlsZF9mb2xkX2luZGlyZWN0X3JlZl9sb2Mo bG9jYXRpb24uZ2NjX2xvY2F0aW9uKCksIHQpOworfQorCiAvLyBUaGlzIGZp bGUgaW1wbGVtZW50cyB0aGUgaW50ZXJmYWNlIGJldHdlZW4gdGhlIEdvIGZy b250ZW5kIHByb3BlcgogLy8gYW5kIHRoZSBnY2MgSVIuICBUaGlzIGltcGxl bWVudHMgc3BlY2lmaWMgaW5zdGFudGlhdGlvbnMgb2YKIC8vIGFic3RyYWN0 IGNsYXNzZXMgZGVmaW5lZCBieSB0aGUgR28gZnJvbnRlbmQgcHJvcGVyLiAg VGhlIEdvCkBAIC0xMTU4LDkgKzEyMDEsOSBAQCBHY2NfYmFja2VuZDo6emVy b19leHByZXNzaW9uKEJ0eXBlKiBidHlwCiAvLyBBbiBleHByZXNzaW9uIHRo YXQgcmVmZXJlbmNlcyBhIHZhcmlhYmxlLgogCiBCZXhwcmVzc2lvbioKLUdj Y19iYWNrZW5kOjp2YXJfZXhwcmVzc2lvbihCdmFyaWFibGUqIHZhciwgTG9j YXRpb24pCitHY2NfYmFja2VuZDo6dmFyX2V4cHJlc3Npb24oQnZhcmlhYmxl KiB2YXIsIExvY2F0aW9uIGxvY2F0aW9uKQogewotICB0cmVlIHJldCA9IHZh ci0+Z2V0X3RyZWUoKTsKKyAgdHJlZSByZXQgPSB2YXItPmdldF90cmVlKGxv Y2F0aW9uKTsKICAgaWYgKHJldCA9PSBlcnJvcl9tYXJrX25vZGUpCiAgICAg cmV0dXJuIHRoaXMtPmVycm9yX2V4cHJlc3Npb24oKTsKICAgcmV0dXJuIHRo aXMtPm1ha2VfZXhwcmVzc2lvbihyZXQpOwpAQCAtMTg5NCw3ICsxOTM3LDcg QEAgR2NjX2JhY2tlbmQ6OmV4cHJlc3Npb25fc3RhdGVtZW50KEJleHByZQog QnN0YXRlbWVudCoKIEdjY19iYWNrZW5kOjppbml0X3N0YXRlbWVudChCdmFy aWFibGUqIHZhciwgQmV4cHJlc3Npb24qIGluaXQpCiB7Ci0gIHRyZWUgdmFy X3RyZWUgPSB2YXItPmdldF90cmVlKCk7CisgIHRyZWUgdmFyX3RyZWUgPSB2 YXItPmdldF9kZWNsKCk7CiAgIHRyZWUgaW5pdF90cmVlID0gaW5pdC0+Z2V0 X3RyZWUoKTsKICAgaWYgKHZhcl90cmVlID09IGVycm9yX21hcmtfbm9kZSB8 fCBpbml0X3RyZWUgPT0gZXJyb3JfbWFya19ub2RlKQogICAgIHJldHVybiB0 aGlzLT5lcnJvcl9zdGF0ZW1lbnQoKTsKQEAgLTIyNjQsNyArMjMwNyw3IEBA IEdjY19iYWNrZW5kOjpibG9jayhCZnVuY3Rpb24qIGZ1bmN0aW9uLAogICAg ICAgIHB2ICE9IHZhcnMuZW5kKCk7CiAgICAgICAgKytwdikKICAgICB7Ci0g ICAgICAqcHAgPSAoKnB2KS0+Z2V0X3RyZWUoKTsKKyAgICAgICpwcCA9ICgq cHYpLT5nZXRfZGVjbCgpOwogICAgICAgaWYgKCpwcCAhPSBlcnJvcl9tYXJr X25vZGUpCiAJcHAgPSAmREVDTF9DSEFJTigqcHApOwogICAgIH0KQEAgLTI0 MjAsMTEgKzI0NjMsNyBAQCBHY2NfYmFja2VuZDo6Z2xvYmFsX3ZhcmlhYmxl KGNvbnN0IHN0ZDo6CiAKICAgZ29fcHJlc2VydmVfZnJvbV9nYyhkZWNsKTsK IAotICBpZiAob3JpZ190eXBlX3RyZWUgIT0gdHlwZV90cmVlKQotICAgIGRl Y2wgPSBmb2xkX2J1aWxkMV9sb2MobG9jYXRpb24uZ2NjX2xvY2F0aW9uKCks IFZJRVdfQ09OVkVSVF9FWFBSLAotCQkJICAgb3JpZ190eXBlX3RyZWUsIGRl Y2wpOwotCi0gIHJldHVybiBuZXcgQnZhcmlhYmxlKGRlY2wpOworICByZXR1 cm4gbmV3IEJ2YXJpYWJsZShkZWNsLCBvcmlnX3R5cGVfdHJlZSk7CiB9CiAK IC8vIFNldCB0aGUgaW5pdGlhbCB2YWx1ZSBvZiBhIGdsb2JhbCB2YXJpYWJs ZS4KQEAgLTI0MzYsMTMgKzI0NzUsOSBAQCBHY2NfYmFja2VuZDo6Z2xvYmFs X3ZhcmlhYmxlX3NldF9pbml0KEJ2CiAgIGlmIChleHByX3RyZWUgPT0gZXJy b3JfbWFya19ub2RlKQogICAgIHJldHVybjsKICAgZ2NjX2Fzc2VydChUUkVF X0NPTlNUQU5UKGV4cHJfdHJlZSkpOwotICB0cmVlIHZhcl9kZWNsID0gdmFy LT5nZXRfdHJlZSgpOworICB0cmVlIHZhcl9kZWNsID0gdmFyLT5nZXRfZGVj bCgpOwogICBpZiAodmFyX2RlY2wgPT0gZXJyb3JfbWFya19ub2RlKQogICAg IHJldHVybjsKLSAgLy8gVW5kbyB0aGUgVklFV19DT05WRVJUX0VYUFIgdGhh dCBtYXkgaGF2ZSBiZWVuIGFkZGVkIGJ5Ci0gIC8vIGdsb2JhbF92YXJpYWJs ZS4KLSAgaWYgKFRSRUVfQ09ERSh2YXJfZGVjbCkgPT0gVklFV19DT05WRVJU X0VYUFIpCi0gICAgdmFyX2RlY2wgPSBUUkVFX09QRVJBTkQodmFyX2RlY2ws IDApOwogICBERUNMX0lOSVRJQUwodmFyX2RlY2wpID0gZXhwcl90cmVlOwog CiAgIC8vIElmIHRoaXMgdmFyaWFibGUgZ29lcyBpbiBhIHVuaXF1ZSBzZWN0 aW9uLCBpdCBtYXkgbmVlZCB0byBnbyBpbnRvCkBAIC0yNjY4LDcgKzI3MDMs NyBAQCBHY2NfYmFja2VuZDo6aW1wbGljaXRfdmFyaWFibGVfc2V0X2luaXQo CiAJCQkJCUJ0eXBlKiwgYm9vbCwgYm9vbCwgYm9vbCBpc19jb21tb24sCiAJ CQkJCUJleHByZXNzaW9uKiBpbml0KQogewotICB0cmVlIGRlY2wgPSB2YXIt PmdldF90cmVlKCk7CisgIHRyZWUgZGVjbCA9IHZhci0+Z2V0X2RlY2woKTsK ICAgdHJlZSBpbml0X3RyZWU7CiAgIGlmIChpbml0ID09IE5VTEwpCiAgICAg aW5pdF90cmVlID0gTlVMTF9UUkVFOwpAQCAtMjc2Miw3ICsyNzk3LDcgQEAg R2NjX2JhY2tlbmQ6OmltbXV0YWJsZV9zdHJ1Y3Rfc2V0X2luaXQoQgogCQkJ CSAgICAgICBib29sLCBib29sIGlzX2NvbW1vbiwgQnR5cGUqLCBMb2NhdGlv biwKIAkJCQkgICAgICAgQmV4cHJlc3Npb24qIGluaXRpYWxpemVyKQogewot ICB0cmVlIGRlY2wgPSB2YXItPmdldF90cmVlKCk7CisgIHRyZWUgZGVjbCA9 IHZhci0+Z2V0X2RlY2woKTsKICAgdHJlZSBpbml0X3RyZWUgPSBpbml0aWFs aXplci0+Z2V0X3RyZWUoKTsKICAgaWYgKGRlY2wgPT0gZXJyb3JfbWFya19u b2RlIHx8IGluaXRfdHJlZSA9PSBlcnJvcl9tYXJrX25vZGUpCiAgICAgcmV0 dXJuOwpAQCAtMjk4MSw3ICszMDE2LDcgQEAgR2NjX2JhY2tlbmQ6OmZ1bmN0 aW9uX3NldF9wYXJhbWV0ZXJzKEJmdQogICAgICAgIHB2ICE9IHBhcmFtX3Zh cnMuZW5kKCk7CiAgICAgICAgKytwdikKICAgICB7Ci0gICAgICAqcHAgPSAo KnB2KS0+Z2V0X3RyZWUoKTsKKyAgICAgICpwcCA9ICgqcHYpLT5nZXRfZGVj bCgpOwogICAgICAgZ2NjX2Fzc2VydCgqcHAgIT0gZXJyb3JfbWFya19ub2Rl KTsKICAgICAgIHBwID0gJkRFQ0xfQ0hBSU4oKnBwKTsKICAgICB9CkBAIC0z MDM3LDE0ICszMDcyLDEwIEBAIEdjY19iYWNrZW5kOjp3cml0ZV9nbG9iYWxf ZGVmaW5pdGlvbnMoCiAgICAgICAgcCAhPSB2YXJpYWJsZV9kZWNscy5lbmQo KTsKICAgICAgICArK3ApCiAgICAgewotICAgICAgaWYgKCgqcCktPmdldF90 cmVlKCkgIT0gZXJyb3JfbWFya19ub2RlKQorICAgICAgdHJlZSB2ID0gKCpw KS0+Z2V0X2RlY2woKTsKKyAgICAgIGlmICh2ICE9IGVycm9yX21hcmtfbm9k ZSkKICAgICAgICAgewotCSAgdHJlZSB0ID0gKCpwKS0+Z2V0X3RyZWUoKTsK LQkgIC8vIFVuZG8gdGhlIFZJRVdfQ09OVkVSVF9FWFBSIHRoYXQgbWF5IGhh dmUgYmVlbiBhZGRlZCBieQotCSAgLy8gZ2xvYmFsX3ZhcmlhYmxlLgotCSAg aWYgKFRSRUVfQ09ERSh0KSA9PSBWSUVXX0NPTlZFUlRfRVhQUikKLQkgICAg dCA9IFRSRUVfT1BFUkFORCh0LCAwKTsKLSAgICAgICAgICBkZWZzW2ldID0g dDsKKyAgICAgICAgICBkZWZzW2ldID0gdjsKICAgICAgICAgICBnb19wcmVz ZXJ2ZV9mcm9tX2djKGRlZnNbaV0pOwogICAgICAgICAgICsraTsKICAgICAg ICAgfQo= --e89a8f3b9b49b02e95052772f21a--