From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 16204 invoked by alias); 29 Jun 2011 16:25:57 -0000 Received: (qmail 15905 invoked by uid 22791); 29 Jun 2011 16:25:55 -0000 X-SWARE-Spam-Status: No, hits=-2.3 required=5.0 tests=AWL,BAYES_00,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,FREEMAIL_FROM,RCVD_IN_DNSWL_LOW,T_TO_NO_BRKTS_FREEMAIL X-Spam-Check-By: sourceware.org Received: from mail-qy0-f182.google.com (HELO mail-qy0-f182.google.com) (209.85.216.182) by sourceware.org (qpsmtpd/0.43rc1) with ESMTP; Wed, 29 Jun 2011 16:25:40 +0000 Received: by qyk38 with SMTP id 38so841026qyk.20 for ; Wed, 29 Jun 2011 09:25:39 -0700 (PDT) MIME-Version: 1.0 Received: by 10.229.63.69 with SMTP id a5mr755197qci.94.1309364739432; Wed, 29 Jun 2011 09:25:39 -0700 (PDT) Received: by 10.229.214.83 with HTTP; Wed, 29 Jun 2011 09:25:39 -0700 (PDT) In-Reply-To: References: <20110611154235.GA19926@intel.com> Date: Wed, 29 Jun 2011 17:36:00 -0000 Message-ID: Subject: Re: PATCH [2/n]: Prepare x32: Convert pointer to TLS symbol if needed From: "H.J. Lu" To: gcc-patches@gcc.gnu.org, richard.sandiford@linaro.org Content-Type: multipart/mixed; boundary=0016e6509fa22ce19e04a6dc3c60 X-IsSubscribed: yes 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 X-SW-Source: 2011-06/txt/msg02259.txt.bz2 --0016e6509fa22ce19e04a6dc3c60 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable Content-length: 2390 On Wed, Jun 29, 2011 at 7:06 AM, H.J. Lu wrote: > On Wed, Jun 29, 2011 at 1:45 AM, Richard Sandiford > wrote: >> "H.J. Lu" writes: >>> @@ -706,7 +706,13 @@ precompute_register_parameters (int num_actuals, s= truct arg_data *args, >>> =A0 =A0 =A0 =A0 =A0pseudo now. =A0TLS symbols sometimes need a call to = resolve. =A0*/ >>> =A0 =A0 =A0 if (CONSTANT_P (args[i].value) >>> =A0 =A0 =A0 =A0 =A0 && !targetm.legitimate_constant_p (args[i].mode, ar= gs[i].value)) >>> - =A0 =A0 =A0 args[i].value =3D force_reg (args[i].mode, args[i].value); >>> + =A0 =A0 =A0 { >>> + =A0 =A0 =A0 =A0 if (GET_MODE (args[i].value) !=3D args[i].mode) >>> + =A0 =A0 =A0 =A0 =A0 args[i].value =3D convert_to_mode (args[i].mode, >>> + =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 = =A0 =A0 =A0 =A0 =A0args[i].value, >>> + =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 = =A0 =A0 =A0 =A0 =A0args[i].unsignedp); >>> + =A0 =A0 =A0 =A0 args[i].value =3D force_reg (args[i].mode, args[i].va= lue); >>> + =A0 =A0 =A0 } >> >> But if GET_MODE (args[i].value) !=3D args[i].mode, then the call to >> targetm.legitimate_constant_p looks wrong. =A0The mode passed in the >> first argument is supposed to the mode of the second argument. >> >> Is there any reason why this and the following: >> >> =A0 =A0 =A0 =A0/* If we are to promote the function arg to a wider mode, >> =A0 =A0 =A0 =A0 =A0 do it now. =A0*/ >> >> =A0 =A0 =A0 =A0if (args[i].mode !=3D TYPE_MODE (TREE_TYPE (args[i].tree_= value))) >> =A0 =A0 =A0 =A0 =A0args[i].value >> =A0 =A0 =A0 =A0 =A0 =A0=3D convert_modes (args[i].mode, >> =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 TYPE_MODE (TREE_= TYPE (args[i].tree_value)), >> =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 args[i].value, a= rgs[i].unsignedp); >> >> need to be done in the current order? =A0I can't think of any off-hand. >> If not, would swapping them also fix the bug? >> >> (I can't review this either way, of course.) > > It works on the testcase. =A0I will do a full test. > It works. There are no regressions on Linux/x86-64. OK for trunk? Thanks. --=20 H.J. ---- 2011-06-29 H.J. Lu PR middle-end/47715 * calls.c (precompute_register_parameters): Promote the function argument before checking non-legitimate constant. --0016e6509fa22ce19e04a6dc3c60 Content-Type: text/plain; charset=US-ASCII; name="gcc-x32-pr47715-1.patch" Content-Disposition: attachment; filename="gcc-x32-pr47715-1.patch" Content-Transfer-Encoding: base64 X-Attachment-Id: f_gpihxljp0 Content-length: 1969 MjAxMS0wNi0yOSAgSC5KLiBMdSAgPGhvbmdqaXUubHVAaW50ZWwuY29tPgoK CVBSIG1pZGRsZS1lbmQvNDc3MTUKCSogY2FsbHMuYyAocHJlY29tcHV0ZV9y ZWdpc3Rlcl9wYXJhbWV0ZXJzKTogUHJvbW90ZSB0aGUgZnVuY3Rpb24KCWFy Z3VtZW50IGJlZm9yZSBjaGVja2luZyBub24tbGVnaXRpbWF0ZSBjb25zdGFu dC4KCmRpZmYgLS1naXQgYS9nY2MvY2FsbHMuYyBiL2djYy9jYWxscy5jCmlu ZGV4IGJiYTQ3N2MuLjc1MzhlNGUgMTAwNjQ0Ci0tLSBhL2djYy9jYWxscy5j CisrKyBiL2djYy9jYWxscy5jCkBAIC03MDIsMTIgKzcwMiw2IEBAIHByZWNv bXB1dGVfcmVnaXN0ZXJfcGFyYW1ldGVycyAoaW50IG51bV9hY3R1YWxzLCBz dHJ1Y3QgYXJnX2RhdGEgKmFyZ3MsCiAJICAgIHBvcF90ZW1wX3Nsb3RzICgp OwogCSAgfQogCi0JLyogSWYgdGhlIHZhbHVlIGlzIGEgbm9uLWxlZ2l0aW1h dGUgY29uc3RhbnQsIGZvcmNlIGl0IGludG8gYQotCSAgIHBzZXVkbyBub3cu ICBUTFMgc3ltYm9scyBzb21ldGltZXMgbmVlZCBhIGNhbGwgdG8gcmVzb2x2 ZS4gICovCi0JaWYgKENPTlNUQU5UX1AgKGFyZ3NbaV0udmFsdWUpCi0JICAg ICYmICF0YXJnZXRtLmxlZ2l0aW1hdGVfY29uc3RhbnRfcCAoYXJnc1tpXS5t b2RlLCBhcmdzW2ldLnZhbHVlKSkKLQkgIGFyZ3NbaV0udmFsdWUgPSBmb3Jj ZV9yZWcgKGFyZ3NbaV0ubW9kZSwgYXJnc1tpXS52YWx1ZSk7Ci0KIAkvKiBJ ZiB3ZSBhcmUgdG8gcHJvbW90ZSB0aGUgZnVuY3Rpb24gYXJnIHRvIGEgd2lk ZXIgbW9kZSwKIAkgICBkbyBpdCBub3cuICAqLwogCkBAIC03MTcsNiArNzEx LDEyIEBAIHByZWNvbXB1dGVfcmVnaXN0ZXJfcGFyYW1ldGVycyAoaW50IG51 bV9hY3R1YWxzLCBzdHJ1Y3QgYXJnX2RhdGEgKmFyZ3MsCiAJCQkgICAgIFRZ UEVfTU9ERSAoVFJFRV9UWVBFIChhcmdzW2ldLnRyZWVfdmFsdWUpKSwKIAkJ CSAgICAgYXJnc1tpXS52YWx1ZSwgYXJnc1tpXS51bnNpZ25lZHApOwogCisJ LyogSWYgdGhlIHZhbHVlIGlzIGEgbm9uLWxlZ2l0aW1hdGUgY29uc3RhbnQs IGZvcmNlIGl0IGludG8gYQorCSAgIHBzZXVkbyBub3cuICBUTFMgc3ltYm9s cyBzb21ldGltZXMgbmVlZCBhIGNhbGwgdG8gcmVzb2x2ZS4gICovCisJaWYg KENPTlNUQU5UX1AgKGFyZ3NbaV0udmFsdWUpCisJICAgICYmICF0YXJnZXRt LmxlZ2l0aW1hdGVfY29uc3RhbnRfcCAoYXJnc1tpXS5tb2RlLCBhcmdzW2ld LnZhbHVlKSkKKwkgIGFyZ3NbaV0udmFsdWUgPSBmb3JjZV9yZWcgKGFyZ3Nb aV0ubW9kZSwgYXJnc1tpXS52YWx1ZSk7CisKIAkvKiBJZiB3ZSdyZSBnb2lu ZyB0byBoYXZlIHRvIGxvYWQgdGhlIHZhbHVlIGJ5IHBhcnRzLCBwdWxsIHRo ZQogCSAgIHBhcnRzIGludG8gcHNldWRvcy4gIFRoZSBwYXJ0IGV4dHJhY3Rp b24gcHJvY2VzcyBjYW4gaW52b2x2ZQogCSAgIG5vbi10cml2aWFsIGNvbXB1 dGF0aW9uLiAgKi8K --0016e6509fa22ce19e04a6dc3c60--