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.