------- Comment #27 from bonzini at gnu dot org  2006-11-29 07:56 -------
This case is still not fixed:


struct s {
  int size;
  float *data;
};

void f(struct s *d, struct s *s)
{
  int i;
  for (i = 0; i < s->size; i++)
    d->data[i] += s->data[i];
}

The body of the loop is compiled to:

L4:
        slwi r2,r9,2
        addi r9,r9,1
        lfsx f0,r2,r3
        lfsx f13,r4,r2
        fadds f0,f0,f13
        stfsx f0,r2,r3
        bdnz L4

Note how r2 is twice in the first position, and once in the second.


-- 


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

Reply via email to