From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 17463 invoked by alias); 3 Sep 2014 20:19:26 -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 17450 invoked by uid 89); 3 Sep 2014 20:19:26 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-4.7 required=5.0 tests=AWL,BAYES_00,RP_MATCHES_RCVD,SPF_HELO_PASS,SPF_PASS autolearn=ham version=3.3.2 X-HELO: mx1.redhat.com Received: from mx1.redhat.com (HELO mx1.redhat.com) (209.132.183.28) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with (AES256-GCM-SHA384 encrypted) ESMTPS; Wed, 03 Sep 2014 20:19:25 +0000 Received: from int-mx11.intmail.prod.int.phx2.redhat.com (int-mx11.intmail.prod.int.phx2.redhat.com [10.5.11.24]) by mx1.redhat.com (8.14.4/8.14.4) with ESMTP id s83KJN4J015129 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=FAIL); Wed, 3 Sep 2014 16:19:23 -0400 Received: from VMBP.local (vpn-48-17.rdu2.redhat.com [10.10.48.17]) by int-mx11.intmail.prod.int.phx2.redhat.com (8.14.4/8.14.4) with ESMTP id s83KJM6i007526; Wed, 3 Sep 2014 16:19:22 -0400 Message-ID: <540777C0.9050106@redhat.com> Date: Wed, 03 Sep 2014 20:19:00 -0000 From: Vladimir Makarov User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.9; rv:31.0) Gecko/20100101 Thunderbird/31.0 MIME-Version: 1.0 To: Ilya Enkovich CC: gcc@gnu.org, gcc-patches , Evgeny Stupachenko , Richard Biener , Uros Bizjak , Jeff Law Subject: Re: Enable EBX for x86 in 32bits PIC code References: <20140707114750.GB31640@tucnak.redhat.com> <20140822121151.GA60032@msticlxl57.ims.intel.com> <53FB5184.3030500@redhat.com> <53FCA6F5.7020405@redhat.com> <20140826213712.GA39451@msticlxl57.ims.intel.com> <53FE3D46.8050904@redhat.com> In-Reply-To: Content-Type: multipart/mixed; boundary="------------010808000409090808090000" X-IsSubscribed: yes X-SW-Source: 2014-09/txt/msg00274.txt.bz2 This is a multi-part message in MIME format. --------------010808000409090808090000 Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 7bit Content-length: 2355 On 2014-08-29 2:47 AM, Ilya Enkovich wrote: > Seems your patch doesn't cover all cases. Attached is a modified > patch (with your changes included) and a test where double constant is > wrongly rematerialized. I also see in ira dump that there is still a > copy of PIC reg created: > > Initialization of original PIC reg: > (insn 23 22 24 2 (set (reg:SI 127) > (reg:SI 3 bx)) test.cc:42 90 {*movsi_internal} > (expr_list:REG_DEAD (reg:SI 3 bx) > (nil))) > ... > Copy is created: > (insn 135 37 25 3 (set (reg:SI 138 [127]) > (reg:SI 127)) 90 {*movsi_internal} > (expr_list:REG_DEAD (reg:SI 127) > (nil))) > ... > Copy is used: > (insn 119 25 122 3 (set (reg:DF 134) > (mem/u/c:DF (plus:SI (reg:SI 138 [127]) > (const:SI (unspec:SI [ > (symbol_ref/u:SI ("*.LC0") [flags 0x2]) > ] UNSPEC_GOTOFF))) [5 S8 A64])) 128 {*movdf_internal} > (expr_list:REG_EQUIV (const_double:DF > 2.9999999999999997371893933895137251965934410691261292e-4 > [0x0.9d495182a99308p-11]) > (nil))) > The copy is created by a newer IRA optimization for function prologues. The patch in the attachment should solve the problem. I also added the code to prevent spilling the pic pseudo in LRA which could happen before theoretically. > After reload we have new usage of r127 which is allocated to ecx which > actually does not have any definition in this function at all. > > (insn 151 42 44 4 (set (reg:SI 0 ax [147]) > (plus:SI (reg:SI 2 cx [127]) > (const:SI (unspec:SI [ > (symbol_ref/u:SI ("*.LC0") [flags 0x2]) > ] UNSPEC_GOTOFF)))) test.cc:44 213 {*leasi} > (expr_list:REG_EQUAL (symbol_ref/u:SI ("*.LC0") [flags 0x2]) > (nil))) > (insn 44 151 45 4 (set (reg:DF 21 xmm0 [orig:129 D.2450 ] [129]) > (mult:DF (reg:DF 21 xmm0 [orig:128 D.2450 ] [128]) > (mem/u/c:DF (reg:SI 0 ax [147]) [5 S8 A64]))) test.cc:44 > 790 {*fop_df_comm_sse} > (expr_list:REG_EQUAL (mult:DF (reg:DF 21 xmm0 [orig:128 D.2450 ] [128]) > (const_double:DF > 2.9999999999999997371893933895137251965934410691261292e-4 > [0x0.9d495182a99308p-11])) > (nil))) > > Compilation string: g++ -m32 -O2 -mfpmath=sse -fPIE -S test.cc --------------010808000409090808090000 Content-Type: text/plain; charset=UTF-8; x-mac-type="0"; x-mac-creator="0"; name="z2" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="z2" Content-length: 3246 SW5kZXg6IGlyYS5jCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIGlyYS5j CShyZXZpc2lvbiAyMTQ1NzYpCisrKyBpcmEuYwkod29ya2luZyBjb3B5KQpA QCAtNDg4Nyw3ICs0ODg3LDcgQEAgc3BsaXRfbGl2ZV9yYW5nZXNfZm9yX3No cmlua193cmFwICh2b2lkKQogICBGT1JfQkJfSU5TTlMgKGZpcnN0LCBpbnNu KQogICAgIHsKICAgICAgIHJ0eCBkZXN0ID0gaW50ZXJlc3RpbmdfZGVzdF9m b3Jfc2hwcmVwIChpbnNuLCBjYWxsX2RvbSk7Ci0gICAgICBpZiAoIWRlc3Qp CisgICAgICBpZiAoIWRlc3QgfHwgZGVzdCA9PSBwaWNfb2Zmc2V0X3RhYmxl X3J0eCkKIAljb250aW51ZTsKIAogICAgICAgcnR4IG5ld3JlZyA9IE5VTExf UlRYOwpJbmRleDogbHJhLWFzc2lnbnMuYwo9PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09Ci0tLSBscmEtYXNzaWducy5jCShyZXZpc2lvbiAyMTQ1NzYpCisrKyBs cmEtYXNzaWducy5jCSh3b3JraW5nIGNvcHkpCkBAIC04NzksMTEgKzg3OSwx MyBAQCBzcGlsbF9mb3IgKGludCByZWdubywgYml0bWFwIHNwaWxsZWRfcHNl CiAJfQogICAgICAgLyogU3BpbGwgcHNldWRvcy4JICovCiAgICAgICBFWEVD VVRFX0lGX1NFVF9JTl9CSVRNQVAgKCZzcGlsbF9wc2V1ZG9zX2JpdG1hcCwg MCwgc3BpbGxfcmVnbm8sIGJpKQotCWlmICgoaW50KSBzcGlsbF9yZWdubyA+ PSBscmFfY29uc3RyYWludF9uZXdfcmVnbm9fc3RhcnQKLQkgICAgJiYgISBi aXRtYXBfYml0X3AgKCZscmFfaW5oZXJpdGFuY2VfcHNldWRvcywgc3BpbGxf cmVnbm8pCi0JICAgICYmICEgYml0bWFwX2JpdF9wICgmbHJhX3NwbGl0X3Jl Z3MsIHNwaWxsX3JlZ25vKQotCSAgICAmJiAhIGJpdG1hcF9iaXRfcCAoJmxy YV9zdWJyZWdfcmVsb2FkX3BzZXVkb3MsIHNwaWxsX3JlZ25vKQotCSAgICAm JiAhIGJpdG1hcF9iaXRfcCAoJmxyYV9vcHRpb25hbF9yZWxvYWRfcHNldWRv cywgc3BpbGxfcmVnbm8pKQorCWlmICgocGljX29mZnNldF90YWJsZV9ydHgg IT0gTlVMTAorCSAgICAgJiYgc3BpbGxfcmVnbm8gPT0gUkVHTk8gKHBpY19v ZmZzZXRfdGFibGVfcnR4KSkKKwkgICAgfHwgKChpbnQpIHNwaWxsX3JlZ25v ID49IGxyYV9jb25zdHJhaW50X25ld19yZWdub19zdGFydAorCQkmJiAhIGJp dG1hcF9iaXRfcCAoJmxyYV9pbmhlcml0YW5jZV9wc2V1ZG9zLCBzcGlsbF9y ZWdubykKKwkJJiYgISBiaXRtYXBfYml0X3AgKCZscmFfc3BsaXRfcmVncywg c3BpbGxfcmVnbm8pCisJCSYmICEgYml0bWFwX2JpdF9wICgmbHJhX3N1YnJl Z19yZWxvYWRfcHNldWRvcywgc3BpbGxfcmVnbm8pCisJCSYmICEgYml0bWFw X2JpdF9wICgmbHJhX29wdGlvbmFsX3JlbG9hZF9wc2V1ZG9zLCBzcGlsbF9y ZWdubykpKQogCSAgZ290byBmYWlsOwogICAgICAgaW5zbl9wc2V1ZG9zX251 bSA9IDA7CiAgICAgICBpZiAobHJhX2R1bXBfZmlsZSAhPSBOVUxMKQpAQCAt MTA1Myw3ICsxMDU1LDkgQEAgc2V0dXBfbGl2ZV9wc2V1ZG9zX2FuZF9zcGls bF9hZnRlcl9yaXNreQogICAgICAgcmV0dXJuOwogICAgIH0KICAgZm9yIChu ID0gMCwgaSA9IEZJUlNUX1BTRVVET19SRUdJU1RFUjsgaSA8IG1heF9yZWdu bzsgaSsrKQotICAgIGlmIChyZWdfcmVudW1iZXJbaV0gPj0gMCAmJiBscmFf cmVnX2luZm9baV0ubnJlZnMgPiAwKQorICAgIGlmICgocGljX29mZnNldF90 YWJsZV9ydHggPT0gTlVMTF9SVFgKKwkgfHwgaSAhPSAoaW50KSBSRUdOTyAo cGljX29mZnNldF90YWJsZV9ydHgpKQorCSYmIHJlZ19yZW51bWJlcltpXSA+ PSAwICYmIGxyYV9yZWdfaW5mb1tpXS5ucmVmcyA+IDApCiAgICAgICBzb3J0 ZWRfcHNldWRvc1tuKytdID0gaTsKICAgcXNvcnQgKHNvcnRlZF9wc2V1ZG9z LCBuLCBzaXplb2YgKGludCksIHBzZXVkb19jb21wYXJlX2Z1bmMpOwogICBm b3IgKGkgPSBuIC0gMTsgaSA+PSAwOyBpLS0pCkBAIC0xMzYwLDYgKzEzNjQs OCBAQCBhc3NpZ25fYnlfc3BpbGxzICh2b2lkKQogCX0KICAgICAgIEVYRUNV VEVfSUZfU0VUX0lOX1NQQVJTRVNFVCAobGl2ZV9yYW5nZV9oYXJkX3JlZ19w c2V1ZG9zLCBjb25mbGljdF9yZWdubykKIAl7CisJICBnY2NfYXNzZXJ0IChw aWNfb2Zmc2V0X3RhYmxlX3J0eCA9PSBOVUxMCisJCSAgICAgIHx8IGNvbmZs aWN0X3JlZ25vICE9IFJFR05PIChwaWNfb2Zmc2V0X3RhYmxlX3J0eCkpOwog CSAgaWYgKChpbnQpIGNvbmZsaWN0X3JlZ25vID49IGxyYV9jb25zdHJhaW50 X25ld19yZWdub19zdGFydCkKIAkgICAgc29ydGVkX3BzZXVkb3NbbmZhaWxz KytdID0gY29uZmxpY3RfcmVnbm87CiAJICBpZiAobHJhX2R1bXBfZmlsZSAh PSBOVUxMKQo= --------------010808000409090808090000--