[PATCH] Distribute inliner's size_time data across entries with similar predicates

Maxim Kuvyrkov maxim@codesourcery.com
Fri Sep 30 03:55:00 GMT 2011


On 25/09/2011, at 11:21 PM, Jan Hubicka wrote:

>> 
>> I wonder why we bother to record so many predicates though.
> 
> Yep, I wonder if it comes from some real testcase?  I didn't see functions that
> reach the limit and still be inlinable very often in practice.

This patch wasn't inspired by a real testcase.  I was studying your new context-sensitive inliner analysis and thought that we can deal with predicate overflow a bit better.

>> 
>>>       if (e->time > MAX_TIME * INLINE_TIME_SCALE)
>>> 
>>> The rationale was that since we are accounting size and time under the entry we also need to make entry's predicate a superset of the predicate we want to account the data under.
>>> 
>>> Then I thought that mushing all predicates into the single predicate of entry[0] will cause it to become true_predicate() very quickly, so I added logic to distribute incoming size_time information across all 32 entries by searching for entries with similar predicates.
> 
> Entry[0] is always true predicate BTW.  This is why you don't need or predicate there.

Yeap, I learned this several hours after I posted the patch.

> 
> I will take at the patch later today.

Thanks,

--
Maxim Kuvyrkov
CodeSourcery / Mentor Graphics



More information about the Gcc-patches mailing list