------- Comment #2 from rguenth at gcc dot gnu dot org 2009-04-25 10:41 -------
Thanks for the short testcase. I'll try to improve the location information.
The compiler at the point of the warning sees
D.1756_5 = (struct APSInt &) &Val.Data;
AdditionalOffset.D.1723 = D.1756_5->D.1723;
and complains about dereferencing D.1756_5 which is of type APSInt * but
the object that is accessed is of type void *. So yes, this is an alias
violation.
What you probably want to do is sth like
class APValue {
private:
char Data[sizeof(APSInt)];
public:
APSInt &getInt() {
return *(new (Data) APSInt);
}
};
to be conforming.
--
rguenth at gcc dot gnu dot org changed:
What |Removed |Added
----------------------------------------------------------------------------
Status|UNCONFIRMED |NEW
Ever Confirmed|0 |1
Keywords| |diagnostic
Last reconfirmed|0000-00-00 00:00:00 |2009-04-25 10:41:02
date| |
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=39891