http://gcc.gnu.org/bugzilla/show_bug.cgi?id=32629

--- Comment #3 from rguenther at suse dot de <rguenther at suse dot de> 
2012-06-11 08:39:45 UTC ---
On Sat, 9 Jun 2012, hubicka at ucw dot cz wrote:

> http://gcc.gnu.org/bugzilla/show_bug.cgi?id=32629
> 
> --- Comment #2 from Jan Hubicka <hubicka at ucw dot cz> 2012-06-09 22:17:07 
> UTC ---
> > I suppose doing the $0x0 optimization should be done post-reload.
> I was wondering how to implement this nice for some years already.... I don't
> see how this can be done without specialized pass, really, and the interface 
> is
> probably going to be bit weird, since it is very weird property of x86
> instruction set that there are no stores with short immediate...

I wonder if we can use a peephole2 and DF information (and update it
on-the-fly).  Thus, when seeing

  mov $0, ...
  mov $0, ...

transform it incrementally to

  xor %eax, %eax
  mov %eax, ...
  mov $0, ...

and then have a 2nd peephole2 with higher priority that looks for
a register with zero content (eh ... that's the interesting part ;))
and do

  xor %eax, %eax
  mov %eax, ...
  mov %eax, ...

I suppose we have the first peephole already - though we'd end up
with

  xor %eax, %eax
  mov %eax, ...
  xor %eax, %eax
  mov %eax, ...

and rely on postreload-cse to clean that up (which isn't run after
the peephole2 in postreload queue ...)

Richard.

Reply via email to