The deeper issue is in this case the bit propagates up through
the COND_EXPR, eventually to a COMPONENT_REF.
OK, so you're talking about the case of a non-void-type COND_EXPR, then?
But in that case, the arms will be replaced with variables, not GOTO_EXPRs.
Why are side effects being recomputed then?