Some processor architectures do support bitwise access to memory, eg. ARM Cortex-M and 8051 (by ARM called bit-banding). In these architectures a single bit can somewhat be addressable, but only as an 'aliased' memory region for another memory address.
I noticed that Keil ARMCC compiler now seems to support this huge optimization possibility. ARMCC mark bit-bandable types as __attribute__((bitband)), then when declaring, an reference to bit-banded memory is given. typedef struct { char i : 1; int j : 2; int k : 3; } BB __attribute__((bitband)); BB bb __attribute__((at(0x20000004))); void foo(void) { bb.i = 1; } Should something similar be possible in GCC, using attributes or similar to mark this feature possible to utilize, then pick up this at a very late target specific optimization pass that could use bit-banding when possible? Like eg. a Cortex peephole2 or something similar? Have anyone maybe already tried to look into this feature in GCC? Is it a good idea, or even possible? Refs: http://www.keil.com/support/man/docs/armcc/armcc_chr1359124979689.htm http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.faqs/15921.html https://answers.launchpad.net/gcc-arm-embedded/+question/228758 Best Regards, Fredrik