https://gcc.gnu.org/bugzilla/show_bug.cgi?id=118779
--- Comment #2 from Richard Biener <rguenth at gcc dot gnu.org> --- (In reply to Jakub Jelinek from comment #0) > In the source, those 2 loops are > { > { gcv_object_t* offset = 0; > { uintWL count = oldsize; > do { > { object oldentry = > > *(gcv_object_t*)(((UBYTE*)(&((Svector)((oint)(((STACK[-1-(sintP)(2)])))- > 1UL))->data[0])+((aint)offset)) > ); [...] > offset++; so PTA will likely compute 'offset' as pointing to null (aka nothing) and as we track pointers through integers the &... + (aint)offset compute might have the same effect as always adjusting the pointer by zero for the purpose of PTA. It also might then fold if (offset_108 != _124) Of course it depends on the IL what actually happens. > }} while (--count);