Hello! We should avoid to allocate "r" in *_nointeger instructions. Constraint modifiers apply to a following character, not to the whole alternative.
2011-05-06 Uros Bizjak <ubiz...@gmail.com> * config/i386/i386.md (*movdf_internal_nointeger): Apply "*" constraint modifier to "r". Tested on x86_64-pc-linux-gnu {,-m32}, committed to mainline SVN and (soon) 4.6 branch. Uros.
Index: config/i386/i386.md =================================================================== --- config/i386/i386.md (revision 173469) +++ config/i386/i386.md (working copy) @@ -3251,7 +3251,7 @@ [(set (match_operand:DF 0 "nonimmediate_operand" "=f,m,f,*r ,o ,Y2*x,Y2*x,Y2*x ,m ") (match_operand:DF 1 "general_operand" - "fm,f,G,*roF,*Fr,C ,Y2*x,mY2*x,Y2*x"))] + "fm,f,G,*roF,F*r,C ,Y2*x,mY2*x,Y2*x"))] "!TARGET_64BIT && !(MEM_P (operands[0]) && MEM_P (operands[1])) && (optimize_function_for_size_p (cfun) || !TARGET_INTEGER_DFMODE_MOVES)