------- Additional Comments From rgrosseboerger at dspace dot de 2004-11-11 09:48 ------- Hi,
after looking at the corresponding machine description (GCC 3.3.5, i386.md, line 16619, "Split SSE based moves into sequence") and comparing it with GCC 3.4.0, the bugfix seems to be: --- orig335_i386.md 2004-04-28 17:00:02.000000000 +0000 +++ 335_i386.md 2004-11-11 09:37:14.000000000 +0000 (set (subreg:TI (match_dup 0) 0) (ior:TI (subreg:TI (match_dup 6) 0) (subreg:TI (match_dup 7) 0)))] { - /* If op2 == op3, op3 will be clobbered before it is used. - This should be optimized out though. */ + /* If op2 == op3, op3 would be clobbered before it is used. */ if (operands_match_p (operands[2], operands[3])) - abort (); + { + emit_move_insn (operands[0], operands[2]); + DONE; + } + PUT_MODE (operands[1], GET_MODE (operands[0])); if (operands_match_p (operands[0], operands[4])) operands[6] = operands[4], operands[7] = operands[2]; While searching for the patch that introduced the change, I found PR8555 http://gcc.gnu.org/bugzilla/show_bug.cgi?id=8555. This bug is in the RESOLVED/FIXED state, but for some reason the patch was not committed to the 3.2/3.3 branches. Can somebody please take a look at this? -- What |Removed |Added ---------------------------------------------------------------------------- CC| |jakub at gcc dot gnu dot org http://gcc.gnu.org/bugzilla/show_bug.cgi?id=18402