https://gcc.gnu.org/bugzilla/show_bug.cgi?id=119014
--- Comment #16 from Jakub Jelinek <jakub at gcc dot gnu.org> --- 2 is of course the right value for -fexcess-precision=standard -m32 on x86 (for -fexcess-precision=fast arguably it should be IMHO -1). Anyway, if you don't believe -fexcess-precision= affects the FLT_EVAL_METHOD values, just look at the source: /* Return the value that should be set for FLT_EVAL_METHOD in the context of ISO/IEC TS 18861-3. This relates to the effective excess precision seen by the user, which is the join point of the precision the target requests for -fexcess-precision={standard,fast,16} and the implicit excess precision the target uses. */ static enum flt_eval_method c_ts18661_flt_eval_method (void) { enum flt_eval_method implicit = targetm.c.excess_precision (EXCESS_PRECISION_TYPE_IMPLICIT); enum excess_precision_type flag_type = (flag_excess_precision == EXCESS_PRECISION_STANDARD ? EXCESS_PRECISION_TYPE_STANDARD : (flag_excess_precision == EXCESS_PRECISION_FLOAT16 ? EXCESS_PRECISION_TYPE_FLOAT16 : EXCESS_PRECISION_TYPE_FAST)); enum flt_eval_method requested = targetm.c.excess_precision (flag_type); return excess_precision_mode_join (implicit, requested); } /* As c_cpp_ts18661_flt_eval_method, but clamps the expected values to those that were permitted by C11. That is to say, eliminates FLT_EVAL_METHOD_PROMOTE_TO_FLOAT16. */ static enum flt_eval_method c_c11_flt_eval_method (void) { return excess_precision_mode_join (c_ts18661_flt_eval_method (), FLT_EVAL_METHOD_PROMOTE_TO_FLOAT); } /* Return the value that should be set for FLT_EVAL_METHOD. MAYBE_C11_ONLY_P is TRUE if we should check FLAG_PERMITTED_EVAL_METHODS as to whether we should limit the possible values we can return to those from C99/C11, and FALSE otherwise. See the comments on c_ts18661_flt_eval_method for what value we choose to set here. */ int c_flt_eval_method (bool maybe_c11_only_p) { if (maybe_c11_only_p && flag_permitted_flt_eval_methods == PERMITTED_FLT_EVAL_METHODS_C11) return c_c11_flt_eval_method (); else return c_ts18661_flt_eval_method (); } .. builtin_define_with_int_value ("__FLT_EVAL_METHOD__", c_flt_eval_method (true)); builtin_define_with_int_value ("__FLT_EVAL_METHOD_TS_18661_3__", c_flt_eval_method (false));