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