https://gcc.gnu.org/bugzilla/show_bug.cgi?id=86555
--- Comment #4 from Ramana Radhakrishnan <ramana at gcc dot gnu.org> --- (In reply to Khem Raj from comment #2) > we can avoid the problem by altering the structure, thats not an issue, but > do you think compiler is right here by assuming to generate LDRD on a 4byte > aligned address when it is told that architecture (-march=armv5te) its > building for does not support 4byte aligned address for LDRD but only 8-byte > aligned ? It is correct for the compiler to be doing this - the compiler has just not been given enough information. buf can only get aligned to 8 bytes if there is an input attribute setting the alignment properly otherwise it's a char array and the compiler is within it's rights not to have to force align upwards to 8 bytes in this case. When the compiler is derefencing de->d_off it expects it to be naturally 8 byte aligned. Fix the source.