Patch 10/9: track subwords of DImode allocnos

Jeff Law law@redhat.com
Wed Jul 14 19:06:00 GMT 2010


On 07/13/10 15:09, Bernd Schmidt wrote:
> On 07/13/2010 10:43 PM, Jeff Law wrote:
>
>    
>> Overall this was relatively straightforward.  You touched on most of the
>> non-obvious stuff above.   Answers to most of my questions became clear
>> as wrote out the questions.  Here's all that's left:
>>
>>
>> In assign_hard_reg, you moved this hunk:
>>
>> +          if (allocno_coalesced_p)
>> +            {
>> +              if (bitmap_bit_p (processed_coalesced_allocno_bitmap,
>> +                    ALLOCNO_NUM (conflict_allocno)))
>> +            continue;
>> +              bitmap_set_bit (processed_coalesced_allocno_bitmap,
>> +                      ALLOCNO_NUM (conflict_allocno));
>> +            }
>>
>> Into the ! ALLOCNO_MAY_BE_SPILLED_P if-clause rather than leaving it to
>> execute unconditionally for each conflict allocno.   I don't see the
>> reasoning behind this change.
>>      
> We've found a conflicting object, and looked up the corresponding
> allocno.  There are two cases here, either the conflicting allocno has a
> hard register already, or it doesn't.  In the first case, we need to
> track the conflicts by object, which means we can't ignore the conflict
> if we've seen the allocno previously - we might have seen a different
> subword.  In the second case, we're just doing some costs bookkeeping,
> and here it's OK to skip the allocno if we've seen it before.
>
> Does that make sense?
>    
Yes.  Makes perfect sense now.  I might have just been burned out when I 
stumbled across that somewhat odd hunk.

jeff



More information about the Gcc-patches mailing list