https://gcc.gnu.org/bugzilla/show_bug.cgi?id=85957
--- Comment #8 from Alexander Monakov <amonakov at gcc dot gnu.org> --- To expand a bit: DOM makes the small testcase behave as if 'b' and 'ib' are evaluated twice: * one time, 'b' is evaluated in precision matching 'a' (either infinite or double), and 'ib' is evaluated to 1; this instance is used in 'ia == ib' comparison; * a second time, 'b' is evaluated in extended precision and 'ib' is evaluated to 0; this instance is passed as the last argument to printf. This is surprising as the original program clearly evaluates 'b' and 'ib' just once. If there's no bug in DOM and the observed transformation is allowed to happen when -fexcess-precision=fast is in effect, I think it would be nice to mention that in the compiler manual.