Re: [PATCH] Fix combine's simplify_shift_const_1 (PR rtl-optimization/70222)

2016-03-15 Thread Jakub Jelinek
On Tue, Mar 15, 2016 at 09:50:44AM -0500, Segher Boessenkool wrote: > On Tue, Mar 15, 2016 at 02:18:33PM +0100, Jakub Jelinek wrote: > > So do you prefer this instead? > > > > 2016-03-15 Jakub Jelinek > > > > PR rtl-optimization/70222 > > * combine.c (simplify_shift_const_1): For A >>

Re: [PATCH] Fix combine's simplify_shift_const_1 (PR rtl-optimization/70222)

2016-03-15 Thread Segher Boessenkool
On Tue, Mar 15, 2016 at 02:18:33PM +0100, Jakub Jelinek wrote: > So do you prefer this instead? > > 2016-03-15 Jakub Jelinek > > PR rtl-optimization/70222 > * combine.c (simplify_shift_const_1): For A >> B >> C LSHIFTRT > optimization if mode is different from result_mode, qu

Re: [PATCH] Fix combine's simplify_shift_const_1 (PR rtl-optimization/70222)

2016-03-15 Thread Jakub Jelinek
On Tue, Mar 15, 2016 at 01:08:50PM +0100, Bernd Schmidt wrote: > This looks really specialized, and I'd be worrying about whether it really > is the right condition. Where exactly was the constant shifted by 31 and > count set to 0? Must be here, right? Yes, it is that spot. > >/* If we have

Re: [PATCH] Fix combine's simplify_shift_const_1 (PR rtl-optimization/70222)

2016-03-15 Thread Bernd Schmidt
On 03/15/2016 12:14 PM, Jakub Jelinek wrote: - if (orig_code == LSHIFTRT && result_mode != shift_mode) + turn off all the bits that the shift would have turned off. + Similarly do this if we've optimized varop so that we don't perform + any shift. */ + if (orig_code == LSHIFTRT +

[PATCH] Fix combine's simplify_shift_const_1 (PR rtl-optimization/70222)

2016-03-15 Thread Jakub Jelinek
Hi! As mentioned in the PR, if we have simplify_shift_const_1 (code=LSHIFTRT, result_mode=SImode, varop=0x7184de70, orig_count=31) where varop is: (subreg:SI (lshiftrt:DI (const_int -1 [0x]) (subreg:QI (reg:SI 100) 0)) 0), we optimize the inner shift (mode == DImode) i