diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 87a50cade54e0432ca631b6beddaf262b53f4d5a..982504b59828c2d216cfe86c0e4272a41d381edb 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,7 @@
+2005-06-11  David Edelsohn  <edelsohn@gnu.org>
+
+	* config/rs6000/rs6000.md (eq<mode>_compare): Restrict to Pmode.
+
 2005-06-11  Daniel Berlin  <dberlin@dberlin.org>
 
 	* lambda-code.c (replace_uses_equiv_to_x_with_y): Verify the step
diff --git a/gcc/config/rs6000/rs6000.md b/gcc/config/rs6000/rs6000.md
index ead5f03a3c41be6cbad268142103e8eab992d686..6b72b56072aac9e96e315713cd1d86852cb03e9b 100644
--- a/gcc/config/rs6000/rs6000.md
+++ b/gcc/config/rs6000/rs6000.md
@@ -11506,23 +11506,23 @@
 (define_insn_and_split "*eq<mode>_compare"
   [(set (match_operand:CC 5 "cc_reg_operand" "=y")
 	(compare:CC
-	 (eq:GPR (match_operand:GPR 1 "gpc_reg_operand" "=r")
-		 (match_operand:GPR 2 "scc_eq_operand" "<scc_eq_op2>"))
+	 (eq:P (match_operand:P 1 "gpc_reg_operand" "=r")
+	       (match_operand:P 2 "scc_eq_operand" "<scc_eq_op2>"))
 	 (const_int 0)))
-   (set (match_operand:GPR 0 "gpc_reg_operand" "=r")
-	(eq:GPR (match_dup 1) (match_dup 2)))
-   (clobber (match_scratch:GPR 3 "=r"))
-   (clobber (match_scratch:GPR 4 "=r"))]
+   (set (match_operand:P 0 "gpc_reg_operand" "=r")
+	(eq:P (match_dup 1) (match_dup 2)))
+   (clobber (match_scratch:P 3 "=r"))
+   (clobber (match_scratch:P 4 "=r"))]
   ""
   "#"
   "reload_completed"
   [(set (match_dup 3)
-	(clz:GPR (match_dup 4)))
+	(clz:P (match_dup 4)))
    (parallel [(set (match_dup 5)
-		   (compare:CC (lshiftrt:GPR (match_dup 3) (match_dup 6))
+		   (compare:CC (lshiftrt:P (match_dup 3) (match_dup 6))
 			       (const_int 0)))
 	      (set (match_dup 0)
-		   (lshiftrt:GPR (match_dup 3) (match_dup 6)))])]
+		   (lshiftrt:P (match_dup 3) (match_dup 6)))])]
   {
     if (GET_CODE (operands[2]) != CONST_INT || INTVAL (operands[2]) != 0)
       {