On 28/10/2011, at 7:24 PM, Maxim Kuvyrkov wrote:

> On 20/10/2011, at 10:32 PM, Jan Hubicka wrote:
> 
>> Hi,
>>> Jan,
>>> 
>>> The following patch started as a one-liner for ipa-inline-analysis.c: 
>>> account_size_time() to merge predicates when we are adding data to entry[0] 
>>> (i.e., when space for 32 size_time entries is exhausted):
>>> 
>>> @@ -537,6 +592,9 @@ account_size_time (struct inline_summary
>>>    }
>>>  else
>>>    {
>>> +      e->predicate = or_predicates (summary->conds, &e->predicate, pred);
>>>      e->size += size;
>>>      e->time += time;
>>>      if (e->time > MAX_TIME * INLINE_TIME_SCALE)
>> 
>> As we discussed, this is not needed in current form because we arrange first 
>> predicate to be always
>> true and thus we could always place there all the costs that did not fit 
>> elwhere.
>> 
>> The patch has a problem with fact that the predicates must be always 
>> conservative i.e. when
>> they are proved to be false the code must be unreachable after inlining.
> 
> I don't understand your point.  The OR-ing of the predicates allows us to 
> merge size_time_entries and keep the total number of them under a desired 
> limit.  Currently all merging goes into entry[0], and the patch makes the 
> extra information to get distributed across more entries.  Because we OR the 
> predicates, we keep the information conservative; now in order to say that 
> certain code will be unreachable the inliner has to prove to be false the 
> OR-ed predicate.
> 
> Now, one can argue whether it is actually a benefit to distribute the 
> information more evenly and, consequently, making more predicates harder to 
> disprove.  In current scheme we have the surplus of size_time information 
> under one impossible-to-disprove predicate and many entries with 
> easier-to-disprove-predicates.  My patch changes the situation to having most 
> of the size_time information in entries with harder-but-possible-to-disprove 
> predicates.
> 
> Am I missing something?

Ping.

Though this patch is not motivated by a real testcase, I want to confirm (or 
correct) my understanding of the IPA context-tracking infrastructure.

Jan, does the above sound reasonable as to why predicates would still be 
conservative after the patch?

Thank you,

--
Maxim Kuvyrkov
CodeSourcery / Mentor Graphics


Reply via email to