This is the mail archive of the crossgcc@sources.redhat.com mailing list for the crossgcc project.
See the CrossGCC FAQ for lots more infromation.
Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
---|---|---|
Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |
Can gcc generate the loads and masks necessary to load unaligned structure members? my target is arm-elf (little-endian) example... typedef struct __attribute__((packed)) { char c0; int i0; } s; int main() { s mys; int i; mys.i0 = 0x12345678; i = mys.i0; return 0; } The generated assembler would be something like.... (pseudo-asm) load $r0, &t+(0 bytes) load $r1, &t+(4 bytes) load $r2, ($r0 & 0x00ffffff) | ($r2 & 0xff000000) Failing this... can gcc generate a warning on accesses to compile-time known unaligned accesses? Otherwise, my next best thought is to create a function int load_unaligned_int( int const * p); that generates the loads from (p&~3) and ((p&~3)+1) and the necessary masks. Only problem there is, a run time function wouldn't be as efficient as compile time, and I'd have to break a lot of legacy code. Thanks, Shaun ------ Want more information? See the CrossGCC FAQ, http://www.objsw.com/CrossGCC/ Want to unsubscribe? Send a note to crossgcc-unsubscribe@sourceware.cygnus.com
Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
---|---|---|
Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |