https://gcc.gnu.org/bugzilla/show_bug.cgi?id=97292
--- Comment #18 from Martin Liška <marxin at gcc dot gnu.org> --- (In reply to Jan Hubicka from comment #17) > And is it again the operator++ triggering the problem? > It looks like aliasing bug to me, but in a template hell and > -Wstrict-aliasing=3 is happy. It's another place where a *(&cell + 12) is moved by PRE: <bb 167> [local count: 365109597]: pretmp_2371 = MEM[(const struct Triangulation * *)&cell + 16B]; pretmp_2373 = MEM[(int *)&cell + 8B]; - pretmp_2375 = MEM[(int *)&cell + 12B]; goto <bb 131>; [100.00%] > > The reason why parameter tracking is necessary seems to be the fact that we > figure out some accesses from inner calls are local to the ++ operator and > do not consider them in a summary (that is correct)