* [PATCH] tree-optimization/98024 - fix rnflow regression
@ 2020-11-27 11:50 Richard Biener
0 siblings, 0 replies; only message in thread
From: Richard Biener @ 2020-11-27 11:50 UTC (permalink / raw)
To: gcc-patches
The change to make PRE insertion iterate less had a typo in checking
successors RPO state. Fixing this exposes that regular PRE insertion
when facing a value that is the same on all edges inserts an
assignment in place of a PHI node but fails to set up things so that
this insertion is not repeated (it correctly does not return
'new_stuff'). But with the new iteration scheme this causes us
to repeatedly insert such assignment and change AVAIL_OUT over to
the newly inserted expression. The fix is to treat this as PHI
and insert into PHI_GEN, avoiding repetitive insertion.
Bootstrapped and tested on x86_64-unknown-linux-gnu, pushed.
2020-11-27 Richard Biener <rguenther@suse.de>
PR tree-optimization/98024
* tree-ssa-pre.c (insert): Fix successor RPO order check.
(do_pre_regular_insertion): When inserting an assignment
in place of an all-same-value PHI still record that into
PHI_GEN.
---
gcc/tree-ssa-pre.c | 6 ++++--
1 file changed, 4 insertions(+), 2 deletions(-)
diff --git a/gcc/tree-ssa-pre.c b/gcc/tree-ssa-pre.c
index e25cec7ffa1..a17a09af990 100644
--- a/gcc/tree-ssa-pre.c
+++ b/gcc/tree-ssa-pre.c
@@ -3471,6 +3471,7 @@ do_pre_regular_insertion (basic_block block, basic_block dom,
add_to_value (val, newe);
bitmap_value_replace_in_set (AVAIL_OUT (block), newe);
bitmap_insert_into_set (NEW_SETS (block), newe);
+ bitmap_insert_into_set (PHI_GEN (block), newe);
}
}
}
@@ -3808,13 +3809,14 @@ insert (void)
|= bitmap_value_replace_in_set (AVAIL_OUT (block), expr);
}
/* We need to iterate if AVAIL_OUT of an already processed
- block source. */
+ block source changed. */
if (avail_out_changed && !changed)
{
edge_iterator ei;
edge e;
FOR_EACH_EDGE (e, ei, block->succs)
- if (bb_rpo[e->src->index] < idx)
+ if (e->dest->index != EXIT_BLOCK
+ && bb_rpo[e->dest->index] < idx)
changed = true;
}
--
2.26.2
^ permalink raw reply [flat|nested] only message in thread
only message in thread, other threads:[~2020-11-27 11:50 UTC | newest]
Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-11-27 11:50 [PATCH] tree-optimization/98024 - fix rnflow regression Richard Biener
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).