1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2024-11-25 04:02:41 +01:00
llvm-mirror/lib/Transforms/Utils
David Green 5596d1e9b0 [LoopRotate] Restructuring LoopRotation.cpp to create Loop Rotation Pass with Loop Rotation Utility Interface
The existing LoopRotation.cpp is implemented as one of loop passes instead of
being a utility. The user cannot easily perform the loop rotation selectively
(or on demand) under different optimization level. For example, the loop
rotation is needed as part of the logic to convert a loop into a loop with
bottom test for a transformation. If the loop rotation is simply added as a
loop pass before the transformation, the pass is skipped if it is compiled at
–O0 or if it is explicitly disabled by the user, causing the compiler to
generate incorrect code. Furthermore, as a loop pass it will rotate all loops
instead of just the relevant loops.

We provide a utility interface for the loop rotation so that the loop rotation
can be called on demand. The changeset is as follows:

- Create a new file lib/Transforms/Utils/LoopRotationUtils.cpp and move the main
  implementation of class LoopRotate into this file.
- Create a new file llvm/include/Transform/Utils/LoopRotationUtils.h with the
  interface LoopRotation(...).
- Original LoopRotation.cpp is changed to use the utility function LoopRotation
  in LoopRotationUtils.cpp. This is done in the same way community did for
  mem-to-reg implementation.

Patch by Jin Lin!

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

llvm-svn: 328766
2018-03-29 08:48:15 +00:00
..
AddDiscriminators.cpp Transforms: Introduce Transforms/Utils.h rather than spreading the declarations amongst Scalar.h and IPO.h 2018-03-28 17:44:36 +00:00
ASanStackFrameLayout.cpp [asan] Add a full redzone after every stack variable 2017-11-18 01:13:18 +00:00
BasicBlockUtils.cpp Fix a couple of layering violations in Transforms 2018-03-21 22:34:23 +00:00
BreakCriticalEdges.cpp Transforms: Introduce Transforms/Utils.h rather than spreading the declarations amongst Scalar.h and IPO.h 2018-03-28 17:44:36 +00:00
BuildLibCalls.cpp [InstCombine] Missed optimization in math expression: sin(x) / cos(x) => tan(x) 2018-01-11 06:33:00 +00:00
BypassSlowDivision.cpp Fix a couple of layering violations in Transforms 2018-03-21 22:34:23 +00:00
CallPromotionUtils.cpp Use phi ranges to simplify code. No functionality change intended. 2017-12-30 15:27:33 +00:00
CloneFunction.cpp [CloneFunction] Preserve DT in DuplicateInstructionsInSplitBetween. 2018-03-22 11:38:53 +00:00
CloneModule.cpp Pass a module reference to CloneModule. 2018-02-14 19:50:40 +00:00
CMakeLists.txt [LoopRotate] Restructuring LoopRotation.cpp to create Loop Rotation Pass with Loop Rotation Utility Interface 2018-03-29 08:48:15 +00:00
CodeExtractor.cpp [SimplifyCFG] Create attribute for fuzzing-specific optimizations. 2018-03-22 17:07:51 +00:00
CtorUtils.cpp Remove redundant includes from lib/Transforms. 2017-12-13 21:31:01 +00:00
DemoteRegToStack.cpp Fix a couple of layering violations in Transforms 2018-03-21 22:34:23 +00:00
EntryExitInstrumenter.cpp Transforms: Introduce Transforms/Utils.h rather than spreading the declarations amongst Scalar.h and IPO.h 2018-03-28 17:44:36 +00:00
EscapeEnumerator.cpp Fix a couple of layering violations in Transforms 2018-03-21 22:34:23 +00:00
Evaluator.cpp [Evaluator] Evaluate load/store with bitcast 2018-03-13 10:19:50 +00:00
FlattenCFG.cpp Fix a couple of layering violations in Transforms 2018-03-21 22:34:23 +00:00
FunctionComparator.cpp
FunctionImportUtils.cpp [ThinLTO] Clear dllimport when setting dso_local. 2018-03-13 15:24:51 +00:00
GlobalStatus.cpp [GlobalOpt] Fix exponential compile-time with selects. 2018-01-31 20:42:25 +00:00
ImportedFunctionsInliningStatistics.cpp
InlineFunction.cpp Fix a couple of layering violations in Transforms 2018-03-21 22:34:23 +00:00
InstructionNamer.cpp Transforms: Introduce Transforms/Utils.h rather than spreading the declarations amongst Scalar.h and IPO.h 2018-03-28 17:44:36 +00:00
IntegerDivision.cpp
LCSSA.cpp Transforms: Introduce Transforms/Utils.h rather than spreading the declarations amongst Scalar.h and IPO.h 2018-03-28 17:44:36 +00:00
LibCallsShrinkWrap.cpp [Dominators] Remove verifyDomTree and add some verifying for Post Dom Trees 2018-02-28 11:00:08 +00:00
LLVMBuild.txt
Local.cpp Fix a couple of layering violations in Transforms 2018-03-21 22:34:23 +00:00
LoopRotationUtils.cpp [LoopRotate] Restructuring LoopRotation.cpp to create Loop Rotation Pass with Loop Rotation Utility Interface 2018-03-29 08:48:15 +00:00
LoopSimplify.cpp Transforms: Introduce Transforms/Utils.h rather than spreading the declarations amongst Scalar.h and IPO.h 2018-03-28 17:44:36 +00:00
LoopUnroll.cpp [LoopUnroll] Fix dangling pointers in SCEV 2018-03-26 11:31:46 +00:00
LoopUnrollPeel.cpp [LoopUnroll][NFC] Remove redundant canPeel check 2018-03-27 09:40:51 +00:00
LoopUnrollRuntime.cpp Transforms: Introduce Transforms/Utils.h rather than spreading the declarations amongst Scalar.h and IPO.h 2018-03-28 17:44:36 +00:00
LoopUtils.cpp [MustExecute] Move isGuaranteedToExecute and related rourtines to Analysis 2018-03-20 22:45:23 +00:00
LoopVersioning.cpp
LowerInvoke.cpp Transforms: Introduce Transforms/Utils.h rather than spreading the declarations amongst Scalar.h and IPO.h 2018-03-28 17:44:36 +00:00
LowerMemIntrinsics.cpp [LowerMemIntrinsics] Update uses of deprecated MemIntrinsic::getAlignment API (NFC) 2018-02-05 22:23:58 +00:00
LowerSwitch.cpp Transforms: Introduce Transforms/Utils.h rather than spreading the declarations amongst Scalar.h and IPO.h 2018-03-28 17:44:36 +00:00
Mem2Reg.cpp Transforms: Introduce Transforms/Utils.h rather than spreading the declarations amongst Scalar.h and IPO.h 2018-03-28 17:44:36 +00:00
MetaRenamer.cpp Transforms: Introduce Transforms/Utils.h rather than spreading the declarations amongst Scalar.h and IPO.h 2018-03-28 17:44:36 +00:00
ModuleUtils.cpp
NameAnonGlobals.cpp
OrderedInstructions.cpp
PredicateInfo.cpp Transforms: Introduce Transforms/Utils.h rather than spreading the declarations amongst Scalar.h and IPO.h 2018-03-28 17:44:36 +00:00
PromoteMemoryToRegister.cpp Fix a couple of layering violations in Transforms 2018-03-21 22:34:23 +00:00
SanitizerStats.cpp
SimplifyCFG.cpp [SimplifyCFG] Create attribute for fuzzing-specific optimizations. 2018-03-22 17:07:51 +00:00
SimplifyIndVar.cpp Remove redundant includes from lib/Transforms. 2017-12-13 21:31:01 +00:00
SimplifyInstructions.cpp Transforms: Introduce Transforms/Utils.h rather than spreading the declarations amongst Scalar.h and IPO.h 2018-03-28 17:44:36 +00:00
SimplifyLibCalls.cpp Fix a couple of layering violations in Transforms 2018-03-21 22:34:23 +00:00
SplitModule.cpp Pass a module reference to CloneModule. 2018-02-14 19:50:40 +00:00
SSAUpdater.cpp Use phi ranges to simplify code. No functionality change intended. 2017-12-30 15:27:33 +00:00
StripGCRelocates.cpp Fix a couple of layering violations in Transforms 2018-03-21 22:34:23 +00:00
StripNonLineTableDebugInfo.cpp
SymbolRewriter.cpp Mark all library options as hidden. 2017-12-01 00:53:10 +00:00
UnifyFunctionExitNodes.cpp Transforms: Introduce Transforms/Utils.h rather than spreading the declarations amongst Scalar.h and IPO.h 2018-03-28 17:44:36 +00:00
Utils.cpp [Transforms] Make sure to include the c binding header when defining c binding functions 2018-03-29 07:56:53 +00:00
ValueMapper.cpp Teach ValueMapper to use ODR uniqued types when available 2018-01-30 20:16:32 +00:00
VNCoercion.cpp