Re: Fix postreload_combine miscompilation (PR 69941)

2016-03-07 Thread Jeff Law
On 03/07/2016 05:37 AM, Bernd Schmidt wrote: On 03/05/2016 06:27 AM, Jeff Law wrote: PR rtl-optimization/69941 * postreload.c (reload_combine_recognize_pattern): Ensure all uses of the reg share its mode. testsuite/ PR rtl-optimization/69941 * gcc.dg/torture/pr69941.c: New t

Re: Fix postreload_combine miscompilation (PR 69941)

2016-03-07 Thread Bernd Schmidt
On 03/05/2016 06:27 AM, Jeff Law wrote: PR rtl-optimization/69941 * postreload.c (reload_combine_recognize_pattern): Ensure all uses of the reg share its mode. testsuite/ PR rtl-optimization/69941 * gcc.dg/torture/pr69941.c: New test. OK. For branches as well? Bernd

Re: Fix postreload_combine miscompilation (PR 69941)

2016-03-04 Thread Jeff Law
On 03/04/2016 04:57 PM, Bernd Schmidt wrote: This is a transformation which looks for (set reg1 const) (set reg2 (plus reg2 reg1)) and tries to replace all further uses of reg2 with (plus reg2 reg1). The problem here is that one of the uses is in a narrower mode, inside a zero_extend, so we pro

Fix postreload_combine miscompilation (PR 69941)

2016-03-04 Thread Bernd Schmidt
This is a transformation which looks for (set reg1 const) (set reg2 (plus reg2 reg1)) and tries to replace all further uses of reg2 with (plus reg2 reg1). The problem here is that one of the uses is in a narrower mode, inside a zero_extend, so we produce wrong results. The fix seems rather s