2005-12-19 Kenneth Zadeck <zadeck@naturalbridge.com>
authorzadeck <zadeck@138bc75d-0d04-0410-961f-82ee72b054a4>
Mon, 19 Dec 2005 19:41:35 +0000 (19:41 +0000)
committerzadeck <zadeck@138bc75d-0d04-0410-961f-82ee72b054a4>
Mon, 19 Dec 2005 19:41:35 +0000 (19:41 +0000)
* df.c (df_analyze_1, df_analyze_subcfg, iterative_dataflow):
Corrected basic block number calculations for changes in entry and
exit numbering.
2005-12-19  Kenneth Zadeck <zadeck@naturalbridge.com>

* gcc.c-torture/compile/pr25483 : New test.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@108805 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/ChangeLog
gcc/df.c
gcc/testsuite/ChangeLog
gcc/testsuite/gcc.c-torture/compile/pr25483.c [new file with mode: 0644]

index 9780498..aeddaca 100644 (file)
@@ -1,3 +1,8 @@
+2005-12-19  Kenneth Zadeck <zadeck@naturalbridge.com>
+       * df.c (df_analyze_1, df_analyze_subcfg, iterative_dataflow):
+       Corrected basic block number calculations for changes in entry and
+       exit numbering.
+       
 2005-12-19  Zdenek Dvorak <dvorakz@suse.cz>
 
        * tree-flow.h (struct var_ann_d): Change type of
index bae8e57..f2f5749 100644 (file)
--- a/gcc/df.c
+++ b/gcc/df.c
@@ -1992,9 +1992,9 @@ df_analyze_1 (struct df *df, bitmap blocks, int flags, int update)
       df_reg_use_chain_create (df, blocks, false);
     }
 
-  df->dfs_order = xmalloc (sizeof (int) * n_basic_blocks);
-  df->rc_order = xmalloc (sizeof (int) * n_basic_blocks);
-  df->rts_order = xmalloc (sizeof (int) * n_basic_blocks);
+  df->dfs_order = xmalloc (sizeof (int) * n_basic_blocks - NUM_FIXED_BLOCKS);
+  df->rc_order = xmalloc (sizeof (int) * n_basic_blocks - NUM_FIXED_BLOCKS);
+  df->rts_order = xmalloc (sizeof (int) * n_basic_blocks - NUM_FIXED_BLOCKS);
 
   flow_depth_first_order_compute (df->dfs_order, df->rc_order);
   flow_reverse_top_sort_order_compute (df->rts_order);
@@ -2019,7 +2019,7 @@ df_analyze_1 (struct df *df, bitmap blocks, int flags, int update)
       dflow.dir = DF_FORWARD;
       dflow.conf_op = DF_UNION;
       dflow.transfun = df_rd_transfer_function;
-      dflow.n_blocks = n_basic_blocks;
+      dflow.n_blocks = n_basic_blocks - NUM_FIXED_BLOCKS;
       dflow.order = df->rc_order;
       dflow.data = NULL;
 
@@ -2062,7 +2062,7 @@ df_analyze_1 (struct df *df, bitmap blocks, int flags, int update)
       dflow.dir = DF_BACKWARD;
       dflow.conf_op = DF_UNION;
       dflow.transfun = df_ru_transfer_function;
-      dflow.n_blocks = n_basic_blocks;
+      dflow.n_blocks = n_basic_blocks - NUM_FIXED_BLOCKS;
       dflow.order = df->rts_order;
       dflow.data = NULL;
 
@@ -2108,7 +2108,7 @@ df_analyze_1 (struct df *df, bitmap blocks, int flags, int update)
       dflow.dir = DF_BACKWARD;
       dflow.conf_op = DF_UNION;
       dflow.transfun = df_lr_transfer_function;
-      dflow.n_blocks = n_basic_blocks;
+      dflow.n_blocks = n_basic_blocks - NUM_FIXED_BLOCKS;
       dflow.order = df->rts_order;
       dflow.data = NULL;
 
@@ -2420,16 +2420,16 @@ df_analyze_subcfg (struct df *df, bitmap blocks, int flags)
       df_reg_use_chain_create (df, blocks, true);
     }
 
-  df->dfs_order = xmalloc (sizeof (int) * n_basic_blocks);
-  df->rc_order = xmalloc (sizeof (int) * n_basic_blocks);
-  df->rts_order = xmalloc (sizeof (int) * n_basic_blocks);
+  df->dfs_order = xmalloc (sizeof (int) * n_basic_blocks - NUM_FIXED_BLOCKS);
+  df->rc_order = xmalloc (sizeof (int) * n_basic_blocks - NUM_FIXED_BLOCKS);
+  df->rts_order = xmalloc (sizeof (int) * n_basic_blocks - NUM_FIXED_BLOCKS);
 
   flow_depth_first_order_compute (df->dfs_order, df->rc_order);
   flow_reverse_top_sort_order_compute (df->rts_order);
 
-  n_blocks = prune_to_subcfg (df->dfs_order, n_basic_blocks, blocks);
-  prune_to_subcfg (df->rc_order, n_basic_blocks, blocks);
-  prune_to_subcfg (df->rts_order, n_basic_blocks, blocks);
+  n_blocks = prune_to_subcfg (df->dfs_order, n_basic_blocks - NUM_FIXED_BLOCKS, blocks);
+  prune_to_subcfg (df->rc_order, n_basic_blocks - NUM_FIXED_BLOCKS, blocks);
+  prune_to_subcfg (df->rts_order, n_basic_blocks - NUM_FIXED_BLOCKS, blocks);
 
   dflow.in = xmalloc (sizeof (bitmap) * last_basic_block);
   dflow.out = xmalloc (sizeof (bitmap) * last_basic_block);
@@ -3925,7 +3925,7 @@ iterative_dataflow (struct dataflow *dataflow)
   sbitmap_zero (visited);
   sbitmap_zero (considered);
 
-  for (i = 0; i < dataflow->n_blocks - NUM_FIXED_BLOCKS; i++)
+  for (i = 0; i < dataflow->n_blocks; i++)
     {
       idx = dataflow->order[i];
       SET_BIT (pending, idx);
@@ -3940,7 +3940,7 @@ iterative_dataflow (struct dataflow *dataflow)
 
   while (1)
     {
-      for (i = 0; i < dataflow->n_blocks - NUM_FIXED_BLOCKS ; i++)
+      for (i = 0; i < dataflow->n_blocks; i++)
        {
          idx = dataflow->order[i];
 
index d4bcb6a..91b7f63 100644 (file)
@@ -1,3 +1,7 @@
+2005-12-19  Kenneth Zadeck <zadeck@naturalbridge.com>
+
+       * gcc.c-torture/compile/pr25483 : New test.
+
 2005-12-19  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
 
        PR c++/20552
diff --git a/gcc/testsuite/gcc.c-torture/compile/pr25483.c b/gcc/testsuite/gcc.c-torture/compile/pr25483.c
new file mode 100644 (file)
index 0000000..c5b7ed8
--- /dev/null
@@ -0,0 +1,15 @@
+/* { dg-options "-O -fmove-loop-invariants" } */
+
+static int mdct_win[8];
+int x;
+
+int
+decode_init (double d)
+{
+  int j;
+  for (j = 4; j; j--)
+    {
+      d *= 0.5;
+      mdct_win[j] = (d * 3);
+    }
+}