1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2024-10-21 12:02:58 +02:00
llvm-mirror/lib/Transforms/Scalar
Anna Thomas 370ce699dd [LICM] Add a diagnostic analysis for identifying alias information
Summary:
Currently, in LICM, we use the alias set tracker to identify if the
instruction (we're interested in hoisting) aliases with instruction that
modifies that memory location.

This patch adds an LICM alias analysis diagnostic tool that checks the
mod ref info of the instruction we are interested in hoisting/sinking,
with every instruction in the loop.  Because of O(N^2) complexity this
is now only a diagnostic tool to show the limitation we have with the
alias set tracker and is OFF by default.

Test cases show the difference with the diagnostic analysis tool, where
we're able to hoist out loads and readonly + argmemonly calls from the
loop, where the alias set tracker analysis is not able to hoist these
instructions out.

Reviewers: reames, mkazantsev, fedor.sergeev, hfinkel

Subscribers: llvm-commits

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

llvm-svn: 340026
2018-08-17 13:44:00 +00:00
..
ADCE.cpp [DebugInfo] Refactor DbgInfoIntrinsic class hierarchy. 2018-08-06 03:59:47 +00:00
AlignmentFromAssumptions.cpp Remove trailing space 2018-07-30 19:41:25 +00:00
BDCE.cpp Move Analysis/Utils/Local.h back to Transforms 2018-06-04 21:23:21 +00:00
CallSiteSplitting.cpp Early exit with cheaper checks 2018-07-21 14:13:44 +00:00
CMakeLists.txt [UnrollAndJam] New Unroll and Jam pass 2018-07-01 12:47:30 +00:00
ConstantHoisting.cpp Remove trailing space 2018-07-30 19:41:25 +00:00
ConstantProp.cpp Move Analysis/Utils/Local.h back to Transforms 2018-06-04 21:23:21 +00:00
CorrelatedValuePropagation.cpp [Dominators] Convert existing passes and utils to use the DomTreeUpdater class 2018-08-03 05:08:17 +00:00
DCE.cpp Move Analysis/Utils/Local.h back to Transforms 2018-06-04 21:23:21 +00:00
DeadStoreElimination.cpp Remove trailing space 2018-07-30 19:41:25 +00:00
DivRemPairs.cpp Reland r338431: "Add DebugCounters to DivRemPairs" 2018-08-01 23:14:14 +00:00
EarlyCSE.cpp Remove trailing space 2018-07-30 19:41:25 +00:00
FlattenCFGPass.cpp Move Analysis/Utils/Local.h back to Transforms 2018-06-04 21:23:21 +00:00
Float2Int.cpp Rename DEBUG macro to LLVM_DEBUG. 2018-05-14 12:53:11 +00:00
GuardWidening.cpp [GuardWidening] Widen very likely non-taken br instructions 2018-08-13 07:58:19 +00:00
GVN.cpp [GVN] Fix typo in IsValueFullyAvailableInBlock. NFC. 2018-08-15 15:06:53 +00:00
GVNHoist.cpp [GVNHoist] safeToHoistLdSt allows illegal hoisting 2018-07-23 09:42:35 +00:00
GVNSink.cpp Remove trailing space 2018-07-30 19:41:25 +00:00
InductiveRangeCheckElimination.cpp Remove trailing space 2018-07-30 19:41:25 +00:00
IndVarSimplify.cpp Move Analysis/Utils/Local.h back to Transforms 2018-06-04 21:23:21 +00:00
InferAddressSpaces.cpp Move Analysis/Utils/Local.h back to Transforms 2018-06-04 21:23:21 +00:00
InstSimplifyPass.cpp [instsimplify] Move the instsimplify pass to use more obvious file names 2018-06-29 23:36:03 +00:00
IVUsersPrinter.cpp
JumpThreading.cpp [Dominators] Convert existing passes and utils to use the DomTreeUpdater class 2018-08-03 05:08:17 +00:00
LICM.cpp [LICM] Add a diagnostic analysis for identifying alias information 2018-08-17 13:44:00 +00:00
LLVMBuild.txt Another try to commit 323321 (aggressive instruction combine). 2018-01-25 12:06:32 +00:00
LoopAccessAnalysisPrinter.cpp
LoopDataPrefetch.cpp Rename DEBUG macro to LLVM_DEBUG. 2018-05-14 12:53:11 +00:00
LoopDeletion.cpp Rename DEBUG macro to LLVM_DEBUG. 2018-05-14 12:53:11 +00:00
LoopDistribute.cpp Rename DEBUG macro to LLVM_DEBUG. 2018-05-14 12:53:11 +00:00
LoopIdiomRecognize.cpp [NFC] Refactoring of LoopSafetyInfo, step 1 2018-08-15 05:55:43 +00:00
LoopInstSimplify.cpp Move Analysis/Utils/Local.h back to Transforms 2018-06-04 21:23:21 +00:00
LoopInterchange.cpp [LoopInterchange] Move PHI handling to adjustLoopBranches. 2018-06-19 08:03:24 +00:00
LoopLoadElimination.cpp Use SmallPtrSet explicitly for SmallSets with pointer types (NFC). 2018-06-12 11:16:56 +00:00
LoopPassManager.cpp
LoopPredication.cpp Remove trailing space 2018-07-30 19:41:25 +00:00
LoopRerollPass.cpp [LoopReroll] Rewrite induction variable rewriting. 2018-06-22 22:58:55 +00:00
LoopRotation.cpp Refine the loop rotation's API 2018-04-19 20:29:43 +00:00
LoopSimplifyCFG.cpp SCEV should forget all loops containing a deleted block. 2018-08-09 17:53:26 +00:00
LoopSink.cpp [LICM] Factor out fault legality from canHoistOrSinkInst [NFC] 2018-08-02 04:08:04 +00:00
LoopStrengthReduce.cpp [LSR] If no Use is interesting, early return. 2018-07-13 23:40:00 +00:00
LoopUnrollAndJamPass.cpp [UnJ] Improve explicit loop count checks 2018-08-11 07:37:31 +00:00
LoopUnrollPass.cpp Remove trailing space 2018-07-30 19:41:25 +00:00
LoopUnswitch.cpp [NFC] Refactoring of LoopSafetyInfo, step 1 2018-08-15 05:55:43 +00:00
LoopVersioningLICM.cpp Rename DEBUG macro to LLVM_DEBUG. 2018-05-14 12:53:11 +00:00
LowerAtomic.cpp Remove redundant includes from lib/Transforms. 2017-12-13 21:31:01 +00:00
LowerExpectIntrinsic.cpp Remove \brief commands from doxygen comments. 2018-05-01 15:54:18 +00:00
LowerGuardIntrinsic.cpp
MemCpyOptimizer.cpp [NFC] fix trivial typos in comments 2018-06-14 05:41:49 +00:00
MergedLoadStoreMotion.cpp [STLExtras] Add size() for ranges, and remove distance() 2018-05-16 23:20:42 +00:00
MergeICmps.cpp [MergeICmps] Don't crash when memcmp is not available 2018-05-19 12:51:59 +00:00
NaryReassociate.cpp Move Analysis/Utils/Local.h back to Transforms 2018-06-04 21:23:21 +00:00
NewGVN.cpp [MISC]Fix wrong usage of std::equal() 2018-08-17 07:51:01 +00:00
PartiallyInlineLibCalls.cpp [PartiallyInlineLibCalls][x86] add TTI hook to allow sqrt inlining to depend on arg rather than result 2017-11-27 21:15:43 +00:00
PlaceSafepoints.cpp Move Analysis/Utils/Local.h back to Transforms 2018-06-04 21:23:21 +00:00
Reassociate.cpp [DebugInfo] Refactor DbgInfoIntrinsic class hierarchy. 2018-08-06 03:59:47 +00:00
Reg2Mem.cpp Move Analysis/Utils/Local.h back to Transforms 2018-06-04 21:23:21 +00:00
RewriteStatepointsForGC.cpp [Dominators] Convert existing passes and utils to use the DomTreeUpdater class 2018-08-03 05:08:17 +00:00
Scalar.cpp [UnrollAndJam] New Unroll and Jam pass 2018-07-01 12:47:30 +00:00
Scalarizer.cpp [Transforms] Fix some Clang-tidy modernize and Include What You Use warnings; other minor fixes (NFC). 2017-10-20 21:47:29 +00:00
SCCP.cpp Revert r337904: [IPSCCP] Use PredicateInfo to propagate facts from cmp instructions. 2018-07-25 19:44:19 +00:00
SeparateConstOffsetFromGEP.cpp [NFC] fix trivial typos in comments 2018-06-14 05:41:49 +00:00
SimpleLoopUnswitch.cpp [SimpleLoopUnswitch] Fix DT updates for trivial branch unswitching. 2018-07-28 00:01:05 +00:00
SimplifyCFGPass.cpp Move Analysis/Utils/Local.h back to Transforms 2018-06-04 21:23:21 +00:00
Sink.cpp Rename DEBUG macro to LLVM_DEBUG. 2018-05-14 12:53:11 +00:00
SpeculateAroundPHIs.cpp [NFC] fix trivial typos in comments 2018-06-14 05:41:49 +00:00
SpeculativeExecution.cpp Use SmallPtrSet explicitly for SmallSets with pointer types (NFC). 2018-06-12 11:16:56 +00:00
SROA.cpp [DebugInfo] Refactor DbgInfoIntrinsic class hierarchy. 2018-08-06 03:59:47 +00:00
StraightLineStrengthReduce.cpp Move Analysis/Utils/Local.h back to Transforms 2018-06-04 21:23:21 +00:00
StructurizeCFG.cpp [NFC] fix trivial typos in comments 2018-06-14 05:41:49 +00:00
TailRecursionElimination.cpp [TailCallElim] Preserve DT and PDT 2018-08-04 08:13:47 +00:00