https://gcc.gnu.org/bugzilla/show_bug.cgi?id=122304
--- Comment #8 from Andrew Pinski <pinskia at gcc dot gnu.org> --- (In reply to Carson Range from comment #7) > (In reply to Andrew Pinski from comment #3) > > (In reply to Sam James from comment #2) > > > Please try -ffp-contract=off or -ffp-contract=standard. > > > > -ffp-contract=standard is NOT an option, it is -ffp-contract=on. > > > > Yes it is a bit confusing that way. off means no contraction will happen. > > while on means only contraction allowed by the standard (inside expressions > > only and not outside of statements) unless one of the #pragma is in turned > > on. While fast means across all statements. > > > > It might also be the case that =on might fail too because the code is > > expecting no contraction (that is no use of Fused multiply add > > instructions). > > What is this difference between ffp-contract on and off? I assume the > default is fast which causes this error I believe right? I mentioned the difference between on/off in that comment and the default I mentioned earlier: =off means no contraction will happen. while =on means only contraction allowed by the standard (inside expressions only and not outside of statements) unless one of the #pragma is in turned on (GCC does not implement the #pragma). While =fast means across all statements. The default is -ffp-contract=fast unless you specify a non-gnu -std= option
