Your Jan 8th, 2001 rtlanal.c:note_stores change

David S. Miller davem@redhat.com
Mon Apr 15 16:48:00 GMT 2002


   From: Richard Henderson <rth@redhat.com>
   Date: Mon, 15 Apr 2002 14:32:57 -0700

[ gcc-patches, please see:

  http://gcc.gnu.org/ml/gcc-bugs/2002-04/msg00838.html 

  for the beginning of this thread leading up to change below. ]

   On Mon, Apr 15, 2002 at 05:05:48PM -0400, Richard Kenner wrote:
   > My recollection, though, is that it had to do with the modes: either
   > something got confused about two things of different modes being
   > assigned the same value or the fact that it was a non-const VOIDmode
   > value bothered somebody.
   
   I do recall a bug concerning something bitching about a CALL pattern
   with a VOIDmode value.  I seem to remember that being fixed by
   special-casing calls.  The exact reference eludes me for the moment.
   
   The only thing to do here isrevert the patch and wait for whatever
   the old problem was to resurface.

Done:

2002-04-15  David S. Miller  <davem@redhat.com>

	* rtlanal.c (note_stores): Don't present PARALLEL SET_DESTs
	as being CLOBBERed.

--- rtlanal.c.~1~	Wed Apr 10 19:54:40 2002
+++ rtlanal.c	Mon Apr 15 05:36:27 2002
@@ -1542,17 +1542,12 @@ note_stores (x, fun, data)
 	dest = XEXP (dest, 0);
 
       /* If we have a PARALLEL, SET_DEST is a list of EXPR_LIST expressions,
-	 each of whose first operand is a register.  We can't know what
-	 precisely is being set in these cases, so make up a CLOBBER to pass
-	 to the function.  */
+	 each of whose first operand is a register.  */
       if (GET_CODE (dest) == PARALLEL)
 	{
 	  for (i = XVECLEN (dest, 0) - 1; i >= 0; i--)
 	    if (XEXP (XVECEXP (dest, 0, i), 0) != 0)
-	      (*fun) (XEXP (XVECEXP (dest, 0, i), 0),
-		      gen_rtx_CLOBBER (VOIDmode,
-				       XEXP (XVECEXP (dest, 0, i), 0)),
-		      data);
+	      (*fun) (XEXP (XVECEXP (dest, 0, i), 0), x, data);
 	}
       else
 	(*fun) (dest, x, data);



More information about the Gcc-bugs mailing list