Fix bug in assigning elements of struct arrays.

This kind of thing:

    struct S { float x; }
    S a[2];
    a[1] = a[0];

The generated code would not properly copy a[0].x to a[1].x.

LG is submitting this, but the patch is actually from Derek Haase.
LG confirms that it fixes the bug, doesn't break anything else, and
looks correct.