| Commit message (Collapse) | Author | Age | Files | Lines |
| ... | |
| |
|
|
| |
llvm-svn: 119038
|
| |
|
|
|
|
| |
Probably it should just be 1, but compromise with 3.
llvm-svn: 118718
|
| |
|
|
|
|
|
|
|
| |
nodes can be used in loops, this could result in infinite looping
if there is no recursion limit, so add such a limit. It is also
used for the SelectInst case because in theory there could be an
infinite loop there too if the basic block is unreachable.
llvm-svn: 118694
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
The simplifications performed here never create new instructions, they
only return existing instructions (or a constant), and so are always a
win. In theory they should transform (for example)
%z = and i32 %x, %y
%s = select i1 %cond, i32 %y, i32 %z
%r = and i32 %x, %s
into
%r = and i32 %x, y
but in practice they get into a fight with instcombine, and lose.
Unfortunately instcombine does a poor job in this case. Nonetheless
I'm committing this transform to make it easier to discuss what to
do to make peace with instcombine.
llvm-svn: 118679
|
| |
|
|
| |
llvm-svn: 118516
|
| |
|
|
|
|
|
| |
of a select instruction, the same as already exists for integer
comparisons.
llvm-svn: 118379
|
| |
|
|
|
|
|
|
| |
of a select instruction, see if doing the compare with the
true and false values of the select gives the same result.
If so, that can be used as the value of the comparison.
llvm-svn: 118378
|
| |
|
|
|
|
|
|
|
| |
Instruction by itself. Now that CorrelatedValuePropagation is
more careful not to call SimplifyInstructionsInBlock() on an unreachable block, the issue has been fixed at a higher level. Add
a big warning to SimplifyInstructionsInBlock() to hopefully prevent this in the future.
llvm-svn: 114117
|
| |
|
|
|
|
|
|
| |
simplification to try
to replace an instruction with itself. Add a predicate to the simplifier to prevent this case.
llvm-svn: 114097
|
| |
|
|
|
|
| |
Reassociate does this but it doesn't catch all cases (e.g. if the operands are i1).
llvm-svn: 113651
|
| |
|
|
|
|
|
|
|
|
| |
mutated by recursive simplification. This also enhances
ReplaceAndSimplifyAllUses to actually do a real RAUW
at the end of it, which updates any value handles
pointing to "From" to start pointing to "To". This
seems useful for debug info and random other VH users.
llvm-svn: 108415
|
| |
|
|
| |
llvm-svn: 108407
|
| |
|
|
| |
llvm-svn: 108401
|
| |
|
|
|
|
| |
inst simplify. No functionality change.
llvm-svn: 101873
|
| |
|
|
| |
llvm-svn: 97659
|
| |
|
|
| |
llvm-svn: 96777
|
| |
|
|
| |
llvm-svn: 90011
|
| |
|
|
|
|
| |
SimplifyGEPInst method in InstructionSimplify.h. No functionality change.
llvm-svn: 89980
|
| |
|
|
|
|
| |
into libanalysis and transformutils.
llvm-svn: 86735
|
| |
|
|
| |
llvm-svn: 86648
|
| |
|
|
| |
llvm-svn: 86645
|
| |
|
|
|
|
|
|
| |
except that the result may not be a constant. Switch jump threading to
use it so that it gets things like (X & 0) -> 0, which occur when phi preds
are deleted and the remaining phi pred was a zero.
llvm-svn: 86637
|
| |
|
|
| |
llvm-svn: 86635
|
| |
|
|
|
|
| |
simplification, this handles the foldable fcmp x,x cases among many others.
llvm-svn: 86627
|
| |
|
|
|
|
|
| |
Simplify[IF]Cmp pieces. Add some predicates to CmpInst to
determine whether a predicate is fp or int.
llvm-svn: 86624
|
| |
|
|
|
|
| |
individual operands instead of taking a temporary array
llvm-svn: 86619
|
|
|
takes decimated instructions and applies identities to them. This
is pretty minimal at this point, but I plan to pull some instcombine
logic out into these and similar routines.
llvm-svn: 86613
|