https://gcc.gnu.org/bugzilla/show_bug.cgi?id=103121
--- Comment #29 from Martin Sebor <msebor at gcc dot gnu.org> --- >From memory: At use1 the cache is empty so go and find its definition and record the offset at that point, with the pointer addition as the context. And at use2 we look up the same offset. So use1 won't reflect the constant offset. That could be both good (if the code is unreachable) and bad (if it is and the use is invalid. If it did work the way you're concerned I'd expect to see a lot of mysterious false positives. The cache has been in use since GCC 11 and I don't recall coming across any puzzling problems. But we have seen an uptick in false positives in GCC 12 after we switched over to Ranger so let me double check it really does work the way I say it does.