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

Reply via email to