 <p>It doesn't violate IEEE-754, because IEEE-754 defers to languages on this point:</p> <blockquote> <p>A language standard should also define, and require implementations to provide, attributes that allow and disallow value-changing optimizations, separately or collectively, for a block. These optimizations might include, but are not limited to:</p> <p>...</p> <p>― Synthesis of a fusedMultiplyAdd operation from a multiplication and an addition.</p> </blockquote> <p>In standard C, the <code>STDC FP_CONTRACT</code> pragma provides the means to control this value-changing optimization. So GCC is licensed to perform the fusion by default, so long as it allows you to disable the optimization by setting <code>STDC FP_CONTRACT OFF</code>. Not supporting that means not adhering to the C standard.</p>