diff options
author | Richard Biener <rguenther@suse.de> | 2021-04-29 08:32:00 +0200 |
---|---|---|
committer | Richard Biener <rguenther@suse.de> | 2021-04-29 10:02:59 +0200 |
commit | c57a8aea0c3ab8394f7dbfa417ee27b4613f63b7 (patch) | |
tree | 4d498411bb34de7ba9c037734e507cabab92b093 /gcc/cp/semantics.c | |
parent | 2e8ee0a364ac7dc9959b1caac7d7145afedd1eaa (diff) | |
download | gcc-c57a8aea0c3ab8394f7dbfa417ee27b4613f63b7.zip gcc-c57a8aea0c3ab8394f7dbfa417ee27b4613f63b7.tar.gz gcc-c57a8aea0c3ab8394f7dbfa417ee27b4613f63b7.tar.bz2 |
middle-end/38474 - speedup PTA constraint solving
In testcases like PR38474 and PR99912 we're seeing very slow
PTA solving. One can observe an excessive amount of forwarding,
mostly during sd constraint solving. The way we solve the graph
does not avoid forwarding the same bits through multiple paths,
and especially when such alternate path involves ESCAPED as
intermediate this causes the ESCAPED solution to be expanded
in receivers.
The following adds heuristic to add_graph_edge which adds
forwarding edges but also guards the initial solution forwarding
(which is the expensive part) to detect the case of ESCAPED
receiving the same set and the destination already containing
ESCAPED.
This speeds up the PTA solving process by more than 50%.
2021-04-29 Richard Biener <rguenther@suse.de>
PR middle-end/38474
* tree-ssa-structalias.c (add_graph_edge): Avoid direct
forwarding when indirect forwarding through ESCAPED
alread happens.
Diffstat (limited to 'gcc/cp/semantics.c')
0 files changed, 0 insertions, 0 deletions