------- Comment #22 from rguenther at suse dot de 2009-02-27 10:33 -------
Subject: Re: [4.4 regression] warnings from -isystem
headers strikes back.
On Fri, 27 Feb 2009, pluto at agmk dot net wrote:
> ------- Comment #21 from pluto at agmk dot net 2009-02-27 10:29 -------
> (In reply to comment #20)
> > Same issue. Only possible fix is to not apply TBAA pruning to escaped
> > symbols, which will - well - basically disable TBAA. Testcase:
>
> waht about this testcase?
> the bug is marked as fixed but warnings are still present?
The original reported problem is gone. The testcase below is unfixable.
> > inline void *operator new (__SIZE_TYPE__, void *__p) throw() { return __p; }
> >
> > struct Y {
> > Y() {}
> > int i;
> > };
> >
> > struct X {
> > X() {}
> > void construct(const Y& y)
> > {
> > new (&m_data[0]) Y(y);
> > }
> > template <class T>
> > Y& get() { return reinterpret_cast<Y&>(m_data); }
> > bool initialized;
> > char m_data[sizeof (Y)];
> > };
> >
> > X x;
> >
> > void bar(const X&);
> > void foo(Y& y)
> > {
> > x.get<Y>() = y;
> > x.initialized = true;
> > bar(x);
> > }
> >
>
> t.cpp: In member function 'Y& X::get() [with T = Y]':
> t.cpp:25: instantiated from here
> t.cpp:15: warning: dereferencing type-punned pointer will break
> strict-aliasing
> rules
> t.cpp: In function 'void foo(Y&)':
> t.cpp:25: warning: dereferencing pointer '<anonymous>' does break
> strict-aliasing rules
> t.cpp:25: note: initialized from here
>
>
>
--
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=38503