https://gcc.gnu.org/bugzilla/show_bug.cgi?id=94440

--- Comment #2 from Jakub Jelinek <jakub at gcc dot gnu.org> ---
I need -mfpmath=sse,387 -fexcess-precision=standard -Ofast -msse2
--param=scev-max-expr-size=0 -m32 (-Werror not needed, but -msse2 required) to
reproduce.
The function suggests that the "enabled" attribute on the pattern in question
(*fop_df_comm) violates the documented rules:
"All these attributes should use @code{(const_int 1)} to allow an alternative
or @code{(const_int 0)} to disallow it.  The attributes must be a static
property of the subtarget; they cannot for example depend on the
current operands, on the current optimization level, on the location
of the insn within the body of a loop, on whether register allocation
has finished, or on the current compiler pass."
Seems like the target is the same for both functions - in particular
this_target_recog is the same between f1 and main - default_target_recog in
both cases (the two functions don't have different target attribute).

So, either we need to consider also -ffast-math options to be part of target
and force different this_target_recog if it changes between functions, or the
i386 backend can't use enabled attribute for the fast-math dependent checks.

Reply via email to