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. -- Summary: Storing float to int into two different pointers requires stack space Product: gcc Version: 4.2.0 Status: UNCONFIRMED Keywords: missed-optimization Severity: enhancement Priority: P3 Component: target AssignedTo: unassigned at gcc dot gnu dot org ReportedBy: pinskia at gcc dot gnu dot org GCC target triplet: powerpc-darwin http://gcc.gnu.org/bugzilla/show_bug.cgi?id=26505