https://gcc.gnu.org/bugzilla/show_bug.cgi?id=88854
--- Comment #7 from Matthias Kretz <kretz at kde dot org> --- (In reply to rguent...@suse.de from comment #5) > Yeah, we do not perform this kind of "flow-sensitive" TBAA. So > when trying to DSE *a = x; we only look at > > int x = *a; > *b = 1; > *a = x; > > and do not consider the earlier load from *b at all because it is > not on the path from the load making the store possibly redundant. However, if I annotate a and/or b as __restrict__ GCC does the DSE. I don't think I want another DSE special case but a general case of inducing aliasing knowledge, which may affect decisions throughout the whole program where the pointers are used.