Revision tags: llvmorg-2.9.0-rc1 |
|
#
a337f5ec |
| 09-Jan-2011 |
Chris Lattner <sabre@nondot.org> |
reduce indentation. Print <nuw> and <nsw> when dumping SCEV AddRec's that have the bit set.
llvm-svn: 123104
|
#
afd6db99 |
| 17-Nov-2010 |
Dan Gohman <gohman@apple.com> |
Move SCEV::isLoopInvariant and hasComputableLoopEvolution to be member functions of ScalarEvolution, in preparation for memoization and other optimizations.
llvm-svn: 119562
|
#
6c18d1aa |
| 19-Oct-2010 |
Owen Anderson <resistor@mac.com> |
Get rid of static constructors for pass registration. Instead, every pass exposes an initializeMyPassFunction(), which must be called in the pass's constructor. This function uses static dependency
Get rid of static constructors for pass registration. Instead, every pass 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
show more ...
|
#
8ac477ff |
| 12-Oct-2010 |
Owen Anderson <resistor@mac.com> |
Begin adding static dependence information to passes, which will allow us to perform initialization without static constructors AND without explicit initialization by the client. For the moment, pas
Begin adding static dependence information to passes, which will allow us to 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
show more ...
|
#
df7a4f25 |
| 07-Oct-2010 |
Owen Anderson <resistor@mac.com> |
Now with fewer extraneous semicolons!
llvm-svn: 115996
|
Revision tags: llvmorg-2.8.0, llvmorg-2.8.0-rc3, llvmorg-2.8.0-rc2 |
|
#
aaa22cf1 |
| 18-Sep-2010 |
Gabor Greif <ggreif@gmail.com> |
do not rely on the implicit-dereference semantics of dyn_cast_or_null
llvm-svn: 114277
|
Revision tags: llvmorg-2.8.0-rc1, llvmorg-2.8.0-rc0 |
|
#
a7aed186 |
| 06-Aug-2010 |
Owen Anderson <resistor@mac.com> |
Reapply r110396, with fixes to appease the Linux buildbot gods.
llvm-svn: 110460
|
#
bda59bd2 |
| 06-Aug-2010 |
Owen Anderson <resistor@mac.com> |
Revert r110396 to fix buildbots.
llvm-svn: 110410
|
#
755aceb5 |
| 05-Aug-2010 |
Owen Anderson <resistor@mac.com> |
Don't use PassInfo* as a type identifier for passes. Instead, use the address of the static ID member as the sole unique type identifier. Clean up APIs related to this change.
llvm-svn: 110396
|
#
dde79d8f |
| 22-Jul-2010 |
Gabor Greif <ggreif@gmail.com> |
mass elimination of reliance on automatic iterator dereferencing
llvm-svn: 109103
|
#
a57b97e7 |
| 21-Jul-2010 |
Owen Anderson <resistor@mac.com> |
Fix batch of converting RegisterPass<> to INTIALIZE_PASS().
llvm-svn: 109045
|
#
12725c7d |
| 20-Jul-2010 |
Dan Gohman <gohman@apple.com> |
Remember that the induction variable is always a PHINode and use getIncomingValueForBlock instead of LoopInfo::getCanonicalInductionVariableIncrement.
llvm-svn: 108865
|
#
e82532a1 |
| 09-Jul-2010 |
Gabor Greif <ggreif@gmail.com> |
cache result of operator*
llvm-svn: 107976
|
#
f3aea7ae |
| 18-Jun-2010 |
Dan Gohman <gohman@apple.com> |
Disable indvars on loops when LoopSimplify form is not available. This fixes PR7333.
llvm-svn: 106267
|
#
1d2ded75 |
| 03-May-2010 |
Dan Gohman <gohman@apple.com> |
Use getConstant instead of getIntegerSCEV. The two are basically the same, now that getConstant has overloads consistent with ConstantInt::get.
llvm-svn: 102965
|
Revision tags: llvmorg-2.7.0 |
|
#
5867a56d |
| 13-Apr-2010 |
Dan Gohman <gohman@apple.com> |
Teach IndVarSimplify how to eliminate remainder operators where the numerator is an induction variable. For example, with code like this:
for (i=0;i<n;++i) x[i%n] = 0;
IndVarSimplify will now
Teach IndVarSimplify how to eliminate remainder operators where the numerator is an induction variable. For example, with code like this:
for (i=0;i<n;++i) x[i%n] = 0;
IndVarSimplify will now recognize that i is always less than n inside the loop, and eliminate the remainder.
llvm-svn: 101113
show more ...
|
#
4a645b88 |
| 12-Apr-2010 |
Dan Gohman <gohman@apple.com> |
Suppress LinearFunctionTestReplace when the computed backedge-taken expression is a UDiv and it doesn't appear that the UDiv came from the user's source.
ScalarEvolution has recently figured out how
Suppress LinearFunctionTestReplace when the computed backedge-taken expression is a UDiv and it doesn't appear that the UDiv came from the user's source.
ScalarEvolution has recently figured out how to compute a tripcount expression for the inner loop in SingleSource/Benchmarks/Shootout/sieve.c, using a udiv. Emitting a udiv instruction dramatically slows down the enclosing loop.
llvm-svn: 101068
show more ...
|
#
07f6563e |
| 12-Apr-2010 |
Dan Gohman <gohman@apple.com> |
Move the EliminateIVUsers call back out to its original location. Now that a ScalarEvolution bug with overflow handling is fixed, the normal analysis code will automatically decline to operate on the
Move the EliminateIVUsers call back out to its original location. Now that a ScalarEvolution bug with overflow handling is fixed, the normal analysis code will automatically decline to operate on the icmp instructions which are responsible for the loop exit.
llvm-svn: 101032
show more ...
|
#
15f90c29 |
| 12-Apr-2010 |
Dan Gohman <gohman@apple.com> |
Use RecursivelyDeleteTriviallyDeadInstructions in EliminateIVComparisons, instead of deleting just the user. This makes it more consistent with other code in IndVarSimplify, and theoretically can eli
Use RecursivelyDeleteTriviallyDeadInstructions in EliminateIVComparisons, instead of deleting just the user. This makes it more consistent with other code in IndVarSimplify, and theoretically can eliminate more users earlier.
llvm-svn: 101027
show more ...
|
#
fa5ad797 |
| 12-Apr-2010 |
Dan Gohman <gohman@apple.com> |
Re-apply r101000, with a fix: Don't eliminate an icmp which is part of the loop exit test. This usually doesn't come up for a variety of reasons, but it isn't impossible, so make IndVarSimplify handl
Re-apply r101000, with a fix: Don't eliminate an icmp which is part of the loop exit test. This usually doesn't come up for a variety of reasons, but it isn't impossible, so make IndVarSimplify handle it conservatively.
llvm-svn: 101008
show more ...
|
#
c0f1efaf |
| 12-Apr-2010 |
Dan Gohman <gohman@apple.com> |
Revert 101000, which is breaking self-host builds.
llvm-svn: 101002
|
#
af4ab1b6 |
| 11-Apr-2010 |
Dan Gohman <gohman@apple.com> |
Teach IndVarSimplify how to eliminate comparisons involving induction variables. For example, with code like this:
for (i=0;i<n;++i) if (i<n) x[i] = 0;
IndVarSimplify will now recognize
Teach IndVarSimplify how to eliminate comparisons involving induction variables. For example, with code like this:
for (i=0;i<n;++i) if (i<n) x[i] = 0;
IndVarSimplify will now recognize that i is always less than n inside the loop, and eliminate the if.
llvm-svn: 101000
show more ...
|
#
b50349a9 |
| 11-Apr-2010 |
Dan Gohman <gohman@apple.com> |
Rename isLoopGuardedByCond to isLoopEntryGuardedByCond, to emphasise that it's only testing for the entry condition, not full loop-invariant conditions.
llvm-svn: 100979
|
#
d006ab90 |
| 07-Apr-2010 |
Dan Gohman <gohman@apple.com> |
Generalize IVUsers to track arbitrary expressions rather than expressions explicitly split into stride-and-offset pairs. Also, add the ability to track multiple post-increment loops on the same expre
Generalize IVUsers to track arbitrary expressions rather than expressions explicitly split into stride-and-offset pairs. Also, add the ability to track multiple post-increment loops on the same expression.
This refines the concept of "normalizing" SCEV expressions used for to post-increment uses, and introduces a dedicated utility routine for normalizing and denormalizing expressions.
This fixes the expansion of expressions which are post-increment users of more than one loop at a time. More broadly, this takes LSR another step closer to being able to reason about more than one loop at a time.
llvm-svn: 100699
show more ...
|
#
ecb53631 |
| 03-Apr-2010 |
Chris Lattner <sabre@nondot.org> |
require that the branch being controlled by the IV exits the loop. With this information we can guarantee the iteration count of the loop is bounded by the compare. I think this xforms is finall
require that the branch being controlled by the IV exits the loop. With this information we can guarantee the iteration count of the loop is bounded by the compare. I think this xforms is finally safe now.
llvm-svn: 100285
show more ...
|