Re: [PATCH] combine: Do not call simplify from inside change_zero_ext (PR78232)

2016-11-10 Thread Segher Boessenkool
Hi all, I now committed this, with changelog PR rtl-optimization/78232 * combine.c (try_combine): Add a big comment about why reusing i2dest is undesirable. (change_zero_ext): Do not call simplify_gen_binary, do the simplifications manually. and the patch

Re: [PATCH] combine: Do not call simplify from inside change_zero_ext (PR78232)

2016-11-09 Thread Segher Boessenkool
On Wed, Nov 09, 2016 at 10:28:37AM +0100, Eric Botcazou wrote: > > You need more than that, e.g. reg_nonzero_bits_for_combine looks at the > > nonzero_bits field no matter what else. > > Right, this one is sticky, although you can invalidate it globally by means > of > nonzero_sign_valid AFAICS.

Re: [PATCH] combine: Do not call simplify from inside change_zero_ext (PR78232)

2016-11-09 Thread Eric Botcazou
> You need more than that, e.g. reg_nonzero_bits_for_combine looks at the > nonzero_bits field no matter what else. Right, this one is sticky, although you can invalidate it globally by means of nonzero_sign_valid AFAICS. > I didn't have the heart to look into this testcase breakage; the > save/

Re: [PATCH] combine: Do not call simplify from inside change_zero_ext (PR78232)

2016-11-09 Thread Segher Boessenkool
On Wed, Nov 09, 2016 at 09:30:59AM +0100, Eric Botcazou wrote: > > This can also happen if a splitter in the MD uses nonzero_bits (for > > example). I tried to make the splitting code in combine save and restore > > the i2dest reg_stat info, but that causes one of the acats tests to fail. > > Cou

Re: [PATCH] combine: Do not call simplify from inside change_zero_ext (PR78232)

2016-11-09 Thread Eric Botcazou
> This can also happen if a splitter in the MD uses nonzero_bits (for > example). I tried to make the splitting code in combine save and restore > the i2dest reg_stat info, but that causes one of the acats tests to fail. Could you elaborate? Did you try to temporarily invalidate it, e.g. by mean

[PATCH] combine: Do not call simplify from inside change_zero_ext (PR78232)

2016-11-08 Thread Segher Boessenkool
When combine splits a three-insn combination into two instructions it can reuse i2dest for the temporary result of the first new instruction. However all information it has in reg_stat about that register will be stale. This results in the simplify_gen_binary calls in change_zero_ext using out-of-