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 functio
> 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 si
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.
>>
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) == ROTA
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
>>
> 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.
> (find_pseudo_
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
regi