2014-08-28 22:58 GMT+04:00 Uros Bizjak <ubiz...@gmail.com>:
> On Fri, Aug 22, 2014 at 2:21 PM, Ilya Enkovich <enkovich....@gmail.com> wrote:
>
>> On Cauldron 2014 we had a couple of talks about relaxation of ebx usage in 
>> 32bit PIC mode.  It was decided that the best approach would be to not fix 
>> ebx register, use speudo register for GOT base address and let allocator do 
>> the rest.  This should be similar to how clang and icc work with GOT base 
>> address.  I've been working for some time on such patch and now want to 
>> share my results.
>
>>  (define_insn "*pushtf"
>>    [(set (match_operand:TF 0 "push_operand" "=<,<")
>> -       (match_operand:TF 1 "general_no_elim_operand" "x,*roF"))]
>> +       (match_operand:TF 1 "nonimmediate_no_elim_operand" "x,*roF"))]
>
> Can you please explain the reason for this change (and a couple of
> similar changes to push patterns) ?

This is a workaround for stability problem with reload.  Immediate
operands cause new usages of pseudo PIC register in reload which leads
to wrong registers allocation.  These changes wouldn't be required
after reload issue if resolved.

Ilya

>
> Uros.

Reply via email to