summaryrefslogtreecommitdiffstats
path: root/llvm/lib/Analysis/InstructionSimplify.cpp
Commit message (Collapse)AuthorAgeFilesLines
* Revert r114097, adding back in the assertion against replacing an ↵Owen Anderson2010-09-161-24/+11
| | | | | | | | | 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
* Fix PR8161, in which an unreachable loop causes recursive instruction ↵Owen Anderson2010-09-161-11/+24
| | | | | | | | simplification to try to replace an instruction with itself. Add a predicate to the simplifier to prevent this case. llvm-svn: 114097
* Teach InstructionSimplify to fold (A & B) & A -> A & B and (A | B) | A -> A | B.Benjamin Kramer2010-09-101-0/+20
| | | | | | Reassociate does this but it doesn't catch all cases (e.g. if the operands are i1). llvm-svn: 113651
* Fix PR7647, handling the case when 'To' ends up being Chris Lattner2010-07-151-14/+34
| | | | | | | | | | 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
* Revert r108401; it breaks bootstrap :(Eli Friedman2010-07-151-3/+1
| | | | llvm-svn: 108407
* Add AssertingVH which makes PR7647 break consistently.Eli Friedman2010-07-151-1/+3
| | | | llvm-svn: 108401
* move some select simplifications out out instcombine intoChris Lattner2010-04-201-0/+32
| | | | | | inst simplify. No functionality change. llvm-svn: 101873
* fix incorrect folding of icmp with undef, PR6481.Chris Lattner2010-03-031-4/+3
| | | | llvm-svn: 97659
* Constant-fold certain comparisons with infinity and negative infinity.Dan Gohman2010-02-221-0/+26
| | | | llvm-svn: 96777
* factor some logic out of instcombine into a new SimplifyAddInst method.Chris Lattner2009-11-271-6/+35
| | | | llvm-svn: 90011
* factor some instcombine simplifications for getelementptr out to a new Chris Lattner2009-11-271-0/+32
| | | | | | SimplifyGEPInst method in InstructionSimplify.h. No functionality change. llvm-svn: 89980
* move some generally useful functions out of jump threadingChris Lattner2009-11-101-0/+35
| | | | | | into libanalysis and transformutils. llvm-svn: 86735
* I misread the parens, not so redundant after all.Chris Lattner2009-11-101-4/+4
| | | | llvm-svn: 86648
* remove some redundant parens.Chris Lattner2009-11-101-4/+4
| | | | llvm-svn: 86645
* add a new SimplifyInstruction API, which is like ConstantFoldInstruction, Chris Lattner2009-11-101-0/+20
| | | | | | | | 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
* factor simplification logic for AND and OR out to InstSimplify from instcombine.Chris Lattner2009-11-101-24/+149
| | | | llvm-svn: 86635
* pull a bunch of logic out of instcombine into instsimplify for compare Chris Lattner2009-11-091-5/+93
| | | | | | simplification, this handles the foldable fcmp x,x cases among many others. llvm-svn: 86627
* rename SimplifyCompare -> SimplifyCmpInst and split it into Chris Lattner2009-11-091-10/+35
| | | | | | | Simplify[IF]Cmp pieces. Add some predicates to CmpInst to determine whether a predicate is fp or int. llvm-svn: 86624
* fix ConstantFoldCompareInstOperands to take the LHS/RHS asChris Lattner2009-11-091-4/+2
| | | | | | individual operands instead of taking a temporary array llvm-svn: 86619
* stub out a new libanalysis "instruction simplify" interface thatChris Lattner2009-11-091-0/+57
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
OpenPOWER on IntegriCloud