https://gcc.gnu.org/bugzilla/show_bug.cgi?id=97100
--- Comment #9 from uecker at gcc dot gnu.org --- x is - according to the C standard - always whatever it is in the controlling expression. Some warnings are then even required to be standard compliant. Note that this also does not have to be an identifier, but could be a complex expression. So there seems no simply algorithm for a compiler to do the right thing in general regarding warnings.