This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
[PATCH]: Fix PR tree-optimization/18611
- From: Daniel Berlin <dberlin at dberlin dot org>
- To: gcc-patches at gcc dot gnu dot org
- Date: Mon, 22 Nov 2004 12:06:37 -0500 (EST)
- Subject: [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]); \
} \
\