https://gcc.gnu.org/bugzilla/show_bug.cgi?id=99847
--- Comment #2 from ⎓ <m.frohiky at gmail dot com> --- The same thing is with other way around. I.e.: void ntoh(uint16_t idata, uint8_t *odata) { odata[0] = idata >> 8; odata[1] = idata & 0xff; } results with: move.l 8(%sp),%a0 move.w 6(%sp),(%a0) rts I've tried with both -mstrict-align and -mno-strict-align and there are no differences in the produced assembly file (generated with -S).