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

--- Comment #3 from ktkachov at gcc dot gnu.org ---
Hmm...
The code in tree-ssa-math-opts.c that creates the FMA_EXPR avoids doing it if
the target doesn't support an fma optab.
So the optab handler should have rejected it.
The arm fma optab in vfp.md has the condition TARGET_32BIT && TARGET_HARD_FLOAT
&& TARGET_FMA.

TARGET_FMA is defined as (TARGET_VFP && TARGET_FPU_REV >= 4)
and TARGET_FPU_REV is (all_fpus[arm_fpu_index].rev)

at the point in convert_mult_to_fma in fn2 when the FMA_EXPR is created if I
print in gdb the expression:
all_fpus[global_options.x_arm_fpu_index].rev
I get '3'. So TARGET_FMA should be properly set to 0 at this point.
Something's weird going on.

Reply via email to