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
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
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
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
> 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'
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
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");
> +
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
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
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
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
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
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
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 } } }
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
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.
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
17 matches
Mail list logo