aboutsummaryrefslogtreecommitdiff
path: root/gcc/gimple-loop-jam.cc
diff options
context:
space:
mode:
authorRichard Biener <rguenther@suse.de>2022-08-04 09:21:24 +0200
committerRichard Biener <rguenther@suse.de>2022-08-04 15:01:38 +0200
commitd86d81a449c03641e079f23a2b3e1b2279a162fe (patch)
treecf1b9f0dfdb39bd8a84669ab365b80073fea6c95 /gcc/gimple-loop-jam.cc
parent07c7ee4d2d42f4728928556dbbe0700f9a13db90 (diff)
downloadgcc-d86d81a449c03641e079f23a2b3e1b2279a162fe.zip
gcc-d86d81a449c03641e079f23a2b3e1b2279a162fe.tar.gz
gcc-d86d81a449c03641e079f23a2b3e1b2279a162fe.tar.bz2
Backwards threader greedy search TLC
I've tried to understand how the greedy search works seeing the bitmap dances and the split into resolve_phi. I've summarized the intent of the algorithm as // For further greedy searching we want to remove interesting // names defined in BB but add ones on the PHI edges for the // respective edges. but the implementation differs in detail. In particular when there is more than one interesting PHI in BB it seems to only consider the first for translating defs across edges. It also only applies the loop crossing restriction when there is an interesting PHI. The following preserves the loop crossing restriction to the case of interesting PHIs but merges resolve_phi back, changing interesting as outlined with the intent above. It should get more threading cases when there are multiple interesting PHI defs in a block. It might be a bit faster due to less bitmap operations but in the end the main intent was to make what happens more obvious. * tree-ssa-threadbackward.cc (populate_worklist): Remove. (back_threader::resolve_phi): Likewise. (back_threader::find_paths_to_names): Rewrite greedy search.
Diffstat (limited to 'gcc/gimple-loop-jam.cc')
0 files changed, 0 insertions, 0 deletions