http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59850
Josh Triplett <josh at joshtriplett dot org> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |josh at joshtriplett dot org --- Comment #1 from Josh Triplett <josh at joshtriplett dot org> --- A few additional behavior notes: Casting a pointer from one address space to another must produce a warning, unless the type used for the cast includes __attribute__((force)). (Typically, a codebase will have safe ways to perform such conversions, wrapped up in functions with appropriate parameter and return types, with a force'd cast in them; for instance, the kernel's copy_to_user and copy_from_user functions.) __attribute__((force)) can be used in the type of a function parameter as well, in which case the caller can pass a pointer to a different address space without complaint. Dereferences of a noderef type inside a sizeof() or typeof() must not generate warnings. For instance: __attribute__((address_space(1),noderef)) int *a; typeof(*a) b; /* b has type "int" */ typeof(*a) *c; /* c has type "int *" */