Before I submit a bug report, is this old news? If the union is aligned (e.g. the byte array is the same length as the union object) the compiler is happy. Make them different and it ICE. Put the union on the stack and the problem goes away. It seems to be associated with the inline asm.
---- snip here ---- #include <inttypes.h> uint8_t foo (uint8_t baz) { union { uint16_t word; uint8_t byte[3]; } bar; bar.byte[0] = baz; asm volatile ( "\tadd %A0, %A0\n" "\tadc %B0, %B0\n" "\tadc %C0, %C0\n" : :"r" (bar) ); return bar.byte[3]; } ---- Larry Barello http://www.barello.net
foo.c
Description: Binary data
_______________________________________________ AVR-GCC-list mailing list AVR-GCC-list@nongnu.org http://lists.nongnu.org/mailman/listinfo/avr-gcc-list