Testcase (modified from testcase which Chris Latter was looking at): void foo(float a, int *b) { b[0] = b[1] = a; } ---- Currently we get: fctiwz f0,f1 addi r2,r1,-24 stfiwx f0,0,r2 lwz r0,-24(r1) stw r0,0(r4) stw r0,4(r4) ------ We should be able to get: fctiwz f0,f1 stfiwx f0,0,r4 li r2, 4 stfiwx f0,r2,r4 ---- or ----- fctiwz f0,f1 stfiwx f0,0,r4 addi r4, r4, 4 stfiwx f0,0,r4 Depending on a lot of stuff I don't know how much this shows up in real code.
s/Latter/Lattner/
Confirmed. Also happens on x86 too.