aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorKenneth Zadeck <zadeck@naturalbridge.com>2005-12-19 19:41:35 +0000
committerKenneth Zadeck <zadeck@gcc.gnu.org>2005-12-19 19:41:35 +0000
commit0bae56c4603aa45147cac966e83d264df65847e8 (patch)
treec46c9b5308e74e071df21b1b6676596c08d9ecfe /gcc
parent780e37d3707df53431bda25acc03a29dd9ae9a0b (diff)
downloadgcc-0bae56c4603aa45147cac966e83d264df65847e8.zip
gcc-0bae56c4603aa45147cac966e83d264df65847e8.tar.gz
gcc-0bae56c4603aa45147cac966e83d264df65847e8.tar.bz2
df.c (df_analyze_1, [...]): Corrected basic block number calculations for changes in entry and exit numbering.
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 Kenneth Zadeck <zadeck@naturalbridge.com> * gcc.c-torture/compile/pr25483 : New test. From-SVN: r108805
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog5
-rw-r--r--gcc/df.c28
-rw-r--r--gcc/testsuite/ChangeLog4
-rw-r--r--gcc/testsuite/gcc.c-torture/compile/pr25483.c15
4 files changed, 38 insertions, 14 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 9780498..aeddaca 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -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
diff --git a/gcc/df.c b/gcc/df.c
index bae8e57..f2f57499 100644
--- 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];
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index d4bcb6a..91b7f63 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -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
index 0000000..c5b7ed81
--- /dev/null
+++ b/gcc/testsuite/gcc.c-torture/compile/pr25483.c
@@ -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);
+ }
+}