| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
|
|
| |
a loop when unswitching it. It only does this in the complex case, because
everything should be fine already in the simple case.
llvm-svn: 125369
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
1. Take a flags argument instead of a bool. This makes
it more clear to the reader what it is used for.
2. Add a flag that says that "remapping a value not in the
map is ok".
3. Reimplement MapValue to share a bunch of code and be a lot
more efficient. For lookup failures, don't drop null values
into the map.
4. Using the new flag a bunch of code can vaporize in LinkModules
and LoopUnswitch, kill it.
No functionality change.
llvm-svn: 123058
|
|
|
|
|
|
|
| |
(which does constant folding and more) is called a few lines
later.
llvm-svn: 120042
|
|
|
|
|
|
|
|
| |
preserves LCSSA form out of ScalarEvolution and into the LoopInfo
class. Use it to check that SimplifyInstruction simplifications
are not breaking LCSSA form. Fixes PR8622.
llvm-svn: 119727
|
|
|
|
|
|
| |
it to get better phi node simplification.
llvm-svn: 119055
|
|
|
|
|
|
|
| |
they do not also require them. This allows us to reduce inter-pass linkage
dependencies.
llvm-svn: 116854
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
exposes an initializeMyPassFunction(), which
must be called in the pass's constructor. This function uses static dependency declarations to recursively initialize
the pass's dependencies.
Clients that only create passes through the createFooPass() APIs will require no changes. Clients that want to use the
CommandLine options for passes will need to manually call the appropriate initialization functions in PassInitialization.h
before parsing commandline arguments.
I have tested this with all standard configurations of clang and llvm-gcc on Darwin. It is possible that there are problems
with the static dependencies that will only be visible with non-standard options. If you encounter any crash in pass
registration/creation, please send the testcase to me directly.
llvm-svn: 116820
|
|
|
|
| |
llvm-svn: 116387
|
|
|
|
|
|
|
|
|
| |
perform initialization without static constructors AND without explicit initialization
by the client. For the moment, passes are required to initialize both their
(potential) dependencies and any passes they preserve. I hope to be able to relax
the latter requirement in the future.
llvm-svn: 116334
|
|
|
|
| |
llvm-svn: 115996
|
|
|
|
|
|
| |
infinite loops or exits will eventually exit. This fixes PR5373.
llvm-svn: 112745
|
|
|
|
|
|
| |
claims that it preserves domfrontier if it doesn't really.
llvm-svn: 112445
|
|
|
|
| |
llvm-svn: 110460
|
|
|
|
| |
llvm-svn: 110410
|
|
|
|
|
|
|
|
| |
address of the static
ID member as the sole unique type identifier. Clean up APIs related to this change.
llvm-svn: 110396
|
|
|
|
| |
llvm-svn: 109045
|
|
|
|
|
|
| |
The ValueMapper used by various cloning utility maps MDNodes also.
llvm-svn: 106706
|
|
|
|
|
|
| |
can be reused from PartialSpecializationCost
llvm-svn: 105725
|
|
|
|
|
|
|
| |
loop unswitch, and use inst simplify instead. It is more
powerful and less duplication.
llvm-svn: 101874
|
|
|
|
|
|
|
|
| |
condition we're unswitching on. In this case, don't try to
simplify the second copy of the loop which may be dead or not,
but is probably a constant now. This fixes PR6879
llvm-svn: 101870
|
|
|
|
| |
llvm-svn: 100468
|
|
|
|
| |
llvm-svn: 100467
|
|
|
|
| |
llvm-svn: 100262
|
|
|
|
|
|
|
| |
compute a set of reachable blocks for itself each time it is called, which
is fairly frequently.
llvm-svn: 98179
|
|
|
|
|
|
|
| |
and T->isPointerTy(). Convert most instances of the first form to the second form.
Requested by Chris.
llvm-svn: 96344
|
|
|
|
|
|
| |
isInteger, we now have isFloatTy and isIntegerTy. Requested by Chris!
llvm-svn: 96223
|
|
|
|
| |
llvm-svn: 95055
|
|
|
|
| |
llvm-svn: 92760
|
|
|
|
| |
llvm-svn: 92608
|
|
|
|
|
|
|
|
| |
contains another loop, or an instruction. The loop form is
substantially more efficient on large loops than the typical
code it replaces.
llvm-svn: 91654
|
|
|
|
| |
llvm-svn: 90990
|
|
|
|
|
|
| |
proven to be bogus.
llvm-svn: 89844
|
|
|
|
| |
llvm-svn: 89758
|
|
|
|
|
|
| |
from various APIs, addressing PR5325.
llvm-svn: 86231
|
|
|
|
|
|
| |
LoopSimplify form may not be available.
llvm-svn: 86175
|
|
|
|
|
|
| |
This prevents unswitching from duplicating indbr's.
llvm-svn: 85705
|
|
|
|
|
|
|
|
|
| |
the estimated code size and the number of blocks when deciding whether to
do a non-trivial unswitch. This protects it from some very undesirable
worst-case behavior on large numbers of loop-unswitchable conditions, such
as in the testcase in PR5259.
llvm-svn: 84661
|
|
|
|
| |
llvm-svn: 84118
|
|
|
|
| |
llvm-svn: 84049
|
|
|
|
|
|
| |
ValueHandles a chance to get properly updated.
llvm-svn: 84033
|
|
|
|
|
|
| |
manually counting instructions.
llvm-svn: 84016
|
|
|
|
|
|
|
|
| |
BasicBlocks, so that it doesn't blindly procede in the presence of
large individual BasicBlocks. This addresses a class of code-size
expansion problems.
llvm-svn: 83992
|
|
|
|
| |
llvm-svn: 81361
|
|
|
|
| |
llvm-svn: 81354
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
that get created during loop unswitching, and fix SplitBlockPredecessors'
LCSSA updating code to create new PHIs instead of trying to just move
existing ones.
Also, optimize Loop::verifyLoop, since it gets called a lot. Use
searches on a sorted list of blocks instead of calling the "contains"
function, as is done in other places in the Loop class, since "contains"
does a linear search. Also, don't call verifyLoop from LoopSimplify or
LCSSA, as the PassManager is already calling verifyLoop as part of
LoopInfo's verifyAnalysis.
llvm-svn: 81221
|
|
|
|
|
|
| |
tests significantly.
llvm-svn: 81101
|
|
|
|
|
|
|
|
|
| |
that these passes are properly preserved.
Fix several transformation passes that claimed to preserve LoopSimplify
form but weren't.
llvm-svn: 80926
|
|
|
|
| |
llvm-svn: 80766
|
|
|
|
|
|
| |
This required converting a bunch of stuff off DOUT and other cleanups.
llvm-svn: 79819
|
|
|
|
| |
llvm-svn: 78948
|