mirror of
https://github.com/RPCS3/llvm.git
synced 2024-12-13 06:39:12 +00:00
5b5bc3032f
makes it so that it constant folds instructions on the fly. This is good for several reasons: 0. Many instructions are constant foldable after inlining, particularly if inlining a call with constant arguments. 1. Without this, the inliner has to allocate memory for all of the instructions that can be constant folded, then a subsequent pass has to delete them. This gets the job done without this extra work. 2. This makes the inliner *pass* a bit more aggressive: in particular, it partially solves a phase order issue where the inliner would inline lots of code that folds away to nothing, but think that the resultant function is big because of this code that will be gone. Now the code never exists. This is the first part of a 2-step process. The second part will be smart enough to see when this implicit constant folding propagates a constant into a branch or switch instruction, making CFG edges dead. This implements Transforms/Inline/inline_constprop.ll git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28521 91177308-0d34-0410-b5e6-96231b3b80d8 |
||
---|---|---|
.. | ||
BasicBlockUtils.cpp | ||
BreakCriticalEdges.cpp | ||
CloneFunction.cpp | ||
CloneModule.cpp | ||
CloneTrace.cpp | ||
CodeExtractor.cpp | ||
DemoteRegToStack.cpp | ||
InlineFunction.cpp | ||
LCSSA.cpp | ||
Local.cpp | ||
LoopSimplify.cpp | ||
LowerAllocations.cpp | ||
LowerInvoke.cpp | ||
LowerSelect.cpp | ||
LowerSwitch.cpp | ||
Makefile | ||
Mem2Reg.cpp | ||
PromoteMemoryToRegister.cpp | ||
SimplifyCFG.cpp | ||
UnifyFunctionExitNodes.cpp | ||
ValueMapper.cpp | ||
ValueMapper.h |