------- 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

Reply via email to