diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index a616cde006efc3e922fa238b1bd78020b2a5d428..3b9aa266bb2c6321bcabe58621605fb702cb0d0e 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 596a6db22adf99a845f515342c42006eea541140..dbb89497321d5e3c3afa3d5783dc071831147b07 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 7a66a78e8caf01c041b75ce66adf913232cb64b8..2de3fcbda3693a6d909785fa6f3f677ad6509310 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 d218c0e39b6c87810d63e3bfb639804e1e81ff95..fff3a299c0dbc26ebc994ac9f7bb1a936c921e54 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 89ef5b3a7e41b7c7238da5de9c86837c81296eca..27e09396860edf5bf43797f184f9750227cc9aed 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
     {