https://gcc.gnu.org/bugzilla/show_bug.cgi?id=61502
Richard Biener <rguenth at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Blocks| |85800 --- Comment #30 from Richard Biener <rguenth at gcc dot gnu.org> --- Another interesting example in PR85800 where the offending "bad" transformation is for char a, b if (a == b) a[i] = a; else a[i] = b; if-convert that to a[i] = b; because a and b have different pointer provenance -- runtime equal pointers &x and &y+1 (one-after-end) again. The if-converted result results in a[i] having same provenance as b rather than "both" (GCC happily tracks provenance union). In isolation avoiding this kind of transforms is bad (consider this is isolated into a separate function and later inlined). Referenced Bugs: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=85800 [Bug 85800] A miscompilation bug with unsigned char