From 3d07b7cde4aef048de67122432e605abb242ae70 Mon Sep 17 00:00:00 2001
From: Le-Chun Wu <lcwu@google.com>
Date: Fri, 23 Jul 2010 22:20:45 +0000
Subject: [PATCH] Fix violations of self-assignment check in GCC source.

From-SVN: r162492
---
 gcc/ChangeLog          | 10 ++++++++++
 gcc/config/i386/i386.c |  2 +-
 gcc/dbxout.c           |  7 +++++--
 gcc/omega.c            |  1 -
 gcc/tree-ssa-ccp.c     |  5 ++---
 5 files changed, 18 insertions(+), 7 deletions(-)

diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index a616cde006ef..3b9aa266bb2c 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,13 @@
+2010-07-23  Le-Chun Wu  <lcwu@google.com>
+
+	* omega.c (omega_eliminate_redundant): Remove a self-assign statement.
+	* tree-ssa-ccp.c (ccp_lattice_meet): Remove a self-assign statement
+	and an unnecessary assignment.
+	* dbxout.c (DEBUGGER_ARG_OFFSET): Change OFFSET to OFFSET+0 to avoid
+	self-assign warning.
+	* config/i386/i386.c (ix86_vectorize_builtin_vec_perm): Remove
+	unnecessary self-init.
+
 2010-07-23  Richard Guenther  <rguenther@suse.de>
 
 	PR lto/43071
diff --git a/gcc/config/i386/i386.c b/gcc/config/i386/i386.c
index 596a6db22adf..dbb89497321d 100644
--- a/gcc/config/i386/i386.c
+++ b/gcc/config/i386/i386.c
@@ -30012,7 +30012,7 @@ ix86_vectorize_builtin_vec_perm (tree vec_type, tree *mask_type)
   tree itype = TREE_TYPE (vec_type);
   bool u = TYPE_UNSIGNED (itype);
   enum machine_mode vmode = TYPE_MODE (vec_type);
-  enum ix86_builtins fcode = fcode; /* Silence bogus warning.  */
+  enum ix86_builtins fcode;
   bool ok = TARGET_SSE2;
 
   switch (vmode)
diff --git a/gcc/dbxout.c b/gcc/dbxout.c
index 7a66a78e8caf..2de3fcbda369 100644
--- a/gcc/dbxout.c
+++ b/gcc/dbxout.c
@@ -289,9 +289,12 @@ static const char *base_input_file;
 #endif
 
 /* A C expression for the integer offset value of an argument (N_PSYM)
-   having address X (an RTX).  The nominal offset is OFFSET.  */
+   having address X (an RTX).  The nominal offset is OFFSET.
+   Note that we use OFFSET + 0 here to avoid the self-assign warning
+   when the macro is called in a context like
+   number = DEBUGGER_ARG_OFFSET(number, X)  */
 #ifndef DEBUGGER_ARG_OFFSET
-#define DEBUGGER_ARG_OFFSET(OFFSET, X) (OFFSET)
+#define DEBUGGER_ARG_OFFSET(OFFSET, X) (OFFSET + 0)
 #endif
 
 /* This obstack holds the stab string currently being constructed.  We
diff --git a/gcc/omega.c b/gcc/omega.c
index d218c0e39b6c..fff3a299c0db 100644
--- a/gcc/omega.c
+++ b/gcc/omega.c
@@ -2213,7 +2213,6 @@ omega_eliminate_redundant (omega_pb pb, bool expensive)
 			  || pb->geqs[e3].color == omega_red)
 			goto nextE3;
 
-		      alpha3 = alpha3;
 		      /* verify alpha1*v1+alpha2*v2 = alpha3*v3 */
 		      for (k = pb->num_vars; k >= 1; k--)
 			if (alpha3 * pb->geqs[e3].coef[k]
diff --git a/gcc/tree-ssa-ccp.c b/gcc/tree-ssa-ccp.c
index 89ef5b3a7e41..27e09396860e 100644
--- a/gcc/tree-ssa-ccp.c
+++ b/gcc/tree-ssa-ccp.c
@@ -730,9 +730,8 @@ ccp_lattice_meet (prop_value_t *val1, prop_value_t *val2)
 	 Ci M Cj = VARYING	if (i != j)
 
          If these two values come from memory stores, make sure that
-	 they come from the same memory reference.  */
-      val1->lattice_val = CONSTANT;
-      val1->value = val1->value;
+	 they come from the same memory reference.
+         Nothing to do.  VAL1 already contains the value we want.  */
     }
   else
     {
-- 
GitLab