https://gcc.gnu.org/bugzilla/show_bug.cgi?id=60969
Uroš Bizjak <ubizjak at gmail dot com> changed: What |Removed |Added ---------------------------------------------------------------------------- Keywords| |ra Component|target |rtl-optimization --- Comment #16 from Uroš Bizjak <ubizjak at gmail dot com> --- (In reply to H.J. Lu from comment #13) > The matching pattern for: > > (insn 26 25 27 4 (set (reg:SF 147 [ D.2421 ]) > (float:SF (reg/v:SI 154 [ z ]))) 203 {*floatsisf2_i387} > (expr_list:REG_DEAD (reg/v:SI 154 [ z ]) > (nil))) > > was removed by r208587. Without SSE math, MMX is used in *movsf_internal. This has nothing to do with SSE math, but register preferences. In i386.md, it is said for the above RTX that: ;; Even though we only accept memory inputs, the backend _really_ ;; wants to be able to do this between registers. Thankfully, LRA ;; will fix this up for us during register allocation. LRA fixes this in a wrong way and puts the value in %mm register, see also comment #10. Reconfirmed on mainline as RA problem using "-O2 -ftree-vectorize -march=pentium4 -m32" with Jakub's test from Comment #1.