https://gcc.gnu.org/bugzilla/show_bug.cgi?id=103961
--- Comment #8 from Richard Biener <rguenth at gcc dot gnu.org> --- (In reply to Andrew Pinski from comment #3) > Looks like GCC is getting confused due to: > p--; > > > I don't get: > [cap_text.c:419:3] # PT = anything > _104 = p_65 + 18446744073709551615; > > All other places just have # PT = { D.4523 } (escaped) > > D.4523 being buf decl. I think that might be ranger adding nonnull to a pointer where we previously have no points-to info at all (which means anything as well). The above stmt is introduced by PRE: - <bb 81> [local count: 982087419]: - goto <bb 21>; [100.00%] + <bb 94> [local count: 982087419]: + goto <bb 23>; [100.00%] + + <bb 29> [local count: 37309945]: + [cap_text.c:419:3] _104 = p_65 + 18446744073709551615; - <bb 27> [local count: 39298952]: + <bb 30> [local count: 39298952]: # PT = { D.4523 } (escaped) - # p_228 = PHI <p_65(26), [cap_text.c:403:4] p_147(20)> - [cap_text.c:419:3] # PT = { D.4523 } (escaped) - p_149 = p_228 + 18446744073709551615; + # p_228 = PHI <p_65(29), [cap_text.c:403:4] p_147(91)> + # PT = { D.4523 } (escaped) + # prephitmp_82 = PHI <_104(29), p_210(91)> which could indeed have preserved points-to info (but it would need to be tracked in the expression sets so that's not too easy).