http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59850
--- Comment #11 from Josh Triplett <josh at joshtriplett dot org> --- (In reply to Tom Tromey from comment #10) > Relatedly, could you say what the option "-Wcast-to-as" provides > beyond the normal warnings about changing address spaces? > I wonder if this is something I should be pulling in as well. > "man sparse" doesn't really say much here. /tmp$ cat test.c static void *p; static __attribute__((address_space(1))) void *p2 = p; static __attribute__((address_space(1))) void *p3 = (__attribute__((address_space(1))) void *)p; static __attribute__((address_space(1))) void *p4 = (__attribute__((address_space(1),force)) void *)p; /tmp$ ~/src/sparse/sparse -Waddress-space test.c test.c:2:53: warning: incorrect type in initializer (different address spaces) test.c:2:53: expected void <asn:1>*static [toplevel] p2 test.c:2:53: got void *static [toplevel] p /tmp$ ~/src/sparse/sparse -Waddress-space -Wcast-to-as test.c test.c:2:53: warning: incorrect type in initializer (different address spaces) test.c:2:53: expected void <asn:1>*static [toplevel] p2 test.c:2:53: got void *static [toplevel] p test.c:3:54: warning: cast adds address space to expression (<asn:1>) Without -Wcast-to-as, you won't get a warning for unforced casts that add an address space. Personally, I'd actually suggest merging the two in GCC, and always issuing both sets of warnings. I'd also suggest including the warnings in GCC's -Wall, given that you'll only see them if you explicitly use an address_space attribute.