Re: Enable EBX for x86 in 32bits PIC code

2014-09-29 Thread Jakub Jelinek
On Wed, Sep 24, 2014 at 03:20:44PM -0600, Jeff Law wrote: > On 09/24/14 14:32, Ilya Enkovich wrote: > >2014-09-24 19:27 GMT+04:00 Jeff Law : > >>On 09/24/14 00:56, Ilya Enkovich wrote: > > >>> > >>>After register allocation we have no idea where GOT address is and > >>>therefore delegitimize_addre

Re: Enable EBX for x86 in 32bits PIC code

2014-09-24 Thread Jeff Law
On 09/24/14 14:32, Ilya Enkovich wrote: 2014-09-24 19:27 GMT+04:00 Jeff Law : On 09/24/14 00:56, Ilya Enkovich wrote: After register allocation we have no idea where GOT address is and therefore delegitimize_address target hook becomes less efficient and cannot remove UNSPECs. That's what I

Re: Enable EBX for x86 in 32bits PIC code

2014-09-24 Thread Ilya Enkovich
2014-09-24 19:27 GMT+04:00 Jeff Law : > On 09/24/14 00:56, Ilya Enkovich wrote: >> >> 2014-09-23 20:10 GMT+04:00 Jeff Law : >>> >>> On 09/23/14 10:03, Jakub Jelinek wrote: On Tue, Sep 23, 2014 at 10:00:00AM -0600, Jeff Law wrote: > > > On 09/23/14 08:34, Jakub Jelinek wro

Re: Enable EBX for x86 in 32bits PIC code

2014-09-24 Thread Jeff Law
On 09/24/14 00:56, Ilya Enkovich wrote: 2014-09-23 20:10 GMT+04:00 Jeff Law : On 09/23/14 10:03, Jakub Jelinek wrote: On Tue, Sep 23, 2014 at 10:00:00AM -0600, Jeff Law wrote: On 09/23/14 08:34, Jakub Jelinek wrote: On Tue, Sep 23, 2014 at 05:54:37PM +0400, Ilya Enkovich wrote: use fixed

Re: Enable EBX for x86 in 32bits PIC code

2014-09-23 Thread Ilya Enkovich
2014-09-23 20:10 GMT+04:00 Jeff Law : > On 09/23/14 10:03, Jakub Jelinek wrote: >> >> On Tue, Sep 23, 2014 at 10:00:00AM -0600, Jeff Law wrote: >>> >>> On 09/23/14 08:34, Jakub Jelinek wrote: On Tue, Sep 23, 2014 at 05:54:37PM +0400, Ilya Enkovich wrote: > > use fixed EBX at least

Re: Enable EBX for x86 in 32bits PIC code

2014-09-23 Thread Jeff Law
On 09/23/14 10:03, Jakub Jelinek wrote: On Tue, Sep 23, 2014 at 10:00:00AM -0600, Jeff Law wrote: On 09/23/14 08:34, Jakub Jelinek wrote: On Tue, Sep 23, 2014 at 05:54:37PM +0400, Ilya Enkovich wrote: use fixed EBX at least until we make sure pseudo PIC doesn't harm debug info generation. If

Re: Enable EBX for x86 in 32bits PIC code

2014-09-23 Thread Jakub Jelinek
On Tue, Sep 23, 2014 at 10:00:00AM -0600, Jeff Law wrote: > On 09/23/14 08:34, Jakub Jelinek wrote: > >On Tue, Sep 23, 2014 at 05:54:37PM +0400, Ilya Enkovich wrote: > >>use fixed EBX at least until we make sure pseudo PIC doesn't harm debug > >>info generation. If we have such option then gcc.tar

Re: Enable EBX for x86 in 32bits PIC code

2014-09-23 Thread Jeff Law
On 09/23/14 08:34, Jakub Jelinek wrote: On Tue, Sep 23, 2014 at 05:54:37PM +0400, Ilya Enkovich wrote: use fixed EBX at least until we make sure pseudo PIC doesn't harm debug info generation. If we have such option then gcc.target/i386/pic-1.c and For debug info, it seems you are already hand

Re: Enable EBX for x86 in 32bits PIC code

2014-09-23 Thread Petr Machata
Jakub Jelinek writes: > look at the sizes of .debug_info/.debug_loc sections with/without the > patch, or use the locstat utility from elfutils Not actually part of elfutils, but available either here: https://github.com/pmachata/dwlocstat ... or packaged in Fedora. Thanks, PM

Re: Enable EBX for x86 in 32bits PIC code

2014-09-23 Thread Jeff Law
On 09/23/14 08:23, Uros Bizjak wrote: On Tue, Sep 23, 2014 at 3:54 PM, Ilya Enkovich wrote: Here is a patch which combines results of my and Vladimir's work on EBX enabling. It works OK for SPEC2000 and SPEC2006 on -Ofast + LTO. It passes bootstrap but there are few new failures in make ch

Re: Enable EBX for x86 in 32bits PIC code

2014-09-23 Thread Jakub Jelinek
On Tue, Sep 23, 2014 at 05:54:37PM +0400, Ilya Enkovich wrote: > use fixed EBX at least until we make sure pseudo PIC doesn't harm debug > info generation. If we have such option then gcc.target/i386/pic-1.c and For debug info, it seems you are already handling this in delegitimize_address target

Re: Enable EBX for x86 in 32bits PIC code

2014-09-23 Thread Uros Bizjak
On Tue, Sep 23, 2014 at 3:54 PM, Ilya Enkovich wrote: > Here is a patch which combines results of my and Vladimir's work on EBX > enabling. > > It works OK for SPEC2000 and SPEC2006 on -Ofast + LTO. It passes bootstrap > but there are few new failures in make check. > > gcc.target/i386/pic-1.c

Re: Enable EBX for x86 in 32bits PIC code

2014-09-23 Thread Ilya Enkovich
On 03 Sep 16:19, Vladimir Makarov wrote: > 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 stil

Re: Enable EBX for x86 in 32bits PIC code

2014-09-11 Thread Jeff Law
On 09/09/14 10:43, Vladimir Makarov wrote: 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 an

Re: Enable EBX for x86 in 32bits PIC code

2014-09-09 Thread Vladimir Makarov
; Cc: g...@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 mod

Re: Enable EBX for x86 in 32bits PIC code

2014-09-03 Thread Vladimir Makarov
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 or

Re: Enable EBX for x86 in 32bits PIC code

2014-09-02 Thread Vladimir Makarov
On 08/29/2014 02: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: > > Initializa

Re: Enable EBX for x86 in 32bits PIC code

2014-08-29 Thread Jeff Law
On 08/28/14 02:37, Ilya Enkovich wrote: 2014-08-28 1:39 GMT+04:00 Jeff Law : On 08/26/14 15:42, Ilya Enkovich wrote: diff --git a/gcc/calls.c b/gcc/calls.c index 4285ec1..85dae6b 100644 --- a/gcc/calls.c +++ b/gcc/calls.c @@ -1122,6 +1122,14 @@ initialize_argument_information (int num_actuals

Re: Enable EBX for x86 in 32bits PIC code

2014-08-29 Thread Jeff Law
On 08/28/14 07:01, Uros Bizjak wrote: On Fri, Aug 22, 2014 at 2:21 PM, Ilya Enkovich wrote: Hi, On Cauldron 2014 we had a couple of talks about relaxation of ebx usage in 32bit PIC mode. It was decided that the best approach would be to not fix ebx register, use speudo register for GOT base

Re: Enable EBX for x86 in 32bits PIC code

2014-08-29 Thread Jeff Law
On 08/28/14 12:58, Uros Bizjak wrote: On Fri, Aug 22, 2014 at 2:21 PM, Ilya Enkovich wrote: On Cauldron 2014 we had a couple of talks about relaxation of ebx usage in 32bit PIC mode. It was decided that the best approach would be to not fix ebx register, use speudo register for GOT base add

Re: Enable EBX for x86 in 32bits PIC code

2014-08-28 Thread Ilya Enkovich
2014-08-28 22:58 GMT+04:00 Uros Bizjak : > On Fri, Aug 22, 2014 at 2:21 PM, Ilya Enkovich wrote: > >> On Cauldron 2014 we had a couple of talks about relaxation of ebx usage in >> 32bit PIC mode. It was decided that the best approach would be to not fix >> ebx register, use speudo register for

Re: Enable EBX for x86 in 32bits PIC code

2014-08-28 Thread Ilya Enkovich
2014-08-28 12:28 GMT+04:00 Ilya Enkovich : > 2014-08-28 0:19 GMT+04:00 Vladimir Makarov : >> On 2014-08-26 5:42 PM, Ilya Enkovich wrote: >>> >>> Hi, >>> >>> Here is a patch I tried. I apply it over revision 214215. Unfortunately >>> I do not have a small reproducer but the problem can be easily r

Re: Enable EBX for x86 in 32bits PIC code

2014-08-28 Thread Uros Bizjak
On Fri, Aug 22, 2014 at 2:21 PM, Ilya Enkovich wrote: > On Cauldron 2014 we had a couple of talks about relaxation of ebx usage in > 32bit PIC mode. It was decided that the best approach would be to not fix > ebx register, use speudo register for GOT base address and let allocator do > the re

Re: Enable EBX for x86 in 32bits PIC code

2014-08-28 Thread Florian Weimer
On 08/28/2014 03:01 PM, Uros Bizjak wrote: I'd like to avoid X86_TUNE_RELAX_PIC_REG and always treat EBX as an allocatable register. This way, we can avoid all mess with implicit xchgs in atomic_compare_and_swap_doubleword. Also, having allocatable EBX would allow us to introduce __builtin_cpuid

Re: Enable EBX for x86 in 32bits PIC code

2014-08-28 Thread Uros Bizjak
On Thu, Aug 28, 2014 at 3:29 PM, Ilya Enkovich wrote: >>> diff --git a/gcc/calls.c b/gcc/calls.c >>> index 4285ec1..85dae6b 100644 >>> --- a/gcc/calls.c >>> +++ b/gcc/calls.c >>> @@ -1122,6 +1122,14 @@ initialize_argument_information (int num_actuals >>> ATTRIBUTE_UNUSED,

Re: Enable EBX for x86 in 32bits PIC code

2014-08-28 Thread Ilya Enkovich
2014-08-28 17:08 GMT+04:00 Uros Bizjak : > On Thu, Aug 28, 2014 at 2:54 PM, Ilya Enkovich wrote: > >> diff --git a/gcc/calls.c b/gcc/calls.c >> index 4285ec1..85dae6b 100644 >> --- a/gcc/calls.c >> +++ b/gcc/calls.c >> @@ -1122,6 +1122,14 @@ initialize_argument_information (int

Re: Enable EBX for x86 in 32bits PIC code

2014-08-28 Thread Ilya Enkovich
2014-08-28 17:01 GMT+04:00 Uros Bizjak : > On Fri, Aug 22, 2014 at 2:21 PM, Ilya Enkovich wrote: >> Hi, >> >> On Cauldron 2014 we had a couple of talks about relaxation of ebx usage in >> 32bit PIC mode. It was decided that the best approach would be to not fix >> ebx register, use speudo regis

Re: Enable EBX for x86 in 32bits PIC code

2014-08-28 Thread Uros Bizjak
On Thu, Aug 28, 2014 at 2:54 PM, Ilya Enkovich wrote: > diff --git a/gcc/calls.c b/gcc/calls.c > index 4285ec1..85dae6b 100644 > --- a/gcc/calls.c > +++ b/gcc/calls.c > @@ -1122,6 +1122,14 @@ initialize_argument_information (int num_actuals > ATTRIBUTE_UNUSED, >

Re: Enable EBX for x86 in 32bits PIC code

2014-08-28 Thread Uros Bizjak
On Fri, Aug 22, 2014 at 2:21 PM, Ilya Enkovich wrote: > Hi, > > On Cauldron 2014 we had a couple of talks about relaxation of ebx usage in > 32bit PIC mode. It was decided that the best approach would be to not fix > ebx register, use speudo register for GOT base address and let allocator do >

Re: Enable EBX for x86 in 32bits PIC code

2014-08-28 Thread Ilya Enkovich
2014-08-28 16:42 GMT+04:00 Uros Bizjak : > On Thu, Aug 28, 2014 at 10:37 AM, Ilya Enkovich > wrote: >> 2014-08-28 1:39 GMT+04:00 Jeff Law : >>> On 08/26/14 15:42, Ilya Enkovich wrote: diff --git a/gcc/calls.c b/gcc/calls.c index 4285ec1..85dae6b 100644 --- a/gcc/calls.c +

Re: Enable EBX for x86 in 32bits PIC code

2014-08-28 Thread Uros Bizjak
On Thu, Aug 28, 2014 at 10:37 AM, Ilya Enkovich wrote: > 2014-08-28 1:39 GMT+04:00 Jeff Law : >> On 08/26/14 15:42, Ilya Enkovich wrote: >>> >>> diff --git a/gcc/calls.c b/gcc/calls.c >>> index 4285ec1..85dae6b 100644 >>> --- a/gcc/calls.c >>> +++ b/gcc/calls.c >>> @@ -1122,6 +1122,14 @@ initializ

Re: Enable EBX for x86 in 32bits PIC code

2014-08-28 Thread Ilya Enkovich
2014-08-28 1:39 GMT+04:00 Jeff Law : > On 08/26/14 15:42, Ilya Enkovich wrote: >> >> diff --git a/gcc/calls.c b/gcc/calls.c >> index 4285ec1..85dae6b 100644 >> --- a/gcc/calls.c >> +++ b/gcc/calls.c >> @@ -1122,6 +1122,14 @@ initialize_argument_information (int num_actuals >> ATTRIBUTE_UNUSED, >>

Re: Enable EBX for x86 in 32bits PIC code

2014-08-28 Thread Ilya Enkovich
2014-08-28 0:19 GMT+04:00 Vladimir Makarov : > On 2014-08-26 5:42 PM, Ilya Enkovich wrote: >> >> Hi, >> >> Here is a patch I tried. I apply it over revision 214215. Unfortunately >> I do not have a small reproducer but the problem can be easily reproduced on >> SPEC2000 benchmark 175.vpr. The pr

Re: Enable EBX for x86 in 32bits PIC code

2014-08-27 Thread Jeff Law
On 08/26/14 15:42, Ilya Enkovich wrote: diff --git a/gcc/calls.c b/gcc/calls.c index 4285ec1..85dae6b 100644 --- a/gcc/calls.c +++ b/gcc/calls.c @@ -1122,6 +1122,14 @@ initialize_argument_information (int num_actuals ATTRIBUTE_UNUSED, call_expr_arg_iterator iter; tree arg; +if (

Re: Enable EBX for x86 in 32bits PIC code

2014-08-27 Thread Vladimir Makarov
On 2014-08-26 5:42 PM, Ilya Enkovich wrote: Hi, Here is a patch I tried. I apply it over revision 214215. Unfortunately I do not have a small reproducer but the problem can be easily reproduced on SPEC2000 benchmark 175.vpr. The problem is in read_arch.c:701 where float value is compared w

Re: Enable EBX for x86 in 32bits PIC code

2014-08-26 Thread Ilya Enkovich
On 26 Aug 11:25, Vladimir Makarov wrote: > On 08/26/2014 04:57 AM, Ilya Enkovich wrote: > > I've looked into one of fails. There is still a problem with > > allocation in reload. Here is a piece of code which uses float > > constant: > > > > (insn 1199 1198 1200 96 (set (reg:SI 3 bx) > > (

Re: Enable EBX for x86 in 32bits PIC code

2014-08-26 Thread Vladimir Makarov
On 08/26/2014 04:57 AM, Ilya Enkovich wrote: > 2014-08-26 11:49 GMT+04:00 Ilya Enkovich : >> 2014-08-25 19:08 GMT+04:00 Vladimir Makarov : >>> On 2014-08-22 8:21 AM, Ilya Enkovich wrote: Hi, On Cauldron 2014 we had a couple of talks about relaxation of ebx usage in 32bit PIC mod

Re: Enable EBX for x86 in 32bits PIC code

2014-08-26 Thread Ilya Enkovich
2014-08-26 11:49 GMT+04:00 Ilya Enkovich : > 2014-08-25 19:08 GMT+04:00 Vladimir Makarov : >> On 2014-08-22 8:21 AM, Ilya Enkovich wrote: >>> >>> Hi, >>> >>> On Cauldron 2014 we had a couple of talks about relaxation of ebx usage in >>> 32bit PIC mode. It was decided that the best approach would b

Re: Enable EBX for x86 in 32bits PIC code

2014-08-26 Thread Ilya Enkovich
2014-08-25 19:08 GMT+04:00 Vladimir Makarov : > On 2014-08-22 8:21 AM, Ilya Enkovich wrote: >> >> Hi, >> >> On Cauldron 2014 we had a couple of talks about relaxation of ebx usage in >> 32bit PIC mode. It was decided that the best approach would be to not fix >> ebx register, use speudo register f

Re: Enable EBX for x86 in 32bits PIC code

2014-08-25 Thread Jeff Law
On 08/22/14 06:21, Ilya Enkovich wrote: Such approach worked well on small tests but trying to run some benchmarks we faced a problem with reload of address constants. The problem is that when we try to rematerialize address constant or some constant memory reference, we have to use pic_offset_

Re: Enable EBX for x86 in 32bits PIC code

2014-08-25 Thread Vladimir Makarov
On 2014-08-22 8:21 AM, Ilya Enkovich wrote: Hi, On Cauldron 2014 we had a couple of talks about relaxation of ebx usage in 32bit PIC mode. It was decided that the best approach would be to not fix ebx register, use speudo register for GOT base address and let allocator do the rest. This sho

Re: Enable EBX for x86 in 32bits PIC code

2014-08-25 Thread Ilya Enkovich
2014-08-25 15:24 GMT+04:00 Hans-Peter Nilsson : > On Mon, 25 Aug 2014, Ilya Enkovich wrote: >> 2014-08-23 5:47 GMT+04:00 Hans-Peter Nilsson : >> > ...did you send the right version of the patch? >> > This one uses the RTX-returning hook only in boolean tests, >> > unless I misread. > > (I did, but

Re: Enable EBX for x86 in 32bits PIC code

2014-08-25 Thread Hans-Peter Nilsson
On Mon, 25 Aug 2014, Ilya Enkovich wrote: > 2014-08-23 5:47 GMT+04:00 Hans-Peter Nilsson : > > ...did you send the right version of the patch? > > This one uses the RTX-returning hook only in boolean tests, > > unless I misread. (I did, but not by much.) > NULL returned by hook means we do not ha

Re: Enable EBX for x86 in 32bits PIC code

2014-08-25 Thread Ilya Enkovich
2014-08-23 5:47 GMT+04:00 Hans-Peter Nilsson : > (Dropping gcc@ and people known to subscribe to gcc-patches > from the CC.) > > Sorry for the drive-by review, but... > > On Fri, 22 Aug 2014, Ilya Enkovich wrote: >> Hi, >> >> On Cauldron 2014 we had a couple of talks about relaxation of >> ebx usag

Re: Enable EBX for x86 in 32bits PIC code

2014-08-22 Thread Hans-Peter Nilsson
(Dropping gcc@ and people known to subscribe to gcc-patches from the CC.) Sorry for the drive-by review, but... On Fri, 22 Aug 2014, Ilya Enkovich wrote: > Hi, > > On Cauldron 2014 we had a couple of talks about relaxation of > ebx usage in 32bit PIC mode. It was decided that the best > approach

Re: Enable EBX for x86 in 32bits PIC code

2014-08-22 Thread Ilya Enkovich
Hi, On Cauldron 2014 we had a couple of talks about relaxation of ebx usage in 32bit PIC mode. It was decided that the best approach would be to not fix ebx register, use speudo register for GOT base address and let allocator do the rest. This should be similar to how clang and icc work with