1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2024-10-24 21:42:54 +02:00
llvm-mirror/include/llvm/Analysis
Max Kazantsev 6efe9082de Re-enable "[SCEV] Do not fold dominated SCEVUnknown into AddRecExpr start"
The patch rL303730 was reverted because test lsr-expand-quadratic.ll failed on
many non-X86 configs with this patch. The reason of this is that the patch
makes a correctless fix that changes optimizer's behavior for this test.
Without the change, LSR was making an overconfident simplification basing on a
wrong SCEV. Apparently it did not need the IV analysis to do this. With the
change, it chose a different way to simplify (that wasn't so confident), and
this way required the IV analysis. Now, following the right execution path,
LSR tries to make a transformation relying on IV Users analysis. This analysis
is target-dependent due to this code:

  // LSR is not APInt clean, do not touch integers bigger than 64-bits.
  // Also avoid creating IVs of non-native types. For example, we don't want a
  // 64-bit IV in 32-bit code just because the loop has one 64-bit cast.
  uint64_t Width = SE->getTypeSizeInBits(I->getType());
  if (Width > 64 || !DL.isLegalInteger(Width))
    return false;

To make a proper transformation in this test case, the type i32 needs to be
legal for the specified data layout. When the test runs on some non-X86
configuration (e.g. pure ARM 64), opt gets confused by the specified target
and does not use it, rejecting the specified data layout as well. Instead,
it uses some default layout that does not treat i32 as a legal type
(currently the layout that is used when it is not specified does not have
legal types at all). As result, the transformation we expect to happen does
not happen for this test.

This re-enabling patch does not have any source code changes compared to the
original patch rL303730. The only difference is that the failing test is
moved to X86 directory and now has requirement of running on x86 only to comply
with the specified target triple and data layout.

Differential Revision: https://reviews.llvm.org/D33543

llvm-svn: 303971
2017-05-26 06:47:04 +00:00
..
AliasAnalysis.h AliasAnalysis: Be less conservative about volatile than atomic. 2017-04-07 01:28:36 +00:00
AliasAnalysisEvaluator.h Consistently use FunctionAnalysisManager 2016-08-09 00:28:15 +00:00
AliasSetTracker.h Use WeakVH instead of WeakTrackingVH in AliasSetTracker's UnkownInsts 2017-05-01 17:07:56 +00:00
AssumptionCache.h Rename WeakVH to WeakTrackingVH; NFC 2017-05-01 17:07:49 +00:00
BasicAliasAnalysis.h De-duplicate some code for creating an AARGetter suitable for the legacy PM. 2017-02-09 23:11:52 +00:00
BlockFrequencyInfo.h Add an interface to scale the frequencies of a set of blocks. 2017-01-19 18:53:16 +00:00
BlockFrequencyInfoImpl.h Cleanup some GraphTraits iteration code 2017-04-19 03:22:50 +00:00
BranchProbabilityInfo.h [BPI] Refactor post domination calculation and simple fix for ColdCall 2017-04-12 05:42:14 +00:00
CallGraph.h CallGraph: Remove almost-unused field 'Root'. 2017-05-11 23:59:05 +00:00
CallGraphSCCPass.h [CallGraphSCCPass] Use an ArrayRef instead of a pair of iterators 2016-08-06 06:21:02 +00:00
CallPrinter.h [CG] Rename the DOT printing pass to actually reference "DOT". 2016-03-10 11:04:40 +00:00
CaptureTracking.h
CFG.h
CFGPrinter.h [IR] Redesign the case iterator in SwitchInst to actually be an iterator 2017-04-12 07:27:28 +00:00
CFLAndersAliasAnalysis.h [PM] Extend the explicit 'invalidate' method API on analysis results to 2016-11-28 22:04:31 +00:00
CFLSteensAliasAnalysis.h [PM] Extend the explicit 'invalidate' method API on analysis results to 2016-11-28 22:04:31 +00:00
CGSCCPassManager.h Rename WeakVH to WeakTrackingVH; NFC 2017-05-01 17:07:49 +00:00
CodeMetrics.h Revert @llvm.assume with operator bundles (r289755-r289757) 2016-12-19 08:22:17 +00:00
ConstantFolding.h InstSimplify: Add a hook for shufflevector 2017-04-03 22:05:30 +00:00
DemandedBits.h [ValueTracking] Introduce a KnownBits struct to wrap the two APInts for computeKnownBits 2017-04-26 16:39:58 +00:00
DependenceAnalysis.h [PM] Change the static object whose address is used to uniquely identify 2016-11-23 17:53:26 +00:00
DivergenceAnalysis.h
DominanceFrontier.h [PM] Introduce an analysis set used to preserve all analyses over 2017-01-15 06:32:49 +00:00
DominanceFrontierImpl.h Cleanup some GraphTraits iteration code 2017-04-19 03:22:50 +00:00
DomPrinter.h
DOTGraphTraitsPass.h
EHPersonalities.h [tsan] Add support for C++ exceptions into TSan (call __tsan_func_exit during unwinding), LLVM part 2016-11-14 21:41:13 +00:00
GlobalsModRef.h [PM] Change the static object whose address is used to uniquely identify 2016-11-23 17:53:26 +00:00
IndirectCallPromotionAnalysis.h Refactor indirect call promotion profitability analysis (NFC) 2016-07-12 21:13:44 +00:00
IndirectCallSiteVisitor.h Fix the samplepgo indirect call promotion bug: we should not promote a direct call. 2017-02-06 23:33:15 +00:00
InlineCost.h Refactor callsite cost computation into a helper function /NFC 2017-05-02 05:38:41 +00:00
InstructionSimplify.h [InstSimplify] Fix the indentation throughout the interface header file. 2017-05-22 23:50:40 +00:00
Interval.h s/static inline/static/ for headers I have changed in r279475. NFC. 2016-08-31 16:48:13 +00:00
IntervalIterator.h
IntervalPartition.h
IteratedDominanceFrontier.h IDFCalculator: Remove unused field. 2016-08-22 19:52:23 +00:00
IVUsers.h Rename WeakVH to WeakTrackingVH; NFC 2017-05-01 17:07:49 +00:00
LazyBlockFrequencyInfo.h [LazyBFI] Fix typos 2017-02-14 17:21:12 +00:00
LazyBranchProbabilityInfo.h Add new pass LazyMachineBlockFrequencyInfo 2017-02-14 17:21:09 +00:00
LazyCallGraph.h [PM/LCG] Teach the LazyCallGraph how to replace a function without 2017-02-09 23:24:13 +00:00
LazyValueInfo.h [LVI] Add an LVI printer pass to capture test LVI cache after transformations 2017-03-22 19:27:12 +00:00
Lint.h
Loads.h Extract FindAvailablePtrLoadStore out of FindAvailableLoadedValue. NFCI 2017-03-19 15:27:52 +00:00
LoopAccessAnalysis.h [SLP] Revert everything that has to do with memory access sorting. 2017-03-10 18:59:07 +00:00
LoopAnalysisManager.h Revert r293017 and fix the actual underlying issue. 2017-02-07 01:50:48 +00:00
LoopInfo.h Avoid unnecessary copies in some for loops 2017-04-24 20:01:03 +00:00
LoopInfoImpl.h [Analysis] Print out unreachable loops 2017-05-06 16:22:53 +00:00
LoopIterator.h [LV] Move LoopBodyTraits to a better place, and add comment for simplifying LoopBlocksTraversal. NFC. 2016-08-17 22:20:07 +00:00
LoopPass.h [LegacyPM] Make the 'addLoop' method accept a loop to add rather than 2017-05-25 03:01:31 +00:00
LoopUnrollAnalyzer.h Revert "Revert "[Unroll] Implement a conservative and monotonically increasing cost tracking system during the full unroll heuristic analysis that avoids counting any instruction cost until that instruction becomes "live" through a side-effect or use outside the..."" 2016-05-13 21:23:25 +00:00
MemoryBuiltins.h Rename WeakVH to WeakTrackingVH; NFC 2017-05-01 17:07:49 +00:00
MemoryDependenceAnalysis.h [Devirtualization] MemDep returns non-local !invariant.group dependencies 2017-01-12 11:33:58 +00:00
MemoryLocation.h [NFC] Header cleanup 2016-04-18 09:17:29 +00:00
MemorySSA.h [IR] De-virtualize ~Value to save a vptr 2017-05-18 17:24:10 +00:00
MemorySSAUpdater.h MemorySSA: Move to Analysis, from Transforms/Utils. It's used as 2017-04-11 20:06:36 +00:00
ModuleSummaryAnalysis.h [PM] Change the static object whose address is used to uniquely identify 2016-11-23 17:53:26 +00:00
ObjCARCAliasAnalysis.h [PM] Extend the explicit 'invalidate' method API on analysis results to 2016-11-28 22:04:31 +00:00
ObjCARCAnalysisUtils.h
ObjCARCInstKind.h
ObjectUtils.h Move llvm::canBeOmittedFromSymbolTable() to Analysis. 2017-03-31 04:46:31 +00:00
OptimizationDiagnosticInfo.h [ORE] Remove ORE.emit{{.+}} functions 2017-02-23 21:32:53 +00:00
OrderedBasicBlock.h
Passes.h [PM] Port of the DepndenceAnalysis to the new PM. 2016-05-12 22:19:39 +00:00
PHITransAddr.h Revert @llvm.assume with operator bundles (r289755-r289757) 2016-12-19 08:22:17 +00:00
PostDominators.h [PM] Introduce an analysis set used to preserve all analyses over 2017-01-15 06:32:49 +00:00
ProfileSummaryInfo.h Add hasProfileSummary and has{Sample|Instrumentation}Profile methods 2017-05-16 20:14:39 +00:00
PtrUseVisitor.h [IR/Analysis] Defend against getting slightly wrong template arguments 2017-02-07 03:17:30 +00:00
RegionInfo.h [RegionInfo] Fix dangling references created by moving RegionInfo objects 2017-04-24 11:54:37 +00:00
RegionInfoImpl.h Fix the build for libstdc++ 4.7 2016-07-27 18:25:12 +00:00
RegionIterator.h Modify df_iterator to support post-order actions 2016-10-05 21:36:16 +00:00
RegionPass.h Use StringRef in Pass/PassManager APIs (NFC) 2016-10-01 02:56:57 +00:00
RegionPrinter.h
ScalarEvolution.h Re-enable "[SCEV] Do not fold dominated SCEVUnknown into AddRecExpr start" 2017-05-26 06:47:04 +00:00
ScalarEvolutionAliasAnalysis.h [PM] Change the static object whose address is used to uniquely identify 2016-11-23 17:53:26 +00:00
ScalarEvolutionExpander.h Rename WeakVH to WeakTrackingVH; NFC 2017-05-01 17:07:49 +00:00
ScalarEvolutionExpressions.h Use range-for in a few places 2017-04-14 17:42:12 +00:00
ScalarEvolutionNormalization.h Add missing #include 2017-04-14 17:25:23 +00:00
ScopedNoAliasAA.h [PM] Extend the explicit 'invalidate' method API on analysis results to 2016-11-28 22:04:31 +00:00
SparsePropagation.h
TargetFolder.h [ConstnatFolding] Teach the folder how to fold ConstantVector 2016-07-29 03:27:26 +00:00
TargetLibraryInfo.def Revert "Add pthread_self function prototype and make it speculatable." 2017-05-21 00:37:55 +00:00
TargetLibraryInfo.h SimplifyLibCalls: Optimize wcslen 2017-05-19 22:37:09 +00:00
TargetTransformInfo.h [LoopVectorizer] Let target prefer scalar addressing computations. 2017-05-24 13:42:56 +00:00
TargetTransformInfoImpl.h [LoopVectorizer] Let target prefer scalar addressing computations. 2017-05-24 13:42:56 +00:00
Trace.h
TypeBasedAliasAnalysis.h [PM] Extend the explicit 'invalidate' method API on analysis results to 2016-11-28 22:04:31 +00:00
TypeMetadataUtils.h Analysis: Add appropriate const qualification to functions in TypeMetadataUtils.cpp. NFC. 2017-01-27 22:55:30 +00:00
ValueTracking.h [ValueTracking] Add OptimizationRemarkEmitter to the other signature for commuteKnownBits. 2017-05-24 16:53:03 +00:00
VectorUtils.h [LV] Move interleaved access helper functions to VectorUtils (NFC) 2017-02-01 17:45:46 +00:00