mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-11-25 04:02:41 +01:00
8724378ec0
inter-analysis dependencies) to use the new invalidation infrastructure. This teaches it to invalidate itself when any of the peer function AA results that it uses become invalid. We do this by just tracking the originating IDs. I've kept it in a somewhat clunky API since some users of AAResults are outside the new PM right now. We can clean this API up if/when those users go away. Secondly, it uses the registration on the outer analysis manager proxy to trigger deferred invalidation when a module analysis result becomes invalid. I've included test cases that specifically try to trigger use-after-free in both of these cases and they would crash or hang pretty horribly for me even without ASan. Now they work nicely. The `InvalidateAnalysis` utility pass required some tweaking to be useful in this context and it still is pretty garbage. I'd like to switch it back to the previous implementation and teach the explicit invalidate method on the AnalysisManager to take care of correctly triggering indirect invalidation, but I wanted to go ahead and send this out so folks could see how all of this stuff works together in practice. And, you know, that it does actually work. =] Differential Revision: https://reviews.llvm.org/D27205 llvm-svn: 290595 |
||
---|---|---|
.. | ||
Inputs | ||
X86 | ||
2002-01-31-CallGraph.ll | ||
2002-02-24-InlineBrokePHINodes.ll | ||
2002-03-11-ConstPropCrash.ll | ||
2003-02-19-LoopInfoNestingBug.ll | ||
2004-08-16-PackedConstantInlineStore.ll | ||
2004-08-16-PackedGlobalConstant.ll | ||
2004-08-16-PackedSelect.ll | ||
2004-08-16-PackedSimple.ll | ||
2004-08-20-PackedControlFlow.ll | ||
2006-02-05-PassManager.ll | ||
2007-04-24-eliminate-mostly-empty-blocks.ll | ||
2007-06-05-PassID.ll | ||
2007-06-28-PassManager.ll | ||
2007-09-10-PassManager.ll | ||
2008-02-14-PassManager.ll | ||
2008-06-04-FieldSizeInPacked.ll | ||
2008-10-06-RemoveDeadPass.ll | ||
2008-10-15-MissingSpace.ll | ||
2009-03-31-CallGraph.ll | ||
2009-06-05-no-implicit-float.ll | ||
2009-09-14-function-elements.ll | ||
2010-05-06-Printer.ll | ||
attribute-comment.ll | ||
bcanalyzer-block-info.txt | ||
can-execute.txt | ||
cgscc-iterate-function-mutation.ll | ||
cgscc-observe-devirt.ll | ||
cleanup-lcssa.ll | ||
close-stderr.ll | ||
constant-fold-gep-address-spaces.ll | ||
constant-fold-gep.ll | ||
extract-alias.ll | ||
extract-linkonce.ll | ||
extract-weak-odr.ll | ||
extract.ll | ||
FileCheck-space.txt | ||
invalid-commandline-option.ll | ||
lint.ll | ||
lit-quoting.txt | ||
lit-unicode.txt | ||
llvm-nm-without-aliases.ll | ||
loop-pass-ordering.ll | ||
new-pass-manager.ll | ||
opt-bisect-helper.py | ||
opt-bisect-legacy-pass-manager.ll | ||
opt-override-mcpu-mattr.ll | ||
opt-twice.ll | ||
optimization-remarks-inline.ll | ||
optimize-options.ll | ||
pass-pipeline-parsing.ll | ||
pass-pipelines.ll | ||
pipefail.txt | ||
ResponseFile.ll | ||
spir_cc.ll | ||
statistic.ll | ||
umask.ll |