Re: [PATCH][lower-subreg] Fix PR87507

2018-11-13 Thread Peter Bergner
On 11/13/18 6:06 PM, Eric Botcazou wrote: >> PR rtl-optimization/87507 >> * lower-subreg.c (operand_for_simple_move_operator): New function. >> (simple_move): Strip simple operators. >> (find_pseudo_copy): Likewise. >> (resolve_operand_for_simple_move_operator): New

Re: [PATCH][lower-subreg] Fix PR87507

2018-11-13 Thread Eric Botcazou
> PR rtl-optimization/87507 > * lower-subreg.c (operand_for_simple_move_operator): New function. > (simple_move): Strip simple operators. > (find_pseudo_copy): Likewise. > (resolve_operand_for_simple_move_operator): New function. > (resolve_simple_move): Strip

Re: [PATCH][lower-subreg] Fix PR87507

2018-11-13 Thread Peter Bergner
On 11/13/18 12:49 PM, Richard Henderson wrote: > On 11/13/18 5:38 PM, Peter Bergner wrote: >> On 11/13/18 2:53 AM, Eric Botcazou wrote: >>> Superfluous semi-colon. Given that the function returns an operand, its >>> name >>> is IMO misleading, so maybe [get_]operand_for_simple_move_operator. >>

Re: [PATCH][lower-subreg] Fix PR87507

2018-11-13 Thread Richard Henderson
On 11/13/18 5:38 PM, Peter Bergner wrote: > On 11/13/18 2:53 AM, Eric Botcazou wrote: >>> +static rtx >>> +simple_move_operator (rtx x) >>> +{ >>> + /* A word sized rotate of a register pair is equivalent to swapping >>> + the registers in the register pair. */ >>> + if (GET_CODE (x) ==

Re: [PATCH][lower-subreg] Fix PR87507

2018-11-13 Thread Peter Bergner
On 11/13/18 2:53 AM, Eric Botcazou wrote: >> +static rtx >> +simple_move_operator (rtx x) >> +{ >> + /* A word sized rotate of a register pair is equivalent to swapping >> + the registers in the register pair. */ >> + if (GET_CODE (x) == ROTATE >> + && GET_MODE (x) == twice_word_mode

Re: [PATCH][lower-subreg] Fix PR87507

2018-11-13 Thread Eric Botcazou
> This has passed bootstrap and regtesting on powerpc64le-linux with no > regressions. Is this ok for mainline? > > Peter > > gcc/ > PR rtl-optimization/87507 > * lower-subreg.c (simple_move_operator): New function. > (simple_move): Strip simple operators. >

[PATCH][lower-subreg] Fix PR87507

2018-11-11 Thread Peter Bergner
PR87507 shows a problem where IRA assigns a non-volatile TImode reg pair to a pseudo when there is a volatile reg pair available to use. This then causes us to emit save/restore code for the non-volatile reg usage. My first attempt at solving this was to adjust the costs used by non-volatile