https://gcc.gnu.org/bugzilla/show_bug.cgi?id=88948
Uroš Bizjak <ubizjak at gmail dot com> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |law at gcc dot gnu.org Component|target |rtl-optimization --- Comment #1 from Uroš Bizjak <ubizjak at gmail dot com> --- Not a target problem. It is RTL store motion pass that transforms: (insn 19 18 20 4 (parallel [ (set (mem/c:SI (symbol_ref:SI ("bar_arg") [flags 0x2] <var_decl 0x7f68136f2b40 bar_arg>) [1 bar_arg+0 S4 A32]) (fix:SI (reg:DF 89))) (clobber (scratch:XF)) ]) "stdarg-3.c":63:7 156 {fix_truncsi_i387_fisttp} (expr_list:REG_DEAD (reg:DF 89) (nil))) to an unrecognisable insn: (insn 33 18 20 4 (set (reg:SI 93 [ bar_arg ]) (fix:SI (reg:DF 89))) "stdarg-3.c":63:7 -1 (expr_list:REG_DEAD (reg:DF 89) (nil))) There is the following insn present in the i386.md: (define_insn "fix_trunc<MODEF:mode><SWI48:mode>_sse" [(set (match_operand:SWI48 0 "register_operand" "=r,r") (fix:SWI48 (match_operand:MODEF 1 "nonimmediate_operand" "v,m")))] "SSE_FLOAT_MODE_P (<MODEF:MODE>mode) && (!TARGET_FISTTP || TARGET_SSE_MATH)" "%vcvtt<MODEF:ssemodesuffix>2si<SWI48:rex64suffix>\t{%1, %0|%0, %1}" But with TARGET_FISTTP = 1 and TARGET_SSE_MATH = 0, as is the case with the above testcase, it should be disabled.