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.