On Thu, Sep 12, 2019 at 1:28 AM Gary Oblock <gobl...@marvell.com> wrote:
>
> I'm trying to do a set of optimizations that drastically transform the
> layout of arrays of structures. For obvious reasons they will need to
> run at LTO time. I'm running into some difficulties comprehending how
> the initialization data is stored. Also, I'm seeing DECL_INITIALs
> being set to NULL and that is worrisome since it would throw a monkey
> wrench into what I'm doing. That is, because for my optimizations to
> work they will need to either disqualify an array with initialization
> data or transform said data.
>
> So, is the initialization data being hidden at LTO time?
> If not what's its format and how do I best manipulate it?

You probably have to do at least part of the work at WPA time where
DECL_INITIAL should be appropriately set.  Initializers are generally only
shipped to / output in one LTRANS unit unless they can be used for
constant folding.

> Any insight into how to deal with these problem would be most helpful.
> These are some really interesting optimizations and will greatly speed
> up code that uses large arrays of structures.

Usually hinting the programmer is way easier here since a compiler has
to give up too easily for data layout optimizations.  Unless you only
target specific benchmarks...

Richard.

>
> Thanks,
>
> Gary Oblock

Reply via email to