aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorRichard Biener <rguenther@suse.de>2023-03-14 14:39:32 +0100
committerRichard Biener <rguenther@suse.de>2023-04-19 14:14:14 +0200
commit7838574b5aca179e347eb972880ea8376a2cc6b5 (patch)
tree41ffdce39e021dc863a09c6422b8c44cd75d2f97 /gcc
parenta243ce2a52a6c62bc0d6be0b756a85dd9c1bceb7 (diff)
downloadgcc-7838574b5aca179e347eb972880ea8376a2cc6b5.zip
gcc-7838574b5aca179e347eb972880ea8376a2cc6b5.tar.gz
gcc-7838574b5aca179e347eb972880ea8376a2cc6b5.tar.bz2
Avoid non-unified nodes on the topological sorting for PTA solving
Since we do not update successor edges when merging nodes we have to deal with this in the users. The following avoids putting those on the topo order vector. * tree-ssa-structalias.cc (topo_visit): Look at the real destination of edges.
Diffstat (limited to 'gcc')
-rw-r--r--gcc/tree-ssa-structalias.cc5
1 files changed, 3 insertions, 2 deletions
diff --git a/gcc/tree-ssa-structalias.cc b/gcc/tree-ssa-structalias.cc
index fa3a2e4..8976cc9 100644
--- a/gcc/tree-ssa-structalias.cc
+++ b/gcc/tree-ssa-structalias.cc
@@ -1632,8 +1632,9 @@ topo_visit (constraint_graph_t graph, struct topo_info *ti,
if (graph->succs[n])
EXECUTE_IF_SET_IN_BITMAP (graph->succs[n], 0, j, bi)
{
- if (!bitmap_bit_p (ti->visited, j))
- topo_visit (graph, ti, j);
+ unsigned k = find (j);
+ if (!bitmap_bit_p (ti->visited, k))
+ topo_visit (graph, ti, k);
}
ti->topo_order.safe_push (n);