This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug c/59850] Support sparse-style pointer address spaces (type attributes)
- From: "josh at joshtriplett dot org" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: Wed, 05 Feb 2014 20:06:51 +0000
- Subject: [Bug c/59850] Support sparse-style pointer address spaces (type attributes)
- Auto-submitted: auto-generated
- References: <bug-59850-4 at http dot gcc dot gnu dot org/bugzilla/>
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.