On 1/28/07, Jan Hubicka <[EMAIL PROTECTED]> wrote:
> tbp wrote:
>
> > Secundo, while i very much appreciate the brand new string ops, it
> > seems that on ia32 some array initialization cases where left out,
> > hence i still see oodles of 'movl $0x0' when generating code for k8.
> > Also those zeroings get coalesced at the top of functions on ia32, and
> > i have a function where there's 3 pages of those right after prologue.
> > See the attached 'grep 'movl   $0x0' dump.
>
> It looks like Jan and Richard have answered some of your questions about
> inlining (or are in the process of doing so), but I haven't seen a
> response to this point.
>
> Certainly, if we're generating zillions of zero-initializations to
> contiguous memory, rather than using memset, or an inline loop, that
> seems unfortunate.  Would you please file a bug report?

I though the comment was more reffering to fact that we will happily
generate
movl $0x0,  place1
movl $0x0,  place2
...
movl $0x0,  placeMillion

rather than shorter
xor %eax, %eax
movl %eax, ...
but indeed both of those issues should be addressed (and it would be
interesting to know where we fail ty synthetize memset in real
scenarios).

With the repeated mov issue unforutnately I don't know what would be the
best place: we obviously don't want to constrain register allocation too
much and after regalloc I guess only machine dependent pass is the hope
that is pretty ugly (but not that difiuclt to code at least at local
level).

One source of these patterns is SRA decomposing structures and
initialization.  But the structure size we do that for is limited (I also
believe we already have bugreports about this, but cannot find them
right now).

Richard.

Reply via email to