- May 04, 2011
-
-
Andrew Trick authored
Only create a canonical IV for backedge taken count if it will actually be used by LinearFunctionTestReplace. And some related cleanup, preparing to reduce dependence on canonical IVs. No significant effect on x86 or arm in the test-suite. llvm-svn: 130799
-
- Apr 28, 2011
-
-
Andrew Trick authored
llvm-svn: 130408
-
Andrew Trick authored
llvm-svn: 130350
-
Andrew Trick authored
Modified LinearFunctionTestReplace to push the condition on the dead list instead of eagerly deleting it. This can cause unnecessary IV rewrites, which should have no effect on codegen and will not be an issue once we stop generating canonical IVs. llvm-svn: 130340
-
- Mar 30, 2011
- Mar 18, 2011
-
-
Andrew Trick authored
llvm-svn: 127842
-
Andrew Trick authored
SCEV may generate expressions composed of multiple pointers, which can lead to invalid GEP expansion. Until we can teach SCEV to follow strict pointer rules, make sure no bad GEPs creep into IR. Fixes rdar://problem/9038671. llvm-svn: 127839
-
Andrew Trick authored
llvm-svn: 127837
-
- Jan 09, 2011
-
-
Chris Lattner authored
that have the bit set. llvm-svn: 123104
-
- Nov 17, 2010
-
-
Dan Gohman authored
functions of ScalarEvolution, in preparation for memoization and other optimizations. llvm-svn: 119562
-
- Oct 19, 2010
-
-
Owen Anderson authored
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
-
- Oct 12, 2010
-
-
Owen Anderson authored
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
-
- Oct 08, 2010
-
-
Owen Anderson authored
llvm-svn: 115996
-
- Sep 18, 2010
-
-
Gabor Greif authored
llvm-svn: 114277
-
- Aug 06, 2010
-
-
Owen Anderson authored
llvm-svn: 110460
-
Owen Anderson authored
llvm-svn: 110410
-
Owen Anderson authored
ID member as the sole unique type identifier. Clean up APIs related to this change. llvm-svn: 110396
-
- Jul 22, 2010
-
-
Gabor Greif authored
llvm-svn: 109103
-
Owen Anderson authored
llvm-svn: 109045
-
- Jul 20, 2010
-
-
Dan Gohman authored
use getIncomingValueForBlock instead of LoopInfo::getCanonicalInductionVariableIncrement. llvm-svn: 108865
-
- Jul 09, 2010
-
-
Gabor Greif authored
llvm-svn: 107976
-
- Jun 18, 2010
-
-
Dan Gohman authored
This fixes PR7333. llvm-svn: 106267
-
- May 04, 2010
-
-
Dan Gohman authored
same, now that getConstant has overloads consistent with ConstantInt::get. llvm-svn: 102965
-
- Apr 13, 2010
-
-
Dan Gohman authored
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
-
- Apr 12, 2010
-
-
Dan Gohman authored
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
-
Dan Gohman authored
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
-
Dan Gohman authored
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
-
Dan Gohman authored
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
-
Dan Gohman authored
llvm-svn: 101002
-
Dan Gohman authored
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
-
- Apr 11, 2010
-
-
Dan Gohman authored
that it's only testing for the entry condition, not full loop-invariant conditions. llvm-svn: 100979
-
- Apr 08, 2010
-
-
Dan Gohman authored
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
-
- Apr 03, 2010
-
-
Chris Lattner authored
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
-
Chris Lattner authored
checker. Amusingly, we already had tests that we should have rejects because they would be miscompiled in the testsuite. The remaining issue with this is that we don't check that the branch causes us to exit the loop if it fails, so we don't actually know if we remain in bounds. llvm-svn: 100284
-
Chris Lattner authored
to a signed vs unsigned value depending on the sign of the constant fp means that we can't distinguish between a truly negative number and a positive number so large the 32nd bit is set. So, do don't this! llvm-svn: 100283
-
Chris Lattner authored
stuff. More bugs remain though. llvm-svn: 100282
-
Chris Lattner authored
the required validity checks in the first place, and supporting a condition large enough to require the 32'nd bit isn't worth it. llvm-svn: 100280
-
Chris Lattner authored
of llvm. llvm-svn: 100276
-
Chris Lattner authored
no uses, it would have been deleted by RecursivelyDeleteTriviallyDeadInstructions llvm-svn: 100275
-