summaryrefslogtreecommitdiffstats
path: root/llvm/lib
Commit message (Collapse)AuthorAgeFilesLines
* 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
* Finish scheduling itineraries for NEON.David Goodwin2009-09-254-382/+553
| | | | llvm-svn: 82788
* Revert 82694 "Auto-upgrade malloc instructions to malloc calls." because it ↵Victor Hernandez2009-09-256-74/+22
| | | | | | causes regressions in the nightly tests. llvm-svn: 82784
* Make sure sin, cos, sqrt calls are marked readonlyDale Johannesen2009-09-251-3/+6
| | | | | | | before producing FSIN, FCOS, FSQRT. If they aren't so marked we have to assume they might set errno. llvm-svn: 82781
* Generate FSQRT from calls to the sqrt function, whichDale Johannesen2009-09-251-0/+9
| | | | | | | | | | | | allows appropriate backends to generate a sqrt instruction. On x86, this isn't done at -O0 because we go through FastISel instead. This is a behavior change from before this series of sqrt patches started. I think this is OK considering that compile speed is most important at -O0, but could be convinced otherwise. llvm-svn: 82778
* Add some comments to clarify things that I discovered this week.Bob Wilson2009-09-251-2/+6
| | | | llvm-svn: 82773
* pr4926: ARM requires the stack pointer to be aligned, even for leaf functions.Bob Wilson2009-09-252-15/+21
| | | | | | | | | | | | | | | | | | | | For the AAPCS ABI, SP must always be 4-byte aligned, and at any "public interface" it must be 8-byte aligned. For the older ARM APCS ABI, the stack alignment is just always 4 bytes. For X86, we currently align SP at entry to a function (e.g., to 16 bytes for Darwin), but no stack alignment is needed at other times, such as for a leaf function. After discussing this with Dan, I decided to go with the approach of adding a new "TransientStackAlignment" field to TargetFrameInfo. This value specifies the stack alignment that must be maintained even in between calls. It defaults to 1 except for ARM, where it is 4. (Some other targets may also want to set this if they have similar stack requirements. It's not currently required for PPC because it sets targetHandlesStackFrameRounding and handles the alignment in target-specific code.) The existing StackAlignment value specifies the alignment upon entry to a function, which is how we've been using it anyway. llvm-svn: 82767
* Fix combiner-aa issue with bases which are different, but can alias.Nate Begeman2009-09-251-14/+34
| | | | | | | Previously, it treated GV+28 GV+0 as different bases, and assumed they could not alias. llvm-svn: 82753
OpenPOWER on IntegriCloud