Re: [RFA][PATCH][middle-end/53623] Improve extension elimination

2014-01-08 Thread Jeff Law
On 01/08/14 16:13, Jakub Jelinek wrote: Please add a function comment for it (perhaps saying that it is like single_set but never allows more than one SET). Ok with that change. My bad. Thanks for catching it. Attaching the installed patch for reference. Jeff commit 12e467a657653de484178f0d

Re: [RFA][PATCH][middle-end/53623] Improve extension elimination

2014-01-08 Thread Jakub Jelinek
On Wed, Jan 08, 2014 at 04:02:17PM -0700, Jeff Law wrote: > * ree.c (get_sub_rtx): New function, extracted from... > (merge_def_and_ext): Here. > (combine_reaching_defs): Use get_sub_rtx. > --- a/gcc/ree.c > +++ b/gcc/ree.c > @@ -580,27 +580,17 @@ make_defs_and_copies_lists (rtx

Re: [RFA][PATCH][middle-end/53623] Improve extension elimination

2014-01-08 Thread Jeff Law
On 01/08/14 01:14, Eric Botcazou wrote: Committed after private email approval from Jakub. I made one additional trivial change (missing whitespace in a comment). This breaks bootstrap with RTL checking enabled: /home/eric/svn/gcc/libgcc/config/libbid/bid64_noncomp.c:119:1: internal compiler

Re: [RFA][PATCH][middle-end/53623] Improve extension elimination

2014-01-08 Thread Jeff Law
On 01/08/14 01:14, Eric Botcazou wrote: Committed after private email approval from Jakub. I made one additional trivial change (missing whitespace in a comment). This breaks bootstrap with RTL checking enabled: [ ... ] Thanks. I'm on it. jeff

Re: [RFA][PATCH][middle-end/53623] Improve extension elimination

2014-01-08 Thread Eric Botcazou
> Committed after private email approval from Jakub. I made one > additional trivial change (missing whitespace in a comment). This breaks bootstrap with RTL checking enabled: /home/eric/svn/gcc/libgcc/config/libbid/bid64_noncomp.c:119:1: internal compiler error: RTL check: expected code 'set'

Re: [RFA][PATCH][middle-end/53623] Improve extension elimination

2014-01-07 Thread Jeff Law
On 12/20/13 13:44, Jeff Law wrote: On 12/20/13 10:25, Jakub Jelinek wrote: Yes. So my suggestion actually was not correct for that: && !reg_overlap_mentioned_p (dest, XEXP (src, 0)) because the first extension above has r1:SI and r2:DI which don't overlap, only r1:DI and r2:DI overlap. So i

Re: [RFA][PATCH][middle-end/53623] Improve extension elimination

2013-12-20 Thread Jakub Jelinek
On Fri, Dec 20, 2013 at 01:44:06PM -0700, Jeff Law wrote: > @@ -342,7 +354,8 @@ combine_set_extension (ext_cand *cand, rtx curr_insn, rtx > *orig_set) >if (dump_file) > { >fprintf (dump_file, > -"Tentatively merged extension with definition:\n"); > +

Re: [RFA][PATCH][middle-end/53623] Improve extension elimination

2013-12-20 Thread Jeff Law
On 12/20/13 10:25, Jakub Jelinek wrote: Yes. So my suggestion actually was not correct for that: && !reg_overlap_mentioned_p (dest, XEXP (src, 0)) because the first extension above has r1:SI and r2:DI which don't overlap, only r1:DI and r2:DI overlap. So it probably should be checked in comb

Re: [RFA][PATCH][middle-end/53623] Improve extension elimination

2013-12-20 Thread Jeff Law
On 12/20/13 10:25, Jakub Jelinek wrote: So it probably should be checked in combine_reaching_defs instead where you have already both the registers in the right modes available and can call reg_overlap_mentioned_p on them directly. One argument would be SET_DEST (def_insn) and one SET_DEST (ca

Re: [RFA][PATCH][middle-end/53623] Improve extension elimination

2013-12-20 Thread Jakub Jelinek
On Fri, Dec 20, 2013 at 10:17:10AM -0700, Jeff Law wrote: > ISTM if we're presented with something like that (and I don't think > there's anything in RA which explicitly disallows such code), then > what we have to evaluate is whether or not the transformation > preserves the semantics. > > So, in

Re: [RFA][PATCH][middle-end/53623] Improve extension elimination

2013-12-20 Thread Jeff Law
On 12/20/13 09:45, Jakub Jelinek wrote: On Fri, Dec 20, 2013 at 09:26:10AM -0700, Jeff Law wrote: Thanks for working on this, the only thing I'd worry about are HARD_REGNO_NREGS > 1 registers if the two hard regs might overlap. The reg_set_between_p and reg_used_between_p calls when you dig dow

Re: [RFA][PATCH][middle-end/53623] Improve extension elimination

2013-12-20 Thread Jakub Jelinek
On Fri, Dec 20, 2013 at 09:26:10AM -0700, Jeff Law wrote: > >Thanks for working on this, the only thing I'd worry about are > >HARD_REGNO_NREGS > 1 registers if the two hard regs might overlap. > The reg_set_between_p and reg_used_between_p calls when you dig down > into them eventually use reg_ove

Re: [RFA][PATCH][middle-end/53623] Improve extension elimination

2013-12-20 Thread Jeff Law
On 12/20/13 01:24, Jakub Jelinek wrote: Thanks for working on this, the only thing I'd worry about are HARD_REGNO_NREGS > 1 registers if the two hard regs might overlap. The reg_set_between_p and reg_used_between_p calls when you dig down into them eventually use reg_overlap_mentioned_p which s

Re: [RFA][PATCH][middle-end/53623] Improve extension elimination

2013-12-20 Thread Jeff Law
On 12/20/13 01:17, Uros Bizjak wrote: Hello! index 000..5375b61 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/pr53623.c @@ -0,0 +1,25 @@ +/* { dg-do compile { target { x86_64-*-* } } } */ +/* { dg-options "-O2 -fdump-rtl-ree" } */ Please use: /* { dg-do compile { target { ! ia32 } } }

Re: [RFA][PATCH][middle-end/53623] Improve extension elimination

2013-12-20 Thread Jakub Jelinek
On Thu, Dec 19, 2013 at 09:57:36PM -0700, Jeff Law wrote: > * ree.c (combine_set_extension): Handle case where source > and destination registers in an extension insn are different. > (combine_reaching_defs): Allow source and destination > registers in extension to be differ

Re: [RFA][PATCH][middle-end/53623] Improve extension elimination

2013-12-20 Thread Uros Bizjak
Hello! index 000..5375b61 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/pr53623.c @@ -0,0 +1,25 @@ +/* { dg-do compile { target { x86_64-*-* } } } */ +/* { dg-options "-O2 -fdump-rtl-ree" } */ Please use: /* { dg-do compile { target { ! ia32 } } } */ Uros.

[RFA][PATCH][middle-end/53623] Improve extension elimination

2013-12-19 Thread Jeff Law
PR53623 is a case where transformations by the tree-ssa optimizers are inhibiting the RTL optimizers. As noted in c#5 we have something like this: (set (reg:HI %ax) (mem:HI (whatever))) (set (reg:DI %rdx) (sign_extend:DI (reg:HI %ax)) (set (reg:DI %rax) (zero_extend:DI (reg:QI %al)) Th