| Commit message (Collapse) | Author | Age | Files | Lines |
| ... | |
| |
|
|
|
|
| |
Fixes PR11375: Different results for 'clang++ huh.cpp'...
llvm-svn: 144746
|
| |
|
|
|
|
|
|
| |
We've been hitting asserts in this code due to the many supported
combintions of modes (iv-rewrite/no-iv-rewrite) and IV types. This
second rewrite of the code attempts to deal with these cases systematically.
llvm-svn: 143546
|
| |
|
|
|
|
| |
Narrowest possible fix for PR11279.
llvm-svn: 143522
|
| |
|
|
|
|
| |
Fixes rdar://10359193 Indvar LinearFunctionTestReplace assertion
llvm-svn: 143183
|
| |
|
|
|
|
| |
don't do that. <rdar://problem/10352360>
llvm-svn: 143093
|
| |
|
|
|
|
| |
match the required format.
llvm-svn: 141825
|
| |
|
|
|
|
|
|
|
|
|
| |
IVs.
Indvars previously chose randomly between congruent IVs. Now it will
bias the decision toward IVs that SCEVExpander likes to create. This
was not done to fix any problem, it's just a welcome side effect of
factoring code.
llvm-svn: 141633
|
| |
|
|
| |
llvm-svn: 140671
|
| |
|
|
|
|
|
|
| |
to be uniqued, without any benefit.
If someone prefers %tmp42 to %42, run instnamer.
llvm-svn: 140634
|
| |
|
|
| |
llvm-svn: 140026
|
| |
|
|
| |
llvm-svn: 139842
|
| |
|
|
|
|
| |
PR10920.
llvm-svn: 139583
|
| |
|
|
| |
llvm-svn: 139579
|
| |
|
|
| |
llvm-svn: 139574
|
| |
|
|
|
|
| |
which is only relevant with canonical IVs
llvm-svn: 139556
|
| |
|
|
|
|
| |
Otherwise this case is now covered by no-iv-rewrite.ll.
llvm-svn: 139552
|
| |
|
|
|
|
|
| |
which is relevant with canonical IVs. Anything else being checked by
these tests is already covered by early CSE.
llvm-svn: 139535
|
| |
|
|
| |
llvm-svn: 139518
|
| |
|
|
|
|
| |
default change.
llvm-svn: 139517
|
| |
|
|
| |
llvm-svn: 139504
|
| |
|
|
| |
llvm-svn: 138927
|
| |
|
|
| |
llvm-svn: 138651
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
recurrence, the initial values low bits can sometimes be ignored.
To take advantage of this, added FoldIVUser to IndVarSimplify to fold
an IV operand into a udiv/lshr if the operator doesn't affect the
result.
-indvars -disable-iv-rewrite now transforms
i = phi i4
i1 = i0 + 1
idx = i1 >> (2 or more)
i4 = i + 4
into
i = phi i4
idx = i0 >> ...
i4 = i + 4
llvm-svn: 137013
|
| |
|
|
| |
llvm-svn: 135568
|
| |
|
|
| |
llvm-svn: 135559
|
| |
|
|
| |
llvm-svn: 135558
|
| |
|
|
|
|
|
|
|
|
| |
For -disable-iv-rewrite, perform LFTR without generating a new
"canonical" induction variable. Instead find the "best" existing
induction variable for use in the loop exit test and compute the final
value of that IV for use in the new loop exit test. In short,
convert to a simple eq/ne exit test as long as it's cheap to do so.
llvm-svn: 135420
|
| |
|
|
| |
llvm-svn: 134530
|
| |
|
|
| |
llvm-svn: 134306
|
| |
|
|
|
|
| |
overflow.
llvm-svn: 134177
|
| |
|
|
| |
llvm-svn: 134124
|
| |
|
|
| |
llvm-svn: 134112
|
| |
|
|
|
|
| |
mean they can be removed.
llvm-svn: 134054
|
| |
|
|
| |
llvm-svn: 133998
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
ops.
This is a rewrite of the IV simplification algorithm used by
-disable-iv-rewrite. To avoid perturbing the default mode, I
temporarily split the driver and created SimplifyIVUsersNoRewrite. The
idea is to avoid doing opcode/pattern matching inside
IndVarSimplify. SCEV already does it. We want to optimize with the
full generality of SCEV, but optimize def-use chains top down on-demand rather
than rewriting the entire expression bottom-up. This was easy to do
for operations that SCEV can prove are identity function. So we're now
eliminating bitmasks and zero extends this way.
A result of this rewrite is that indvars -disable-iv-rewrite no longer
requires IVUsers.
llvm-svn: 133502
|
| |
|
|
|
|
| |
are either unreduced or only test old syntax.
llvm-svn: 133228
|
| |
|
|
| |
llvm-svn: 132516
|
| |
|
|
|
|
| |
so that their sign extended forms are congruent when no overflow occurs.
llvm-svn: 132360
|
| |
|
|
|
|
|
|
| |
Use a proper worklist for use-def traversal without holding onto an
iterator. Now that we process all IV uses, we need complete logic for
resusing existing derived IV defs. See HoistStep.
llvm-svn: 132103
|
| |
|
|
|
|
| |
cleanup and overdue test cases.
llvm-svn: 132038
|
| |
|
|
| |
llvm-svn: 131946
|
| |
|
|
| |
llvm-svn: 131939
|
| |
|
|
|
|
|
|
|
| |
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
|
| |
|
|
|
|
|
|
| |
For example, on 32-bit architecture, don't promote all uses of the IV
to 64-bits just because one use is a 64-bit cast.
Alternate implementation of the patch by Arnaud de Grandmaison.
llvm-svn: 127884
|
| |
|
|
| |
llvm-svn: 116004
|
| |
|
|
| |
llvm-svn: 112892
|
| |
|
|
|
|
| |
and there seems to be no reason not to.
llvm-svn: 112812
|
| |
|
|
| |
llvm-svn: 112469
|
| |
|
|
|
|
|
|
| |
it inserted rather than using LoopInfo::getCanonicalInductionVariable to
rediscover it, since that doesn't work on non-canonical loops. This fixes
infinite recurrsion on such loops; PR7562.
llvm-svn: 109419
|
| |
|
|
| |
llvm-svn: 108491
|