[PATCH] Remove copies of MCSubtargetInfo from MCRelaxableFragment

Duncan P. N. Exon Smith dexonsmith at apple.com
Fri Jul 10 15:33:42 PDT 2015


r241956

> On 2015-Jul-10, at 06:29, Rafael EspĂ­ndola <rafael.espindola at gmail.com> wrote:
> 
> Patch 2 LGTM.
> 
> On 10 July 2015 at 09:27, Rafael EspĂ­ndola <rafael.espindola at gmail.com> wrote:
>> Patch 1 LGTM.
>> 
>> 
>> On 8 July 2015 at 20:30, Duncan P. N. Exon Smith <dexonsmith at apple.com> wrote:
>>> Last I checked my `-g -flto` workload, `MCRelaxableFragment` was taking
>>> up 4.7% of the heap during LTO.  Since these aren't debug info related,
>>> the relative cost is even higher without `-g` (I figure 10% or so?).
>>> The struct layout contained a shock: over half of
>>> `sizeof(MCRelaxableFragment)` comes from a local copy (!?) of
>>> `MCSubtargetInfo`.
>>> 
>>> It was more roundabout than I expected to fix, but this patch series
>>> does it.  0001 removes the copy of `MCSchedModel` from
>>> `MCSubtargetInfo`, 0002-0004 change the `MCSubtargetInfo` API to prove
>>> that only the feature bits get mutated, and 0005 moves the copies of
>>> `MCSubtargetInfo` to a cache in `MCContext`.
>>> 
>>> I'd love a pre-commit sanity check from someone for two of these:
>>>  - 0001 (the object for `MCSchedModel::GetDefaultMCSubtarget()` doesn't
>>>    need to be defined in the header for some reason, does it?) and
>>>  - 0003 (I'm touching *all* the targets...)
>>> 
>>> and I've provided the rest of the series (and a combined all.patch) for
>>> context.
>>> 
>>> 





More information about the llvm-commits mailing list