| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
| |
llvm-svn: 158007
|
|
|
|
| |
llvm-svn: 156358
|
|
|
|
|
|
|
|
| |
Take this opportunity to generalize the indirectbr bailout logic for
loop transformations. CFG transformations will never get indirectbr
right, and there's no point trying.
llvm-svn: 154386
|
|
|
|
|
|
| |
No need for an explicit test case for an unsupported combination of options.
llvm-svn: 146721
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Patch by Brendon Cahoon!
This extends the existing LoopUnroll and LoopUnrollPass. Brendon
measured no regressions in the llvm test suite with -unroll-runtime
enabled. This implementation works by using the existing loop
unrolling code to unroll the loop by a power-of-two (default 8). It
generates an if-then-else sequence of code prior to the loop to
execute the extra iterations before entering the unrolled loop.
llvm-svn: 146245
|
|
|
|
|
|
| |
Also, my apologies for spoiling the autocomplete on SimplifyInstructions.cpp. I couldn't think of a better filename.
llvm-svn: 137229
|
|
|
|
| |
llvm-svn: 137203
|
|
|
|
| |
llvm-svn: 137195
|
|
|
|
|
|
|
|
|
|
| |
These are not individual bug fixes. I had to rewrite a good chunk of
the unroller to make it sane. I think it was getting lucky on trivial
completely unrolled loops with no early exits. I included some fairly
simple unit tests for partial unrolling. I didn't do much stress
testing, so it may not be perfect, but should be usable now.
llvm-svn: 137190
|
|
|
|
|
|
| |
and avoid further confusion.
llvm-svn: 137106
|
|
|
|
|
|
| |
to notify SCEV of a change. Add forgetLoop in a couple of those places.
llvm-svn: 136797
|
|
|
|
| |
llvm-svn: 135988
|
|
|
|
|
|
| |
removes its dependence on canonical induction variables.
llvm-svn: 135829
|
|
|
|
| |
llvm-svn: 135828
|
|
|
|
|
|
| |
-Wshorten-64-to-32 warning in Instructions.h.
llvm-svn: 133708
|
|
|
|
|
|
|
|
|
| |
"Reinstate r133435 and r133449 (reverted in r133499) now that the clang
self-hosted build failure has been fixed (r133512)."
Due to some additional warnings.
llvm-svn: 133700
|
|
|
|
| |
llvm-svn: 133514
|
|
|
|
|
|
| |
self-hosted build failure has been fixed (r133512).
llvm-svn: 133513
|
|
|
|
| |
llvm-svn: 133499
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Change PHINodes to store simple pointers to their incoming basic blocks,
instead of full-blown Uses.
Note that this loses an optimization in SplitCriticalEdge(), because we
can no longer walk the use list of a BasicBlock to find phi nodes. See
the comment I removed starting "However, the foreach loop is slow for
blocks with lots of predecessors".
Extend replaceAllUsesWith() on a BasicBlock to also update any phi
nodes in the block's successors. This mimics what would have happened
when PHINodes were proper Users of their incoming blocks. (Note that
this only works if OldBB->replaceAllUsesWith(NewBB) is called when
OldBB still has a terminator instruction, so it still has some
successors.)
llvm-svn: 133435
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This is part of a futile attempt to not "break" bizzaro
code like this:
l1:
printf("l1: %p\n", &&l1);
++x;
if( x < 3 ) goto l1;
Previously we'd fold &&l1 to 1, which is fine per our semantics
but not helpful to the user.
llvm-svn: 125827
|
|
|
|
| |
llvm-svn: 123221
|
|
|
|
| |
llvm-svn: 123025
|
|
|
|
|
|
|
| |
in two places that are really interested in simplified instructions, not
constants.
llvm-svn: 120044
|
|
|
|
| |
llvm-svn: 116387
|
|
|
|
| |
llvm-svn: 109412
|
|
|
|
|
|
| |
The ValueMapper used by various cloning utility maps MDNodes also.
llvm-svn: 106706
|
|
|
|
|
|
| |
Do not use "ValueMap" as a name for a local variable or an argument.
llvm-svn: 106698
|
|
|
|
|
|
| |
replationship with ADT/ValueMap.
llvm-svn: 101950
|
|
|
|
|
|
|
| |
compute a set of reachable blocks for itself each time it is called, which
is fairly frequently.
llvm-svn: 98179
|
|
|
|
| |
llvm-svn: 94684
|
|
|
|
| |
llvm-svn: 92600
|
|
|
|
|
|
|
|
| |
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
|
|
|
|
|
|
| |
from various APIs, addressing PR5325.
llvm-svn: 86231
|
|
|
|
| |
llvm-svn: 86164
|
|
|
|
|
|
|
| |
auto-update the DominatorTree because it doesn't keep the DominatorTree
current while it works.
llvm-svn: 85670
|
|
|
|
|
|
|
| |
MergeBlockIntoPredecessor. This makes SimplifyCFG slightly more aggressive,
and makes it unnecessary for LoopUnroll to have its own copy of this code.
llvm-svn: 85667
|
|
|
|
| |
llvm-svn: 85662
|
|
LoopUnrollPass.cpp, for consistency with other passes which are
similarly split.
llvm-svn: 85659
|