https://gcc.gnu.org/bugzilla/show_bug.cgi?id=106902
--- Comment #20 from Alexander Monakov <amonakov at gcc dot gnu.org> --- I missed it the first time around, but placing PAREN_EXPR around the complete expression won't work: nothing will prevent GCC from duplicating evaluations of the sub-expressions, and then randomly forming FMAs like here. It would just bury this class of bugs deeper. Now that we are in stage1, can we make some kind of progress here? Is there any buy-in for: 1. Implementing fp-contract=on via GENERIC folding? 2. Defaulting to fp-contract=on instead of fp-contract=fast under -std=gnu*? 3. Enabling fp-contract=fast under -ffast-math?