Andrew Trick
5e0ee1c7f2
LoopUnroll looks like it has some stale code. Remove it to prove my sanity and avoid further confusion.
...
llvm-svn: 137106
2011-08-09 03:11:29 +00:00
Andrew Trick
bf69d03382
SCEV: Use AssertingVH to catch dangling BasicBlock* when passes forget
...
to notify SCEV of a change. Add forgetLoop in a couple of those places.
llvm-svn: 136797
2011-08-03 18:32:11 +00:00
Andrew Trick
990f771a9a
Add clarifying comments for the new arguments to UnrollLoop.
...
llvm-svn: 135988
2011-07-25 22:17:47 +00:00
Andrew Trick
1cabe54fab
Move trip count discovery outside of the generic LoopUnroll helper. This
...
removes its dependence on canonical induction variables.
llvm-svn: 135829
2011-07-23 00:33:05 +00:00
Andrew Trick
279e7a6c83
whitespace
...
llvm-svn: 135828
2011-07-23 00:29:16 +00:00
Jay Foad
61ea0e4692
Reinstate r133513 (reverted in r133700) with an additional fix for a
...
-Wshorten-64-to-32 warning in Instructions.h.
llvm-svn: 133708
2011-06-23 09:09:15 +00:00
Eric Christopher
96513120b7
Revert r133513:
...
"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
2011-06-23 06:24:52 +00:00
Benjamin Kramer
ccbb77f239
Remove unused variables.
...
llvm-svn: 133514
2011-06-21 14:58:30 +00:00
Jay Foad
a97a2c998e
Reinstate r133435 and r133449 (reverted in r133499) now that the clang
...
self-hosted build failure has been fixed (r133512).
llvm-svn: 133513
2011-06-21 10:33:19 +00:00
Chad Rosier
184f3b37e2
Revert r133435 and r133449 to appease buildbots.
...
llvm-svn: 133499
2011-06-21 02:09:03 +00:00
Jay Foad
e03c05c35a
Change how PHINodes store their operands.
...
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
2011-06-20 14:38:01 +00:00
Chris Lattner
4a14fbc50c
Don't unroll loops whose header block's address is taken.
...
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
2011-02-18 04:25:21 +00:00
Chris Lattner
dfcfcb49fa
random cleanups
...
llvm-svn: 123221
2011-01-11 08:00:40 +00:00
Jay Foad
89afb43b1e
Remove all uses of the "ugly" method BranchInst::setUnconditionalDest().
...
llvm-svn: 123025
2011-01-07 20:25:56 +00:00
Duncan Sands
433c1679cf
Replace calls to ConstantFoldInstruction with calls to SimplifyInstruction
...
in two places that are really interested in simplified instructions, not
constants.
llvm-svn: 120044
2010-11-23 20:26:33 +00:00
Rafael Espindola
229e38f0fe
Be more consistent in using ValueToValueMapTy.
...
llvm-svn: 116387
2010-10-13 01:36:30 +00:00
Dan Gohman
a7908ae369
Preserve ScalarEvolution in the loop unroller.
...
llvm-svn: 109412
2010-07-26 18:02:06 +00:00
Devang Patel
0dc3c2d37e
Use ValueMap instead of DenseMap.
...
The ValueMapper used by various cloning utility maps MDNodes also.
llvm-svn: 106706
2010-06-24 00:33:28 +00:00
Devang Patel
b8f11de105
Cosmetic change.
...
Do not use "ValueMap" as a name for a local variable or an argument.
llvm-svn: 106698
2010-06-23 23:55:51 +00:00
Devang Patel
2176643241
Rename ValueMapTy as ValueToValueMapTy to clearly indicate that this has no replationship with ADT/ValueMap.
...
llvm-svn: 101950
2010-04-20 22:24:18 +00:00
Dan Gohman
2734ebd37f
Add a DominatorTree argument to isLCSSA so that it doesn't have to
...
compute a set of reachable blocks for itself each time it is called, which
is fairly frequently.
llvm-svn: 98179
2010-03-10 19:38:49 +00:00
Benjamin Kramer
1266d46d32
Don't bother with sprintf, just pass the Twine through.
...
llvm-svn: 94684
2010-01-27 19:58:47 +00:00
David Greene
627f40a9f2
Change errs() to dbgs().
...
llvm-svn: 92600
2010-01-05 01:26:41 +00:00
Dan Gohman
18fa5686f6
Add Loop contains utility methods for testing whether a loop
...
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
2009-12-18 01:24:09 +00:00
Chris Lattner
46b5c642b9
remove a bunch of extraneous LLVMContext arguments
...
from various APIs, addressing PR5325.
llvm-svn: 86231
2009-11-06 04:27:31 +00:00
Dan Gohman
415c64ea3f
Teach LoopUnroll how to bail if LoopSimplify can't give it what it needs.
...
llvm-svn: 86164
2009-11-05 19:44:06 +00:00
Dan Gohman
2d02ff8cbb
Revert r85667. LoopUnroll currently can't call utility functions which
...
auto-update the DominatorTree because it doesn't keep the DominatorTree
current while it works.
llvm-svn: 85670
2009-10-31 17:33:01 +00:00
Dan Gohman
041e2dbad1
Merge the enhancements from LoopUnroll's FoldBlockIntoPredecessor into
...
MergeBlockIntoPredecessor. This makes SimplifyCFG slightly more aggressive,
and makes it unnecessary for LoopUnroll to have its own copy of this code.
llvm-svn: 85667
2009-10-31 16:08:00 +00:00
Dan Gohman
fa8969f70e
Simplify this code.
...
llvm-svn: 85662
2009-10-31 14:46:50 +00:00
Dan Gohman
f70e76c435
Rename UnrollLoop.cpp to LoopUnroll.cpp, and LoopUnroll.cpp to
...
LoopUnrollPass.cpp, for consistency with other passes which are
similarly split.
llvm-svn: 85659
2009-10-31 14:37:31 +00:00