From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 8989 invoked by alias); 9 Sep 2014 16:43:07 -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 8979 invoked by uid 89); 9 Sep 2014 16:43:06 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-5.0 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; Tue, 09 Sep 2014 16:43:04 +0000 Received: from int-mx09.intmail.prod.int.phx2.redhat.com (int-mx09.intmail.prod.int.phx2.redhat.com [10.5.11.22]) by mx1.redhat.com (8.14.4/8.14.4) with ESMTP id s89Gh370005669 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=FAIL); Tue, 9 Sep 2014 12:43:03 -0400 Received: from topor.usersys.redhat.com ([10.15.16.142]) by int-mx09.intmail.prod.int.phx2.redhat.com (8.14.4/8.14.4) with ESMTP id s89Gh2is004842; Tue, 9 Sep 2014 12:43:02 -0400 Message-ID: <540F2E16.7060904@redhat.com> Date: Tue, 09 Sep 2014 16:43:00 -0000 From: Vladimir Makarov User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:24.0) Gecko/20100101 Thunderbird/24.7.0 MIME-Version: 1.0 To: "Zamyatin, Igor" CC: "Enkovich, Ilya" , gcc-patches 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> <540777C0.9050106@redhat.com> <0EFAB2BDD0F67E4FB6CCC8B9F87D756969B3A89D@IRSMSX101.ger.corp.intel.com> In-Reply-To: <0EFAB2BDD0F67E4FB6CCC8B9F87D756969B3A89D@IRSMSX101.ger.corp.intel.com> Content-Type: multipart/mixed; boundary="------------030306050609070806040102" X-IsSubscribed: yes X-SW-Source: 2014-09/txt/msg00746.txt.bz2 This is a multi-part message in MIME format. --------------030306050609070806040102 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: quoted-printable Content-length: 3935 On 09/04/2014 10:30 AM, Zamyatin, Igor wrote: > >> -----Original Message----- >> From: gcc-patches-owner@gcc.gnu.org [mailto:gcc-patches- >> owner@gcc.gnu.org] On Behalf Of Vladimir Makarov >> Sent: Thursday, September 04, 2014 12:19 AM >> 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 >> >> 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_i= nternal} >>> (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. > Hi, Vladimir! > > I applied patch as an addition to your previous patch (was I right?) and = unfortunately got all spec2000 tests failed at the runtime (segfault) > > Looking at 164.gzip I saw following code in spec_init > > > 00004bc0 : > 4bc0: 55 push %ebp > 4bc1: 57 push %edi > 4bc2: 56 push %esi > 4bc3: e8 58 c6 ff ff call 1220 <__x86.get_pc_thunk.s= i> > 4bc8: 81 c6 38 84 00 00 add $0x8438,%esi > 4bce: 53 push %ebx > 4bcf: 8d 64 24 e4 lea -0x1c(%esp),%esp > 4bd3: 83 be a0 03 00 00 03 cmpl $0x3,0x3a0(%esi) > 4bda: 7f 67 jg 4c43 > 4bdc: 8d ae 40 12 05 00 lea 0x51240(%esi),%ebp > 4be2: 8d 45 30 lea 0x30(%ebp),%eax > 4be5: 89 c6 mov %eax,%esi = <---- incorrect move, GOT value is now lost (here was mov %e= ax,0x1c(%esp) before this additional patch) > 4be7: 8b 7d 00 mov 0x0(%ebp),%edi > 4bea: 89 f3 mov %esi,%ebx = <---- now ebx contains incorrect value so call to malloc will be= executed wrongly > 4bec: c7 45 04 00 00 00 00 movl $0x0,0x4(%ebp) > 4bf3: c7 45 08 00 00 00 00 movl $0x0,0x8(%ebp) > 4bfa: c7 45 0c 00 00 00 00 movl $0x0,0xc(%ebp) > 4c01: 8d 87 00 90 01 00 lea 0x19000(%edi),%eax > 4c07: 89 04 24 mov %eax,(%esp) > 4c0a: e8 a1 be ff ff call ab0 > > I've investigated the wrong code generation. I did a mistake in my last patch excluding pic pseudo from live-range analysis when risky transformations are on. Here is the right version of all IRA/LRA changes relative to trunk. I managed to compile and run successfully all 32-bit PIC SPECInt2000 programs with these changes. --------------030306050609070806040102 Content-Type: text/plain; charset=UTF-8; name="z3" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="z3" Content-length: 6267 SW5kZXg6IGlyYS1jb2xvci5jCj09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t IGlyYS1jb2xvci5jCShyZXZpc2lvbiAyMTQ1NzYpCisrKyBpcmEtY29sb3Iu Ywkod29ya2luZyBjb3B5KQpAQCAtMzIzOSw5ICszMjM5LDExIEBACiAJICBp cmFfYXNzZXJ0IChBTExPQ05PX0NMQVNTIChzdWJsb29wX2FsbG9jbm8pID09 IHJjbGFzcyk7CiAJICBpcmFfYXNzZXJ0IChiaXRtYXBfYml0X3AgKHN1Ymxv b3Bfbm9kZS0+YWxsX2FsbG9jbm9zLAogCQkJCSAgICBBTExPQ05PX05VTSAo c3VibG9vcF9hbGxvY25vKSkpOwotCSAgaWYgKChmbGFnX2lyYV9yZWdpb24g PT0gSVJBX1JFR0lPTl9NSVhFRCkKLQkgICAgICAmJiAobG9vcF90cmVlX25v ZGUtPnJlZ19wcmVzc3VyZVtwY2xhc3NdCi0JCSAgPD0gaXJhX2NsYXNzX2hh cmRfcmVnc19udW1bcGNsYXNzXSkpCisJICBpZiAoKGZsYWdfaXJhX3JlZ2lv biA9PSBJUkFfUkVHSU9OX01JWEVECisJICAgICAgICYmIChsb29wX3RyZWVf bm9kZS0+cmVnX3ByZXNzdXJlW3BjbGFzc10KKwkJICAgPD0gaXJhX2NsYXNz X2hhcmRfcmVnc19udW1bcGNsYXNzXSkpCisJICAgICAgfHwgKHBpY19vZmZz ZXRfdGFibGVfcnR4ICE9IE5VTEwKKwkJICAmJiByZWdubyA9PSAoaW50KSBS RUdOTyAocGljX29mZnNldF90YWJsZV9ydHgpKSkKIAkgICAgewogCSAgICAg IGlmICghIEFMTE9DTk9fQVNTSUdORURfUCAoc3VibG9vcF9hbGxvY25vKSkK IAkJewpJbmRleDogaXJhLWVtaXQuYwo9PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 Ci0tLSBpcmEtZW1pdC5jCShyZXZpc2lvbiAyMTQ1NzYpCisrKyBpcmEtZW1p dC5jCSh3b3JraW5nIGNvcHkpCkBAIC02MjAsNyArNjIwLDEwIEBACiAJCSAg LyogZG9uJ3QgY3JlYXRlIGNvcGllcyBiZWNhdXNlIHJlbG9hZCBjYW4gc3Bp bGwgYW4KIAkJICAgICBhbGxvY25vIHNldCBieSBjb3B5IGFsdGhvdWdoIHRo ZSBhbGxvY25vIHdpbGwgbm90CiAJCSAgICAgZ2V0IG1lbW9yeSBzbG90LiAg Ki8KLQkJICB8fCBpcmFfZXF1aXZfbm9fbHZhbHVlX3AgKHJlZ25vKSkpCisJ CSAgfHwgaXJhX2VxdWl2X25vX2x2YWx1ZV9wIChyZWdubykKKwkJICB8fCAo cGljX29mZnNldF90YWJsZV9ydHggIT0gTlVMTAorCQkgICAgICAmJiAoQUxM T0NOT19SRUdOTyAoYWxsb2NubykKKwkJCSAgPT0gKGludCkgUkVHTk8gKHBp Y19vZmZzZXRfdGFibGVfcnR4KSkpKSkKIAkgICAgY29udGludWU7CiAJICBv cmlnaW5hbF9yZWcgPSBhbGxvY25vX2VtaXRfcmVnIChhbGxvY25vKTsKIAkg IGlmIChwYXJlbnRfYWxsb2NubyA9PSBOVUxMCkluZGV4OiBpcmEuYwo9PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09Ci0tLSBpcmEuYwkocmV2aXNpb24gMjE0NTc2 KQorKysgaXJhLmMJKHdvcmtpbmcgY29weSkKQEAgLTQ4ODcsNyArNDg4Nyw3 IEBACiAgIEZPUl9CQl9JTlNOUyAoZmlyc3QsIGluc24pCiAgICAgewogICAg ICAgcnR4IGRlc3QgPSBpbnRlcmVzdGluZ19kZXN0X2Zvcl9zaHByZXAgKGlu c24sIGNhbGxfZG9tKTsKLSAgICAgIGlmICghZGVzdCkKKyAgICAgIGlmICgh ZGVzdCB8fCBkZXN0ID09IHBpY19vZmZzZXRfdGFibGVfcnR4KQogCWNvbnRp bnVlOwogCiAgICAgICBydHggbmV3cmVnID0gTlVMTF9SVFg7CkluZGV4OiBs cmEtYXNzaWducy5jCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIGxyYS1h c3NpZ25zLmMJKHJldmlzaW9uIDIxNDU3NikKKysrIGxyYS1hc3NpZ25zLmMJ KHdvcmtpbmcgY29weSkKQEAgLTg3OSwxMSArODc5LDEzIEBACiAJfQogICAg ICAgLyogU3BpbGwgcHNldWRvcy4JICovCiAgICAgICBFWEVDVVRFX0lGX1NF VF9JTl9CSVRNQVAgKCZzcGlsbF9wc2V1ZG9zX2JpdG1hcCwgMCwgc3BpbGxf cmVnbm8sIGJpKQotCWlmICgoaW50KSBzcGlsbF9yZWdubyA+PSBscmFfY29u c3RyYWludF9uZXdfcmVnbm9fc3RhcnQKLQkgICAgJiYgISBiaXRtYXBfYml0 X3AgKCZscmFfaW5oZXJpdGFuY2VfcHNldWRvcywgc3BpbGxfcmVnbm8pCi0J ICAgICYmICEgYml0bWFwX2JpdF9wICgmbHJhX3NwbGl0X3JlZ3MsIHNwaWxs X3JlZ25vKQotCSAgICAmJiAhIGJpdG1hcF9iaXRfcCAoJmxyYV9zdWJyZWdf cmVsb2FkX3BzZXVkb3MsIHNwaWxsX3JlZ25vKQotCSAgICAmJiAhIGJpdG1h cF9iaXRfcCAoJmxyYV9vcHRpb25hbF9yZWxvYWRfcHNldWRvcywgc3BpbGxf cmVnbm8pKQorCWlmICgocGljX29mZnNldF90YWJsZV9ydHggIT0gTlVMTAor CSAgICAgJiYgc3BpbGxfcmVnbm8gPT0gUkVHTk8gKHBpY19vZmZzZXRfdGFi bGVfcnR4KSkKKwkgICAgfHwgKChpbnQpIHNwaWxsX3JlZ25vID49IGxyYV9j b25zdHJhaW50X25ld19yZWdub19zdGFydAorCQkmJiAhIGJpdG1hcF9iaXRf cCAoJmxyYV9pbmhlcml0YW5jZV9wc2V1ZG9zLCBzcGlsbF9yZWdubykKKwkJ JiYgISBiaXRtYXBfYml0X3AgKCZscmFfc3BsaXRfcmVncywgc3BpbGxfcmVn bm8pCisJCSYmICEgYml0bWFwX2JpdF9wICgmbHJhX3N1YnJlZ19yZWxvYWRf cHNldWRvcywgc3BpbGxfcmVnbm8pCisJCSYmICEgYml0bWFwX2JpdF9wICgm bHJhX29wdGlvbmFsX3JlbG9hZF9wc2V1ZG9zLCBzcGlsbF9yZWdubykpKQog CSAgZ290byBmYWlsOwogICAgICAgaW5zbl9wc2V1ZG9zX251bSA9IDA7CiAg ICAgICBpZiAobHJhX2R1bXBfZmlsZSAhPSBOVUxMKQpAQCAtMTA1Myw5ICsx MDU1LDE1IEBACiAgICAgICByZXR1cm47CiAgICAgfQogICBmb3IgKG4gPSAw LCBpID0gRklSU1RfUFNFVURPX1JFR0lTVEVSOyBpIDwgbWF4X3JlZ25vOyBp KyspCi0gICAgaWYgKHJlZ19yZW51bWJlcltpXSA+PSAwICYmIGxyYV9yZWdf aW5mb1tpXS5ucmVmcyA+IDApCisgICAgaWYgKChwaWNfb2Zmc2V0X3RhYmxl X3J0eCA9PSBOVUxMX1JUWAorCSB8fCBpICE9IChpbnQpIFJFR05PIChwaWNf b2Zmc2V0X3RhYmxlX3J0eCkpCisJJiYgcmVnX3JlbnVtYmVyW2ldID49IDAg JiYgbHJhX3JlZ19pbmZvW2ldLm5yZWZzID4gMCkKICAgICAgIHNvcnRlZF9w c2V1ZG9zW24rK10gPSBpOwogICBxc29ydCAoc29ydGVkX3BzZXVkb3MsIG4s IHNpemVvZiAoaW50KSwgcHNldWRvX2NvbXBhcmVfZnVuYyk7CisgIGlmIChw aWNfb2Zmc2V0X3RhYmxlX3J0eCAhPSBOVUxMX1JUWAorICAgICAgJiYgKHJl Z25vID0gUkVHTk8gKHBpY19vZmZzZXRfdGFibGVfcnR4KSkgPj0gRklSU1Rf UFNFVURPX1JFR0lTVEVSCisgICAgICAmJiByZWdfcmVudW1iZXJbcmVnbm9d ID49IDAgJiYgbHJhX3JlZ19pbmZvW3JlZ25vXS5ucmVmcyA+IDApCisgICAg c29ydGVkX3BzZXVkb3NbbisrXSA9IHJlZ25vOwogICBmb3IgKGkgPSBuIC0g MTsgaSA+PSAwOyBpLS0pCiAgICAgewogICAgICAgcmVnbm8gPSBzb3J0ZWRf cHNldWRvc1tpXTsKQEAgLTEzNjAsNiArMTM2OCw4IEBACiAJfQogICAgICAg RVhFQ1VURV9JRl9TRVRfSU5fU1BBUlNFU0VUIChsaXZlX3JhbmdlX2hhcmRf cmVnX3BzZXVkb3MsIGNvbmZsaWN0X3JlZ25vKQogCXsKKwkgIGdjY19hc3Nl cnQgKHBpY19vZmZzZXRfdGFibGVfcnR4ID09IE5VTEwKKwkJICAgICAgfHwg Y29uZmxpY3RfcmVnbm8gIT0gUkVHTk8gKHBpY19vZmZzZXRfdGFibGVfcnR4 KSk7CiAJICBpZiAoKGludCkgY29uZmxpY3RfcmVnbm8gPj0gbHJhX2NvbnN0 cmFpbnRfbmV3X3JlZ25vX3N0YXJ0KQogCSAgICBzb3J0ZWRfcHNldWRvc1tu ZmFpbHMrK10gPSBjb25mbGljdF9yZWdubzsKIAkgIGlmIChscmFfZHVtcF9m aWxlICE9IE5VTEwpCkluZGV4OiBscmEtY29uc3RyYWludHMuYwo9PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09Ci0tLSBscmEtY29uc3RyYWludHMuYwkocmV2aXNp b24gMjE0NTc2KQorKysgbHJhLWNvbnN0cmFpbnRzLmMJKHdvcmtpbmcgY29w eSkKQEAgLTQwMjEsNyArNDAyMSwxMSBAQAogICAgICAgKCJNYXhpbXVtIG51 bWJlciBvZiBMUkEgY29uc3RyYWludCBwYXNzZXMgaXMgYWNoaWV2ZWQgKCVk KVxuIiwKICAgICAgICBMUkFfTUFYX0NPTlNUUkFJTlRfSVRFUkFUSU9OX05V TUJFUik7CiAgIGNoYW5nZWRfcCA9IGZhbHNlOwotICBscmFfcmlza3lfdHJh bnNmb3JtYXRpb25zX3AgPSBmYWxzZTsKKyAgaWYgKHBpY19vZmZzZXRfdGFi bGVfcnR4CisgICAgICAmJiBSRUdOTyAocGljX29mZnNldF90YWJsZV9ydHgp ID49IEZJUlNUX1BTRVVET19SRUdJU1RFUikKKyAgICBscmFfcmlza3lfdHJh bnNmb3JtYXRpb25zX3AgPSB0cnVlOworICBlbHNlCisgICAgbHJhX3Jpc2t5 X3RyYW5zZm9ybWF0aW9uc19wID0gZmFsc2U7CiAgIG5ld19pbnNuX3VpZF9z dGFydCA9IGdldF9tYXhfdWlkICgpOwogICBuZXdfcmVnbm9fc3RhcnQgPSBm aXJzdF9wID8gbHJhX2NvbnN0cmFpbnRfbmV3X3JlZ25vX3N0YXJ0IDogbWF4 X3JlZ19udW0gKCk7CiAgIC8qIE1hcmsgdXNlZCBoYXJkIHJlZ3MgZm9yIHRh cmdldCBzdGFjayBzaXplIGNhbHVsYXRpb25zLiAgKi8K --------------030306050609070806040102--