llvm-project/llvm/lib
Florian Hahn 2e58010208 [DSE] Do not scan users of memory terminators for further reads.
isMemTerminator checks if the current def is a memory terminator that
terminates the memory pointed to by DefLoc. We do not have to add any of
their users to the worklist, because the follow-on users cannot read the
memory in question.

This leads to more stores eliminated in the presence of lifetime calls.
Previously we added the users of those intrinsics to the worklist,
limiting elimination.

In terms of removed stores, this gives a nice boost on some benchmarks
(MultiSource/SPEC2000/SPEC2006 on X86 with -flto -O3):

Same hash: 205 (filtered out)
Remaining: 32
Metric: dse.NumFastStores

Program                                          base   patch   diff
 test-suite...000/197.parser/197.parser.test     4.00    8.00  100.0%
 test-suite...rolangs-C++/family/family.test     4.00    7.00  75.0%
 test-suite...marks/7zip/7zip-benchmark.test   1722.00 2189.00 27.1%
 test-suite...CFP2000/177.mesa/177.mesa.test    30.00   38.00  26.7%
 test-suite :: External/Nurbs/nurbs.test        44.00   49.00  11.4%
 test-suite...lications/sqlite3/sqlite3.test   115.00  128.00  11.3%
 test-suite...006/447.dealII/447.dealII.test   2715.00 3013.00 11.0%
 test-suite...ProxyApps-C++/CLAMR/CLAMR.test   237.00  261.00  10.1%
 test-suite...tions/lambda-0.1.3/lambda.test    40.00   44.00  10.0%
 test-suite...3.xalancbmk/483.xalancbmk.test   1366.00 1475.00  8.0%
 test-suite...abench/jpeg/jpeg-6a/cjpeg.test    13.00   14.00   7.7%
 test-suite...oxyApps-C++/miniFE/miniFE.test    43.00   46.00   7.0%
 test-suite...lications/ClamAV/clamscan.test   230.00  246.00   7.0%
 test-suite...006/450.soplex/450.soplex.test   284.00  299.00   5.3%
 test-suite...nsumer-jpeg/consumer-jpeg.test    21.00   22.00   4.8%
2020-10-20 16:55:22 +01:00
..
Analysis [InstSimplify] allow vector splats for icmp-of-neg folds 2020-10-20 09:24:36 -04:00
AsmParser [IR] Adds mustprogress as a LLVM IR attribute 2020-10-20 03:09:57 -04:00
BinaryFormat [WebAssembly] Added .tabletype to asm and multiple table support in obj files 2020-10-13 07:52:23 -07:00
Bitcode [IR] Adds mustprogress as a LLVM IR attribute 2020-10-20 03:09:57 -04:00
Bitstream [Bitstream] Use alignTo to make code more readable. NFC 2020-09-01 11:06:45 -07:00
CodeGen Introduce CfgTraits abstraction 2020-10-20 13:50:52 +02:00
DWARFLinker [llvm] Rename DwarfFile to DWARFFile to fix ODR violation (NFC) 2020-10-04 23:46:36 -07:00
DebugInfo [COFF][ARM] Fix CodeView for Windows on 32bit ARM targets. 2020-10-19 22:16:16 -07:00
Demangle
ExecutionEngine [ORC] Fix a missing include. 2020-10-19 12:13:55 -07:00
Extensions Remove unused variable(s) 2020-09-08 16:58:01 -07:00
FileCheck Reland [FileCheck] Move FileCheck implementation out of LLVMSupport into its own library 2020-09-01 14:59:28 +02:00
Frontend [OpenMP][OMPBuilder] Adding support for `omp single` 2020-08-16 01:15:16 -04:00
FuzzMutate
Fuzzer
IR Introduce CfgTraits abstraction 2020-10-20 13:50:52 +02:00
IRReader
InterfaceStub [lib/Object] - Refine interface of ELFFile<ELFT>. NFCI. 2020-09-15 11:38:31 +03:00
LTO Re-land [ThinLTO] Re-order modules for optimal multi-threaded processing 2020-10-13 21:54:15 -04:00
LineEditor
Linker Reapply "OpaquePtr: Add type to sret attribute" 2020-10-16 11:05:02 -04:00
MC [ARM][SchedModels] Convert IsPredicatedPred to MCSchedPredicate 2020-10-19 11:37:54 +03:00
MCA [ARM][SchedModels] Convert IsPredicatedPred to MCSchedPredicate 2020-10-19 11:37:54 +03:00
Object Fix various format specifier mismatches 2020-10-18 12:39:15 -04:00
ObjectYAML Reland "[yaml2obj][ELF] - Simplify the code that performs sections validation." 2020-10-20 16:25:33 +03:00
Option [NFC] Fix the signature and definition of findByPrefix 2020-09-11 12:38:28 +01:00
Passes [NPM] Port module-debuginfo pass to the new pass manager 2020-10-19 14:31:17 -07:00
ProfileData Fix various format specifier mismatches 2020-10-18 12:39:15 -04:00
Remarks BitstreamRemarkParser.h - remove unnecessary includes. NFCI. 2020-08-06 13:17:53 +01:00
Support Introduce CfgTraits abstraction 2020-10-20 13:50:52 +02:00
TableGen [TableGen] Enhance !empty and !size to handle strings and DAGs. 2020-10-19 09:22:20 -04:00
Target [AMDGPU] Remove unused declaration. NFC. 2020-10-20 16:31:42 +01:00
Testing [cmake] Make gtest include directories a part of the library interface 2020-08-27 15:35:57 +02:00
TextAPI [TextAPI] update DriverKit string value 2020-08-15 06:44:30 -07:00
ToolDrivers
Transforms [DSE] Do not scan users of memory terminators for further reads. 2020-10-20 16:55:22 +01:00
WindowsManifest [CMake] Simplify CMake handling for libxml2 2020-09-09 21:44:44 -07:00
XRay
CMakeLists.txt Reland [FileCheck] Move FileCheck implementation out of LLVMSupport into its own library 2020-09-01 14:59:28 +02:00
LLVMBuild.txt [elfabi] Move llvm-elfabi related code to InterfaceStub library 2020-08-13 11:51:44 -07:00