------- 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