https://gcc.gnu.org/bugzilla/show_bug.cgi?id=92963
--- Comment #1 from Andrew Pinski <pinskia at gcc dot gnu.org> --- Take: if (p == q) r = p; else r = q; p cannot be q as they cannot be based on each other based on my reading of 6.7.3.1p3. Therefore r is only ever based on q.