This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[PATCH]: Fix PR tree-optimization/18611


The only use of dataflow_set_a_op_b was always passing rslt and op1 as the same, which got passed to bitmap_ior/bitmap_and, but bitmap_and/bitmap_ior don't allow dst and op1 to be the same anymore.

Thus, i've changed dataflow_set_a_op_b to make explicit that the result and the first operation are the same, and changed it to use bitmap_ior_into/bitmap_and_into.

Bootstrapped and regtested on i686-pc-linux-gnu

Okay for mainline?


2004-11-22 Daniel Berlin <dberlin@dberlin.org>


	* df.c (dataflow_set_a_op_b): Remove rslt parameter, since it's
	always the same as op1.  Use bitmap_ior_into and bitmap_and_into.
	Add comment to function.
Index: df.c
===================================================================
RCS file: /cvs/gcc/gcc/gcc/df.c,v
retrieving revision 1.71.2.3
diff -u -p -r1.71.2.3 df.c
--- df.c	18 Nov 2004 03:12:31 -0000	1.71.2.3
+++ df.c	22 Nov 2004 17:02:36 -0000
@@ -3723,10 +3723,13 @@ debug_df_chain (struct df_link *link)
 }


+/* Perform the set operation OP1 OP OP2, using set representation REPR, and + storing the result in OP1. */ + static void dataflow_set_a_op_b (enum set_representation repr, enum df_confluence_op op, - void *rslt, void *op1, void *op2) + void *op1, void *op2) { switch (repr) { @@ -3734,11 +3737,11 @@ dataflow_set_a_op_b (enum set_representa switch (op) { case DF_UNION: - sbitmap_a_or_b (rslt, op1, op2); + sbitmap_a_or_b (op1, op1, op2); break;

 	case DF_INTERSECTION:
-	  sbitmap_a_and_b (rslt, op1, op2);
+	  sbitmap_a_and_b (op1, op1, op2);
 	  break;

     	default:
@@ -3750,11 +3753,11 @@ dataflow_set_a_op_b (enum set_representa
       switch (op)
 	{
 	case DF_UNION:
-	  bitmap_ior (rslt, op1, op2);
+	  bitmap_ior_into (op1, op2);
 	  break;

 	case DF_INTERSECTION:
-	  bitmap_and (rslt, op1, op2);
+	  bitmap_and_into (op1, op2);
 	  break;

     	default:
@@ -3815,7 +3818,7 @@ hybrid_search (basic_block bb, struct da
 	    continue;							\
 									\
 	  dataflow_set_a_op_b (dataflow->repr, dataflow->conf_op,	\
-			       IN_SET[i], IN_SET[i],			\
+			       IN_SET[i],      			        \
 			       OUT_SET[e->E_ANTI_BB->index]);		\
 	}								\
 									\


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]