Take: struct f{ float a; float b; float c; float d; }; struct f a;
void h(float, float, float, float); void g(void) { float a1 = a.a, b = a.b, c = a.c, d = a.d; a.a = a1; a.b = b; a.c = c; a.d = d; h(a1, b, c, d); } --- CUT --- Currently only postreload will remove the store back to a.a, a.b, a.c, and a.d. Note this code orginally came from inlined code and was just reduced to this. And if this was done before postreload, we don't need a fmr which was produced by the register allocator. -- Summary: Only postreload will remove a no-op store Product: gcc Version: 4.4.0 Status: UNCONFIRMED Keywords: missed-optimization Severity: normal Priority: P3 Component: tree-optimization AssignedTo: unassigned at gcc dot gnu dot org ReportedBy: pinskia at gcc dot gnu dot org http://gcc.gnu.org/bugzilla/show_bug.cgi?id=38513