[Attributor] Regularly clear dependences to remove spurious ones
authorJohannes Doerfert <jdoerfert@anl.gov>
Wed, 28 Aug 2019 16:58:52 +0000 (16:58 +0000)
committerJohannes Doerfert <jdoerfert@anl.gov>
Wed, 28 Aug 2019 16:58:52 +0000 (16:58 +0000)
commitf7ca0fe1c86a55a6c7b76809ed339002ec9c08d3
tree8c19172141bfa1f6487506d3d9e91e6b8998fe80
parent8f85685b5cf57eddea11fa444503ade220c724e4
[Attributor] Regularly clear dependences to remove spurious ones

As dependences between abstract attributes can become stale, e.g., if
one was sufficient to imply another one at some point but it has since
been wakened to the point it is not usable for the formerly implied one.
To weed out spurious dependences, and thereby eliminate unneeded
updates, we introduce an option to determine how often the dependence
cache is cleared and recomputed during the fixpoint iteration.

Note that the initial value was determined such that we see a positive
result on our tests.

Differential Revision: https://reviews.llvm.org/D63315

llvm-svn: 370230
llvm/include/llvm/Transforms/IPO/Attributor.h
llvm/lib/Transforms/IPO/Attributor.cpp
llvm/test/Transforms/FunctionAttrs/align.ll
llvm/test/Transforms/FunctionAttrs/nonnull.ll
llvm/test/Transforms/FunctionAttrs/noreturn_sync.ll