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

--- Comment #4 from Manuel López-Ibáñez <manu at gcc dot gnu.org> ---
(In reply to Marc Glisse from comment #3)
> (In reply to Manuel López-Ibáñez from comment #2)
> > (In reply to Marc Glisse from comment #1)
> > > I see in the dump:
> > > 
> > >   # .MEM_4 = VDEF <.MEM_8>
> > >   D.2272 ={v} {CLOBBER};
> > >   # VUSE <.MEM_4>
> > >   _5 = MEM[(doubleD.39 *)&D.2272];
> > > 
> > > which looks like something we could warn about in the middle-end.
> > 
> > Could you elaborate? My middle-end foo is not as good as it used to be.
> 
> _5 = MEM[(doubleD.39 *)&D.2272];
> says we are reading something inside variable D.2272. And right in the
> previous instruction:
> D.2272 ={v} {CLOBBER};
> we clobbered the content of that variable, so what we are reading is
> nonsense. These clobbers are specifically added to indicate when variables
> die (like your temporary).

Where is the clobber added? The closer to the FE that we warn, the better
diagnostic we can generate. I'm not very concerned about maybe-branches, since 
I expect most bugs to appear in temporaries created in the middle of
expressions (such as a.getB().getA().x), where no branching occurs.

Reply via email to