summaryrefslogtreecommitdiffstats
path: root/llvm/lib
Commit message (Collapse)AuthorAgeFilesLines
* LBRX no longer has an explicit SrcValueSDNode operand, so the typeDan Gohman2009-09-271-1/+1
| | | | | | | operand is now at index 2, rather than 3. This fixes the "Invalid child # of SDNode!" failures on PowerPC. llvm-svn: 82942
* simplify some code.Chris Lattner2009-09-271-2/+2
| | | | llvm-svn: 82936
* The bitcast case is not needed here: instcombine turns icmp(bitcast(x), ↵Chris Lattner2009-09-271-24/+7
| | | | | | null) -> icmp(x, null) already. llvm-svn: 82935
* calls are already unmovable, malloc doesn't need a special case.Chris Lattner2009-09-271-2/+1
| | | | llvm-svn: 82933
* calls to external functions are already marked overdefined, special casingChris Lattner2009-09-271-5/+1
| | | | | | malloc isn't needed. llvm-svn: 82932
* calls are already handled, malloc doesn't need a special case.Chris Lattner2009-09-271-3/+1
| | | | llvm-svn: 82931
* Round out the API for the new optimization flags.Nick Lewycky2009-09-271-0/+16
| | | | llvm-svn: 82930
* calls are rejected above, no need to special case malloc here.Chris Lattner2009-09-271-3/+2
| | | | llvm-svn: 82929
* remove special handling of bitcast(malloc), it will be handledChris Lattner2009-09-271-5/+4
| | | | | | when the loop inspects the bitcast operand. llvm-svn: 82928
* unlike the malloc instruction, "malloc" calls do not claim to be readonly, ↵Chris Lattner2009-09-271-1/+1
| | | | | | just nounwind. llvm-svn: 82927
* allow pushing icmps through phis with multiple uses and across critical edges.Chris Lattner2009-09-271-8/+23
| | | | | | These are important to push up to encourage jump threading. This shrinks 176.gcc a bit. llvm-svn: 82923
* Enhance the previous fix for PR4895 to allow more values than justChris Lattner2009-09-271-13/+26
| | | | | | | simple constants for the true/false value of the select. We now do phi translation etc. This really fixes PR4895 :) llvm-svn: 82917
* implement PR4895, by making FoldOpIntoPhi handle select conditionsChris Lattner2009-09-271-11/+42
| | | | | | | | | | that are phi nodes. Also tighten up FoldOpIntoPhi to treat constantexpr operands to phis just like other variables, avoiding moving constantexpr computations around. Patch by Daniel Dunbar. llvm-svn: 82913
* Use explicit structs instead of std::pair to map callee saved regs to spill ↵Tilmann Scheller2009-09-272-158/+158
| | | | | | slots. llvm-svn: 82909
* Delete a bogus comment.Dan Gohman2009-09-271-1/+0
| | | | llvm-svn: 82908
* Fix SCEVExpander's canonical addrec expansion code to work on loops thatDan Gohman2009-09-271-19/+12
| | | | | | | | aren't in canonical loop-simplify form, since it doesn't itself depend on LoopSimplify. This means handling loops without preheaders and loops with multiple backedges. llvm-svn: 82905
* Grab an LLVM Context from an instruction that exists rather than oneDan Gohman2009-09-271-1/+1
| | | | | | that is deleted in some situations. This fixes a use-after-free. llvm-svn: 82903
* Tell ScalarEvolution to forget everything it knows about a loop beforeDan Gohman2009-09-271-0/+5
| | | | | | rotating the loop, since loop rotation is a very significant change. llvm-svn: 82901
* Micro-optimize DerivedType::dropAllTypeUses.Dan Gohman2009-09-271-1/+2
| | | | llvm-svn: 82900
* Instead of testing whether an instruction dominates the loop preheader,Dan Gohman2009-09-271-3/+3
| | | | | | | | | test whether it properly dominates the loop header. This is equivalent when the loop has a preheader, and has the advantage of working when the loop doesn't have a preheader. Since IVUsers doesn't Require LoopSimplify, the loop isn't guaranteed to have a preheader. llvm-svn: 82899
* Add a properlyDominates member function to ScalarEvolution.Dan Gohman2009-09-271-0/+22
| | | | llvm-svn: 82898
* Remove a redundant #include.Dan Gohman2009-09-271-1/+0
| | | | llvm-svn: 82897
* Avoid using mutex locks if not in multithreaded mode by using a SmartScopedMutexTorok Edwin2009-09-271-2/+2
| | | | | | in RegisterStatistic. llvm-svn: 82896
* Enable pre-regalloc load / store multiple pass for Thumb2.Evan Cheng2009-09-273-67/+102
| | | | llvm-svn: 82893
* Remove dead code from this function and optimize. Update its correspondingNick Lewycky2009-09-271-19/+5
| | | | | | LangRef entry too. llvm-svn: 82890
* Instruction::clone does not need to take an LLVMContext&. Remove that andNick Lewycky2009-09-2713-70/+61
| | | | | | update all the callers. llvm-svn: 82889
* remove support for "NoSub" from regex. It seems like a minor optimizationChris Lattner2009-09-261-15/+12
| | | | | | and makes the API more annoying. Add a Regex::getNumMatches() method. llvm-svn: 82877
* Fix SimplifyLibCalls to transfer attributes from callees rather thanDan Gohman2009-09-261-4/+7
| | | | | | | calls, since direct calls don't always reflect the attributes of their callees. llvm-svn: 82867
* Fix a case where ScalarEvolution was expanding pointer arithmeticDan Gohman2009-09-261-3/+20
| | | | | | to inttoptr/ptrtoint unnecessarily. llvm-svn: 82864
* For the NSWSub support in the builder to actually be useable,Duncan Sands2009-09-261-0/+5
| | | | | | | there need to be corresponding changes to the constant folders, done in this patch. llvm-svn: 82862
* Convert comparisons like (x == infinity) to (x >= infinity) on targetsDan Gohman2009-09-261-0/+37
| | | | | | where FCMP_OEQ is not legal and FCMP_OGE is, such as x86. llvm-svn: 82861
* Really remove this option.Evan Cheng2009-09-261-3/+0
| | | | llvm-svn: 82838
* Remove a couple of unused command line options.Evan Cheng2009-09-261-7/+3
| | | | llvm-svn: 82837
* Add comment.Evan Cheng2009-09-261-0/+1
| | | | llvm-svn: 82836
* Don't hoist or sink instructions with physreg uses if the physreg isDan Gohman2009-09-262-6/+24
| | | | | | | allocatable. Even if it doesn't appear to have any defs, it may latter on after register allocation. llvm-svn: 82834
* Unbreak MachineLICM for instructions that reference RIP on x86-64 too.Dan Gohman2009-09-251-2/+21
| | | | llvm-svn: 82825
* Rename ConstantFP's getInf to getInfinity.Dan Gohman2009-09-252-3/+3
| | | | llvm-svn: 82823
* Move MachineMemOperand::getAlignment out of line, to avoid needingDan Gohman2009-09-251-0/+6
| | | | | | MathExtras.h in MachineMemOperand.h. llvm-svn: 82822
* Remove unused variable.Daniel Dunbar2009-09-251-2/+0
| | | | llvm-svn: 82821
* Transform pow(x, 0.5) to (x == -inf ? inf : fabs(sqrt(x))), which isDan Gohman2009-09-251-15/+19
| | | | | | typically faster then doing a general pow. llvm-svn: 82819
* Add a ConstantFP::getInf utility function for creating infinity ConstantFPs.Dan Gohman2009-09-251-0/+6
| | | | llvm-svn: 82818
* Fix MachineSink to be able to sink instructions that use physical registersDan Gohman2009-09-251-1/+14
| | | | | | | | which have no defs anywhere in the function. In particular, this fixes sinking of instructions that reference RIP on x86-64, which is currently being modeled as a register. llvm-svn: 82815
* RegenerateAnton Korobeynikov2009-09-251-4272/+4272
| | | | llvm-svn: 82814
* Simplify a few more uses of reg_iterator.Dan Gohman2009-09-253-12/+8
| | | | llvm-svn: 82812
* Simplify this code by using use_iterator instead of reg_iteratorDan Gohman2009-09-251-4/+2
| | | | | | and skipping the defs. llvm-svn: 82811
* Code clean up and prepare for Thumb2 support. No functionality changes.Evan Cheng2009-09-251-21/+49
| | | | llvm-svn: 82805
* Flip -disable-post-RA-scheduler to -post-RA-scheduler.Evan Cheng2009-09-251-5/+7
| | | | llvm-svn: 82803
* Handle sqrt in CannotBeNegativeZero. absf and abslDale Johannesen2009-09-251-3/+7
| | | | | | appear to be misspellings, removed in favor of fabs*. llvm-svn: 82796
* Improve MachineMemOperand handling.Dan Gohman2009-09-2521-410/+543
| | | | | | | | | | | | | | | | | | | | | - Allocate MachineMemOperands and MachineMemOperand lists in MachineFunctions. This eliminates MachineInstr's std::list member and allows the data to be created by isel and live for the remainder of codegen, avoiding a lot of copying and unnecessary translation. This also shrinks MemSDNode. - Delete MemOperandSDNode. Introduce MachineSDNode which has dedicated fields for MachineMemOperands. - Change MemSDNode to have a MachineMemOperand member instead of its own fields with the same information. This introduces some redundancy, but it's more consistent with what MachineInstr will eventually want. - Ignore alignment when searching for redundant loads for CSE, but remember the greatest alignment. Target-specific code which previously used MemOperandSDNodes with generic SDNodes now use MemIntrinsicSDNodes, with opcodes in a designated range so that the SelectionDAG framework knows that MachineMemOperand information is available. llvm-svn: 82794
* Rename getTargetNode to getMachineNode, for consistency with theDan Gohman2009-09-2515-423/+427
| | | | | | | | naming scheme used in SelectionDAG, where there are multiple kinds of "target" nodes, but "machine" nodes are nodes which represent a MachineInstr. llvm-svn: 82790
OpenPOWER on IntegriCloud