Index: config/ia64/ia64.c
===================================================================
--- config/ia64/ia64.c	(revision 164824)
+++ config/ia64/ia64.c	(working copy)
@@ -5874,15 +5874,14 @@ rws_access_regno (int regno, struct reg_
 	  break;
 
 	case 1:
-	  /* The register has been written via a predicate.  If this is
-	     not a complementary predicate, then we need a barrier.  */
-	  /* ??? This assumes that P and P+1 are always complementary
-	     predicates for P even.  */
+	  /* The register has been written via a predicate.  Treat
+	     it like a unconditional write and do not try to check
+	     for complementary pred reg in earlier write.  */
 	  if (flags.is_and && rws_sum[regno].written_by_and)
 	    ;
 	  else if (flags.is_or && rws_sum[regno].written_by_or)
 	    ;
-	  else if ((rws_sum[regno].first_pred ^ 1) != pred)
+	  else
 	    need_barrier = 1;
 	  if (!in_safe_group_barrier)
 	    rws_update (regno, flags, pred);
@@ -5943,12 +5942,9 @@ rws_access_regno (int regno, struct reg_
 	  break;
 
 	case 1:
-	  /* The register has been written via a predicate.  If this is
-	     not a complementary predicate, then we need a barrier.  */
-	  /* ??? This assumes that P and P+1 are always complementary
-	     predicates for P even.  */
-	  if ((rws_sum[regno].first_pred ^ 1) != pred)
-	    need_barrier = 1;
+	  /* The register has been written via a predicate, assume we
+	     need a barrier (don't check for complementary regs).  */
+	  need_barrier = 1;
 	  break;
 
 	case 2:




========= Test case change:



2010-10-04  Steve Ellcey  <sje@cup.hp.com>

	* gcc.c-torture/compile/920625-1.c: Remove dg-prune-output lines.


Index: gcc.c-torture/compile/920625-1.c
===================================================================
--- gcc.c-torture/compile/920625-1.c	(revision 164824)
+++ gcc.c-torture/compile/920625-1.c	(working copy)
@@ -1,22 +1,3 @@
-/* The problem on IA-64 is that if-conversion creates a sequence
-
-	 (p17) cmp.geu p6, p7 = r48, r15
-	 (p16) cmp.gtu p6, p7 = r48, r15
-
-   where p16 and p17 are complemenary, but the assembler DV validation
-   code doesn't recognize that p6 and p7 are complimentary, and so
-   we end up warning for a later use
-
-	 (p6) addl r14 = 1, r0
-	 (p7) mov r14 = r0
-
-   that appears to be a WAW violation. */
-
-/* { dg-prune-output "Assembler messages" } */
-/* { dg-prune-output "violate\[^\n\]*dependency" } */
-/* { dg-prune-output "first path encountering" } */
-/* { dg-prune-output "location of the conflicting" } */
-
 typedef unsigned long int unsigned_word;
 typedef signed long int signed_word;
 typedef unsigned_word word;
