llvm-project/llvm/lib/Transforms/Instrumentation
Juneyoung Lee aca335955c [ValueTracking] Let analyses assume a value cannot be partially poison
Summary:
This is RFC for fixes in poison-related functions of ValueTracking.
These functions assume that a value can be poison bitwisely, but the semantics
of bitwise poison is not clear at the moment.
Allowing a value to have bitwise poison adds complexity to reasoning about
correctness of optimizations.

This patch makes the analysis functions simply assume that a value is
either fully poison or not, which has been used to understand the correctness
of a few previous optimizations.
The bitwise poison semantics seems to be only used by these functions as well.

In terms of implementation, using value-wise poison concept makes existing
functions do more precise analysis, which is what this patch contains.

Reviewers: spatel, lebedev.ri, jdoerfert, reames, nikic, nlopes, regehr

Reviewed By: nikic

Subscribers: fhahn, hiraditya, llvm-commits

Tags: #llvm

Differential Revision: https://reviews.llvm.org/D78503
2020-04-23 08:08:53 +09:00
..
AddressSanitizer.cpp [CallSite removal][Instrumentation] Use CallBase instead of CallSite in AddressSanitizer/DataFlowSanitizer/MemorySanitizer. NFC 2020-04-20 22:39:14 -07:00
BoundsChecking.cpp [IRBuilder] Fix unnecessary IRBuilder copies; NFC 2020-02-16 17:57:18 +01:00
CFGMST.h [llvm] Migrate llvm::make_unique to std::make_unique 2019-08-15 15:54:37 +00:00
CGProfile.cpp [llvm][NFC][CallSite] Remove CallSite from a few trivial locations 2020-04-22 08:39:21 -07:00
CMakeLists.txt [cmake] Explicitly mark libraries defined in lib/ as "Component Libraries" 2019-11-21 10:48:08 -08:00
ControlHeightReduction.cpp [CHR] Clean up some code and reduce copying. NFCI. 2020-04-13 23:11:20 +02:00
DataFlowSanitizer.cpp [CallSite removal][Instrumentation] Use CallBase instead of CallSite in AddressSanitizer/DataFlowSanitizer/MemorySanitizer. NFC 2020-04-20 22:39:14 -07:00
GCOVProfiling.cpp Revert "[compiler-rt] Add a critical section when flushing gcov counters" 2020-02-26 13:27:44 +01:00
HWAddressSanitizer.cpp [Alignment][NFC] Deprecate Align::None() 2020-01-24 12:53:58 +01:00
IndirectCallPromotion.cpp [llvm][NFC] Refactor uses of CallSite to CallBase - call promotion 2020-04-12 08:27:29 -07:00
InstrOrderFile.cpp [CallSite removal] Remove unneeded includes of CallSite.h. NFC 2020-04-22 00:07:13 -07:00
InstrProfiling.cpp Reland: [Coverage] Revise format to reduce binary size 2020-02-28 18:12:04 -08:00
Instrumentation.cpp Make llvm::StringRef to std::string conversions explicit. 2020-01-28 23:25:25 +01:00
LLVMBuild.txt Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
MaximumSpanningTree.h Use llvm::stable_sort 2019-04-23 14:51:27 +00:00
MemorySanitizer.cpp [CallSite removal][Instrumentation] Use CallBase instead of CallSite in AddressSanitizer/DataFlowSanitizer/MemorySanitizer. NFC 2020-04-20 22:39:14 -07:00
PGOInstrumentation.cpp [CFG/BasicBlock] Rename succ_const to const_succ. [NFC] 2020-03-25 12:40:55 -07:00
PGOMemOPSizeOpt.cpp [CallSite removal] Remove unneeded includes of CallSite.h. NFC 2020-04-22 00:07:13 -07:00
PoisonChecking.cpp [ValueTracking] Let analyses assume a value cannot be partially poison 2020-04-23 08:08:53 +09:00
SanitizerCoverage.cpp [llvm][NFC][CallSite] Remove CallSite from a few trivial locations 2020-04-22 08:39:21 -07:00
ThreadSanitizer.cpp [TSAN] Add optional support for distinguishing volatiles 2020-04-22 17:27:09 +02:00
ValueProfileCollector.cpp [PGO] Refactor Value Profiling into a plugin based oracle and create a well defined API for the plugins. 2019-10-03 14:20:50 +00:00
ValueProfileCollector.h [PGO] Refactor Value Profiling into a plugin based oracle and create a well defined API for the plugins. 2019-10-03 14:20:50 +00:00
ValueProfilePlugins.inc [llvm][NFC][CallSite] Remove CallSite from a few trivial locations 2020-04-22 08:39:21 -07:00