llvm-project/llvm/unittests/Analysis
Eli Friedman 9c4baf5101 [ScalarEvolution] Strictly enforce pointer/int type rules.
Rules:

1. SCEVUnknown is a pointer if and only if the LLVM IR value is a
   pointer.
2. SCEVPtrToInt is never a pointer.
3. If any other SCEV expression has no pointer operands, the result is
   an integer.
4. If a SCEVAddExpr has exactly one pointer operand, the result is a
   pointer.
5. If a SCEVAddRecExpr's first operand is a pointer, and it has no other
   pointer operands, the result is a pointer.
6. If every operand of a SCEVMinMaxExpr is a pointer, the result is a
   pointer.
7. Otherwise, the SCEV expression is invalid.

I'm not sure how useful rule 6 is in practice.  If we exclude it, we can
guarantee that ScalarEvolution::getPointerBase always returns a
SCEVUnknown, which might be a helpful property. Anyway, I'll leave that
for a followup.

This is basically mop-up at this point; all the changes with significant
functional effects have landed.  Some of the remaining changes could be
split off, but I don't see much point.

Differential Revision: https://reviews.llvm.org/D105510
2021-07-09 17:29:26 -07:00
..
Inputs/ir2native_x86_64_model Reapply "[llvm] Native size estimator for training -Oz inliner" 2020-07-13 16:26:26 -07:00
AliasAnalysisTest.cpp [AA][NFC] Convert AliasResult to class containing offset for PartialAlias case. 2021-04-09 13:26:09 +03:00
AliasSetTrackerTest.cpp [NFC] Reduce include files dependency. 2020-12-03 18:25:05 +03:00
AssumeBundleQueriesTest.cpp Internalize some cl::opt global variables or move them under namespace llvm 2021-05-07 11:15:43 -07:00
BasicAliasAnalysisTest.cpp [NFC] Reduce include files dependency. 2020-12-03 18:25:05 +03:00
BlockFrequencyInfoTest.cpp Switch from llvm::is_trivially_copyable to std::is_trivially_copyable 2020-12-02 22:02:48 -08:00
BranchProbabilityInfoTest.cpp
CFGTest.cpp
CGSCCPassManagerTest.cpp Revert "[NPM] Do not run function simplification pipeline unnecessarily" 2021-05-21 16:38:02 -07:00
CMakeLists.txt Unpack the CostEstimate feature in ML inlining models. 2021-07-02 16:57:16 +00:00
CallGraphTest.cpp
CaptureTrackingTest.cpp [CaptureTrackingTest] Add missing override marker (NFC) 2020-11-07 11:44:02 +01:00
ConstraintSystemTest.cpp [ConstraintSolver] Add isConditionImplied helper. 2020-09-15 13:50:11 +01:00
DDGTest.cpp [DDG] Fix duplicate edge removal during pi-block formation 2021-01-07 10:31:11 -05:00
DivergenceAnalysisTest.cpp [NewPM] Introduce (GPU)DivergenceAnalysis in the new pass manager 2021-02-16 10:26:45 +05:30
DomTreeUpdaterTest.cpp
FunctionPropertiesAnalysisTest.cpp Add new function properties to FunctionPropertiesAnalysis 2020-07-23 12:46:47 -07:00
GlobalsModRefTest.cpp [NFC] Reduce include files dependency. 2020-12-03 18:25:05 +03:00
IRSimilarityIdentifierTest.cpp [IRSim] Letting call instructions be legal for similarity identification. 2020-12-31 20:52:45 -06:00
IVDescriptorsTest.cpp [IVDescriptors] Fix comment that getUnsafeAlgebraInst has been renamed to getExactFPMathInst 2021-06-21 07:56:22 +08:00
InlineCostTest.cpp Unpack the CostEstimate feature in ML inlining models. 2021-07-02 16:57:16 +00:00
LazyCallGraphTest.cpp [CGSCC][Coroutine][NewPM] Properly support function splitting/outlining 2021-01-06 11:19:15 -08:00
LoadsTest.cpp [Loads] Add canReplacePointersIfEqual helper. 2020-09-01 20:57:41 +01:00
LoopInfoTest.cpp [unittest] Fix -Wunused-variable after D94717 2021-05-07 11:42:16 -07:00
LoopNestTest.cpp
MemoryBuiltinsTest.cpp
MemorySSATest.cpp [AA][NFC] Convert AliasResult to class containing offset for PartialAlias case. 2021-04-09 13:26:09 +03:00
PhiValuesTest.cpp
ProfileSummaryInfoTest.cpp Revert "Use uint64_t for branch weights instead of uint32_t" 2020-10-31 00:25:32 -07:00
ScalarEvolutionTest.cpp [ScalarEvolution] Strictly enforce pointer/int type rules. 2021-07-09 17:29:26 -07:00
SparsePropagation.cpp
TBAATest.cpp
TFUtilsTest.cpp [NFC][TFUtils] Extract out the output spec loader 2020-11-18 20:03:20 -08:00
TargetLibraryInfoTest.cpp [OpenMP] Add new OpenMP globalization functions to library info 2021-06-22 13:23:05 -04:00
UnrollAnalyzerTest.cpp [unroll] Use value domain for symbolic execution based cost model 2021-05-26 08:41:25 -07:00
ValueLatticeTest.cpp
ValueTrackingTest.cpp Update @llvm.powi to handle different int sizes for the exponent 2021-06-17 09:38:28 +02:00
VectorFunctionABITest.cpp [Analysis] Change VFABI::mangleTLIVectorName to use ElementCount 2021-02-12 09:38:12 +00:00
VectorUtilsTest.cpp Revert "Revert "[NFC][llvm] Make the contructors of `ElementCount` private."" 2020-08-19 17:26:36 +00:00