------- Comment #13 from rguenth at gcc dot gnu dot org  2008-06-11 14:29 
-------
Note that the documentation of may_alias is extremely confusing IMHO (and
c_common_get_alias_set is wrong).

"Accesses to objects with types with this attribute are not subjected to
type-based alias analysis, but are instead assumed to be able to alias
any other type of objects, just like the @code{char} type."

the "char type" is not special, but instead you are allowed to access all
memory via an _lvalue_ of character type!

The above suggests that

long __attribute__((__may_alias__)) x;

*(short *)&x;

is ok, but it is not.

A better wording would be to say

"Accesses through pointers to types with this attribute are not subject
to type-based alias analysis, but are instead assumed to be able to alias
any other type of objects.  These lvalue expressions are treated like
having a character type.  ..."

"Note that an object of a type with this attribute does not have any
special semantics."


-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=36369

Reply via email to