https://gcc.gnu.org/bugzilla/show_bug.cgi?id=99578
--- Comment #26 from Jakub Jelinek <jakub at gcc dot gnu.org> --- (In reply to Martin Sebor from comment #25) > In my opinion, code that deliberately uses invalid pointers (e.g., hardwired > addresses) should be explicitly annotated, e.g., by some attribute. This > approach has at least two advantages: 1) it makes the intent clear to the > reader, and 2) by declaring the object it lets GCC enforce type safety as > well as check for out-of-bounds access to it. GCC already provides two such > attributes: the AVR address and io attributes. Rather than relying on > heuristics I would suggest to make the address attribute (or one like it) > available on all targets and use it for this purpose. (I started working on > it last November but didn't finish it.) That is nonsense. The amount of code in the wild that relies on (type *)CONSTANT working is insane, you can't annotate it all. And it has worked fine for decades. The pointers aren't invalid, they point to valid objects in the address space. POSIX supports MAP_FIXED for a reason (and in many embedded cases one doesn't even have an MMU and I/O or other special areas are mapped directly).