Thanks. I will change

> +         if (a != operand_a
> +             && (LRA_SPLIT_FREQ_RATIO * freq >= a->freq))

to

> +         if (a != operand_a
> +             && (!ira_use_lra_p || LRA_SPLIT_FREQ_RATIO * freq >= a->freq))

Regards,
Wei.

On Mon, Apr 28, 2014 at 12:57 AM, Steven Bosscher <stevenb....@gmail.com> wrote:
> On Sat, Apr 26, 2014 at 5:35 AM, Wei Mi wrote:
>> Index: ira-lives.c
>> ===================================================================
>> --- ira-lives.c (revision 209253)
>> +++ ira-lives.c (working copy)
>> @@ -1025,7 +1025,11 @@ process_single_reg_class_operands (bool
>>          {
>>           ira_object_t obj = ira_object_id_map[px];
>>           a = OBJECT_ALLOCNO (obj);
>> -         if (a != operand_a)
>> +         /* If a is much hotter in some other region, don't add reg class
>> +            cl into its conflict hardreg set. Let lra_split to do splitting
>> +            here for operand_a.  */
>> +         if (a != operand_a
>> +             && (LRA_SPLIT_FREQ_RATIO * freq >= a->freq))
>>             {
>>               /* We could increase costs of A instead of making it
>>                  conflicting with the hard register.  But it works worse
>
> AFAICT this path is not LRA specific, so your patch may break ports
> still relying on reload.
>
> Ciao!
> Steven

Reply via email to