aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorRichard Biener <rguenther@suse.de>2020-07-20 15:58:19 +0200
committerRichard Biener <rguenther@suse.de>2020-07-20 16:00:48 +0200
commit57d4771b7c15db139043bf41a03b8abe01e11f18 (patch)
tree7cf00a9dc0c8ecf5dae198de70e5c359e92c3c60 /gcc
parenta926eeedf43512b8576855c0afa51ec29662fd5a (diff)
downloadgcc-57d4771b7c15db139043bf41a03b8abe01e11f18.zip
gcc-57d4771b7c15db139043bf41a03b8abe01e11f18.tar.gz
gcc-57d4771b7c15db139043bf41a03b8abe01e11f18.tar.bz2
remove write-only array in rev_post_order_and_mark_dfs_back_seme
This removes a write-only array in rev_post_order_and_mark_dfs_back_seme. 2020-07-20 Richard Biener <rguenther@suse.de> * cfganal.c (rev_post_order_and_mark_dfs_back_seme): Remove write-only post array.
Diffstat (limited to 'gcc')
-rw-r--r--gcc/cfganal.c13
1 files changed, 5 insertions, 8 deletions
diff --git a/gcc/cfganal.c b/gcc/cfganal.c
index 395b810..5c85ebe 100644
--- a/gcc/cfganal.c
+++ b/gcc/cfganal.c
@@ -1079,13 +1079,12 @@ rev_post_order_and_mark_dfs_back_seme (struct function *fn, edge entry,
a need to re-allocate. */
auto_vec<edge, 20> stack (2 * n_basic_blocks_for_fn (fn));
- int *pre = XNEWVEC (int, 2 * last_basic_block_for_fn (fn));
- int *post = pre + last_basic_block_for_fn (fn);
+ int *pre = XNEWVEC (int, last_basic_block_for_fn (fn));
/* BB flag to track nodes that have been visited. */
auto_bb_flag visited (fn);
- /* BB flag to track which nodes have post[] assigned to avoid
- zeroing post. */
+ /* BB flag to track which nodes have postorder visting completed. Used
+ for backedge marking. */
auto_bb_flag post_assigned (fn);
/* Push the first edge on to the stack. */
@@ -1133,7 +1132,6 @@ rev_post_order_and_mark_dfs_back_seme (struct function *fn, edge entry,
{
/* There are no successors for the DEST node so assign
its reverse completion number. */
- post[dest->index] = rev_post_order_num;
dest->flags |= post_assigned;
rev_post_order[rev_post_order_num] = dest->index;
rev_post_order_num++;
@@ -1142,16 +1140,15 @@ rev_post_order_and_mark_dfs_back_seme (struct function *fn, edge entry,
else
{
if (dest->flags & visited
+ && !(dest->flags & post_assigned)
&& src != entry->src
- && pre[src->index] >= pre[dest->index]
- && !(dest->flags & post_assigned))
+ && pre[src->index] >= pre[dest->index])
e->flags |= EDGE_DFS_BACK;
if (idx != 0 && stack[idx - 1]->src != src)
{
/* There are no more successors for the SRC node
so assign its reverse completion number. */
- post[src->index] = rev_post_order_num;
src->flags |= post_assigned;
rev_post_order[rev_post_order_num] = src->index;
rev_post_order_num++;