This patch makes CorrelatedValuePropagation preserve LazyValueInfo by adding LazyValueInfo::eraseValue & calling it whenever an instruction is erased.
Passes make check , test-suite, and SPECrate 2017.
Patch by aqjune (Juneyoung Lee)
Paths
| Differential D59349
Let CorrelatedValuePropagation preserve LazyValueInfo ClosedPublic Authored by aqjune on Mar 14 2019, 1:35 AM.
Details Summary This patch makes CorrelatedValuePropagation preserve LazyValueInfo by adding LazyValueInfo::eraseValue & calling it whenever an instruction is erased. Passes make check , test-suite, and SPECrate 2017. Patch by aqjune (Juneyoung Lee)
Diff Detail Event Timeline
Comment Actions Marking to remove from review queue. When replying to questions, please mark as ready for review. This revision now requires changes to proceed.Mar 15 2019, 11:51 AM aqjune added inline comments.
Comment Actions I couldn't find ready for review option from anywhere :( 'Add Action...' dropdown menu contains Plan Changes and Abandon Revision only. Comment Actions LGTM. This may be slightly imprecise - for instance, when we fold an operand which allows further LVI analysis - but the preservation is conservatively correct. p.s. Updating a review resets the status. This revision is now accepted and ready to land.Mar 26 2019, 6:13 PM Comment Actions Thanks! :) Closed by commit rL366942: Let CorrelatedValuePropagation preserve LazyValueInfo (authored by xbolva00). · Explain WhyJul 24 2019, 1:27 PM This revision was automatically updated to reflect the committed changes. Comment Actions
Commited, r366942.
Revision Contents
Diff 190573 include/llvm/Analysis/LazyValueInfo.h
lib/Analysis/LazyValueInfo.cpp
lib/Transforms/Scalar/CorrelatedValuePropagation.cpp
|
I'm confused why we need this. LVI uses ValueHandles, which should delete the entry from the cache once it's destroyed. Do you have a test case where that is not happening?