diff options
author | Richard Sandiford <richard.sandiford@arm.com> | 2019-12-06 10:31:44 +0000 |
---|---|---|
committer | Richard Sandiford <rsandifo@gcc.gnu.org> | 2019-12-06 10:31:44 +0000 |
commit | ea1ff9e46c7ec5e49ec671616cfcf405ef665054 (patch) | |
tree | 4a101e644378f764e68b9aeb0c38993ec6c4d243 /gcc/fortran/trans-array.c | |
parent | 28fabd43d9d249134244eb9d7815917c7ae44b64 (diff) | |
download | gcc-ea1ff9e46c7ec5e49ec671616cfcf405ef665054.zip gcc-ea1ff9e46c7ec5e49ec671616cfcf405ef665054.tar.gz gcc-ea1ff9e46c7ec5e49ec671616cfcf405ef665054.tar.bz2 |
Avoid quadratic behaviour in prune_runtime_alias_test_list
prune_runtime_alias_test_list used ordered_remove to remove a merged
alias pair, which made the function quadratic when many aliases could
be removed.
I had a testcase in which these memmoves accounted for an impressive
85% of compile time. The fact that we had so many probably shows
a deeper problem, but still, it's easy to remove as we go.
2019-12-06 Richard Sandiford <richard.sandiford@arm.com>
gcc/
* tree-data-ref.c (prune_runtime_alias_test_list): Exit early
for empty vectors. Avoid using ordered_remove and instead
shuffle the vector as we go.
From-SVN: r279038
Diffstat (limited to 'gcc/fortran/trans-array.c')
0 files changed, 0 insertions, 0 deletions