From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 3577 invoked by alias); 5 Feb 2014 20:06:54 -0000 Mailing-List: contact gcc-bugs-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Id: List-Archive: List-Post: List-Help: Sender: gcc-bugs-owner@gcc.gnu.org Received: (qmail 3518 invoked by uid 48); 5 Feb 2014 20:06:51 -0000 From: "josh at joshtriplett dot org" To: gcc-bugs@gcc.gnu.org Subject: [Bug c/59850] Support sparse-style pointer address spaces (type attributes) Date: Wed, 05 Feb 2014 20:06:00 -0000 X-Bugzilla-Reason: CC X-Bugzilla-Type: changed X-Bugzilla-Watch-Reason: None X-Bugzilla-Product: gcc X-Bugzilla-Component: c X-Bugzilla-Version: unknown X-Bugzilla-Keywords: X-Bugzilla-Severity: enhancement X-Bugzilla-Who: josh at joshtriplett dot org X-Bugzilla-Status: UNCONFIRMED X-Bugzilla-Priority: P3 X-Bugzilla-Assigned-To: unassigned at gcc dot gnu.org X-Bugzilla-Target-Milestone: --- X-Bugzilla-Flags: X-Bugzilla-Changed-Fields: Message-ID: In-Reply-To: References: Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: 7bit X-Bugzilla-URL: http://gcc.gnu.org/bugzilla/ Auto-Submitted: auto-generated MIME-Version: 1.0 X-SW-Source: 2014-02/txt/msg00501.txt.bz2 http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59850 --- Comment #11 from Josh Triplett --- (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 *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 *static [toplevel] p2 test.c:2:53: got void *static [toplevel] p test.c:3:54: warning: cast adds address space to expression () 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.