https://gcc.gnu.org/bugzilla/show_bug.cgi?id=18900
Segher Boessenkool <segher at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Status|WAITING |RESOLVED CC| |segher at gcc dot gnu.org Resolution|--- |FIXED --- Comment #8 from Segher Boessenkool <segher at gcc dot gnu.org> --- I think a long time ago (early 4.x era?) something went in to always prefer integer registers for copying. With the following testcase, the only floating point use is for the structs with doubles. (-m32 -mcpu=603 or similar). Closing as fixed. === long long a, b; struct { int x[2]; } sa, sb; struct { char x[8]; } ta, tb; struct { int x; int y; } ua, ub; struct { float x; float y; } va, vb; struct { double x; } wa, wb; struct { double x[1]; } xa, xb; void f(void) { a = b; sa = sb; ta = tb; ua = ub; va = vb; wa = wb; xa = xb; } ===