summaryrefslogtreecommitdiffstats
path: root/llvm/lib/CodeGen/SelectionDAG/SelectionDAG.cpp
Commit message (Collapse)AuthorAgeFilesLines
...
* Make CodeGen TBAA-aware.Dan Gohman2010-10-201-10/+15
| | | | llvm-svn: 116890
* Add a pre-dispatch SjLj EH hook on the unwind edge for targets to do anyJim Grosbach2010-10-191-0/+1
| | | | | | | setup they require. Use this for ARM/Darwin to rematerialize the base pointer from the frame pointer when required. rdar://8564268 llvm-svn: 116879
* finish pushing MachinePointerInfo through selectiondags. At this point,Chris Lattner2010-09-211-10/+0
| | | | | | | I think I've audited all uses, so it should be dependable for address spaces, and the pointer+offset info should also be accurate when there. llvm-svn: 114464
* eliminate an old SelectionDAG::getTruncStore method, propagatingChris Lattner2010-09-211-10/+0
| | | | | | MachinePointerInfo around more. llvm-svn: 114452
* eliminate last SelectionDAG::getLoad old entrypoint, on to stores.Chris Lattner2010-09-211-13/+0
| | | | llvm-svn: 114450
* fix the code that infers SV info to be correct when dealingChris Lattner2010-09-211-28/+53
| | | | | | with an indexed load/store that has an offset in the index. llvm-svn: 114449
* propagate MachinePointerInfo through various uses of the oldChris Lattner2010-09-211-10/+0
| | | | | | SelectionDAG::getExtLoad overload, and eliminate it. llvm-svn: 114446
* continue MachinePointerInfo'izing, eliminating use of one of the oldChris Lattner2010-09-211-10/+0
| | | | | | getLoad overloads. llvm-svn: 114443
* reimplement memcpy/memmove/memset lowering to use MachinePointerInfoChris Lattner2010-09-211-24/+47
| | | | | | | instead of srcvalue/offset pairs. This corrects SV info for mem operations whose size is > 32-bits. llvm-svn: 114401
* add overloads for SelectionDAG::getLoad, getStore, getTruncStore that take aChris Lattner2010-09-211-18/+47
| | | | | | | MachinePointerInfo. Among other virtues, this doesn't silently truncate the svoffset to 32-bits. llvm-svn: 114399
* simplify interface to SelectionDAG::getMemIntrinsicNode, making it take a ↵Chris Lattner2010-09-211-5/+4
| | | | | | MachinePointerInfo llvm-svn: 114397
* chagne interface to SelectionDAG::getAtomic to take a MachinePointerInfo,Chris Lattner2010-09-211-11/+3
| | | | | | eliminating some weird "infer a frame address" logic which was dead. llvm-svn: 114396
* force clients of MachineFunction::getMachineMemOperand to provide aChris Lattner2010-09-211-7/+8
| | | | | | | MachinePointerInfo, propagating the type out a level of API. Remove the old MachineFunction::getMachineMemOperand impl. llvm-svn: 114393
* Invert the logic of reachesChainWithoutSideEffects(). What we want to check ↵Owen Anderson2010-09-181-7/+7
| | | | | | | | | | is that there is NO path to the destination containing side effects, not that SOME path contains no side effects. In practice, this only manifests with CombinerAA enabled, because otherwise the chain has little to no branching, so "any" is effectively equivalent to "all". llvm-svn: 114268
* zap unused method. x86 is the only user and already has a more powerfull versionBruno Cardoso Lopes2010-08-311-29/+0
| | | | llvm-svn: 112571
* Prefix `next' iterator operation with `llvm::'.Oscar Fuentes2010-08-021-1/+1
| | | | | | | | Fixes potential ambiguity problems on VS 2010. Patch by nobled! llvm-svn: 110029
* Make SDNode::dump() print a newline at the end.Dan Gohman2010-07-231-0/+1
| | | | llvm-svn: 109234
* keep in 80 colsGabor Greif2010-07-221-2/+4
| | | | llvm-svn: 109122
* Split -enable-finite-only-fp-math to two options:Evan Cheng2010-07-151-1/+1
| | | | | | -enable-no-nans-fp-math and -enable-no-infs-fp-math. All of the current codegen fp math optimizations only care whether the fp arithmetics arguments and results can never be NaN. llvm-svn: 108465
* Move getExtLoad() and (some) getLoad() DebugLoc argument after EVT argument ↵Evan Cheng2010-07-071-10/+10
| | | | | | for consistency sake. llvm-svn: 107820
* Propagate debug loc.Devang Patel2010-07-061-4/+5
| | | | llvm-svn: 107710
* Infer alignments of fixed frame objects when they are constructed. This ↵Evan Cheng2010-07-041-17/+0
| | | | | | ensures remat'ed loads from fixed slots have the right alignments. llvm-svn: 107591
* When splitting a VAARG, remember its alignment.Rafael Espindola2010-06-261-3/+4
| | | | | | This produces terrible but correct code. llvm-svn: 106952
* Remove variables which are assigned to but for which the valueDuncan Sands2010-06-251-1/+0
| | | | | | is not used. Spotted by gcc-4.6. llvm-svn: 106854
* Eliminate the other half of the BRCOND optimization, and updateDan Gohman2010-06-241-7/+0
| | | | | | as many tests as possible. llvm-svn: 106749
* Eliminate the first have of the optimization which eliminates BRCONDDan Gohman2010-06-241-3/+1
| | | | | | | | | | | | | when the condition is constant. This optimization shouldn't be necessary, because codegen shouldn't be able to find dead control paths that the IR-level optimizer can't find. And it's undesirable, because it encourages bugpoint to leave "br i1 false" branches in its output. And it wasn't updating the CFG. I updated all the tests I could, but some tests are too reduced and I wasn't able to meaningfully preserve them. llvm-svn: 106748
* Reapply r106634, now that the bug it exposed is fixed.Dan Gohman2010-06-241-0/+8
| | | | llvm-svn: 106746
* Revert r106263, "Fold the ShrinkDemandedOps pass into the regular ↵Daniel Dunbar2010-06-231-8/+0
| | | | | | DAGCombiner pass,"... it was causing both 'file' (with clang) and 176.gcc (with llvm-gcc) to be miscompiled. llvm-svn: 106634
* Use A.append(...) instead of A.insert(A.end(), ...) when A is aDan Gohman2010-06-211-3/+3
| | | | | | SmallVector, and other SmallVector simplifications. llvm-svn: 106452
* Don't replace the old Ordering object with a new one; just clear()Dan Gohman2010-06-181-2/+1
| | | | | | the old one. llvm-svn: 106284
* Don't call clear() on DbgInfo when it's going to be deleted anyway.Dan Gohman2010-06-181-3/+0
| | | | | | | Don't replace the old DbgInfo with a new one when clear() on the old one is sufficient. llvm-svn: 106283
* Change UpdateNodeOperands' operand and return value from SDValue toDan Gohman2010-06-181-23/+19
| | | | | | SDNode *, since it doesn't care about the ResNo value. llvm-svn: 106282
* Fold the ShrinkDemandedOps pass into the regular DAGCombiner pass,Dan Gohman2010-06-181-0/+8
| | | | | | which is faster, simpler, and less surprising. llvm-svn: 106263
* Handle ext(ext(x)) -> ext(x) immediately, since it's simple.Dan Gohman2010-06-181-1/+2
| | | | llvm-svn: 106256
* Fill in missing support for ISD::FEXP, ISD::FPOWI, and friends.Dan Gohman2010-06-011-2/+7
| | | | llvm-svn: 105283
* fix PR6623: when optimizing for size, don't inline memcpy/memsetsChris Lattner2010-05-311-0/+9
| | | | | | | | | that are too large. This causes the freebsd bootloader to be too large apparently. It's unclear if this should be an -Os or -Oz thing. Thoughts welcome. llvm-svn: 105228
* the 'limit' argument to FindOptimalMemOpLowering is unsigned, not uint64_t.Chris Lattner2010-05-311-6/+3
| | | | llvm-svn: 105226
* SelectionDAG shouldn't have a FunctionLoweringInfo member. RegsForValueDan Gohman2010-05-291-2/+1
| | | | | | | shouldn't have a TargetLoweringInfo member. And FunctionLoweringInfo::set doesn't needs its EnableFastISel argument. llvm-svn: 105101
* Adjust eh.sjlj.setjmp to properly have a chain and to have an opcode entry inJim Grosbach2010-05-261-0/+2
| | | | | | ISD::. No functional change. llvm-svn: 104734
* Improve assertion messages.Dale Johannesen2010-05-151-3/+8
| | | | llvm-svn: 103882
* Implement a bunch more TargetSelectionDAGInfo infrastructure.Dan Gohman2010-05-111-4/+6
| | | | | | | | Move EmitTargetCodeForMemcpy, EmitTargetCodeForMemset, and EmitTargetCodeForMemmove out of TargetLowering and into SelectionDAGInfo to exercise this. llvm-svn: 103481
* Add an assertion to catch attempts to access off the end of the array.Duncan Sands2010-05-101-0/+2
| | | | | | Based on a patch by Javier Martinez. llvm-svn: 103391
* Fix PR 7087, and probably other things, by extendingDale Johannesen2010-05-071-1/+11
| | | | | | | | | getConstantFP to accept the two supported long double target types. This was not the original intent, but there are other places that assume this works and it's easy enough to do. llvm-svn: 103299
* Print debug information for SDNodes.Dan Gohman2010-05-071-0/+16
| | | | llvm-svn: 103227
* EXTRACT_VECTOR_ELT of an INSERT_VECTOR_ELT may have the same index, but theBill Wendling2010-04-301-8/+13
| | | | | | | | indexes could be of a different value type. Or not even using the same SDNode for the constant (weird, I know). Compare the actual values instead of the pointers. llvm-svn: 102791
* Add DBG_VALUE handling for byval parameters; thisDale Johannesen2010-04-261-2/+2
| | | | | | | produces a comment on targets that support it, but the Dwarf writer is not hooked up yet. llvm-svn: 102372
* Add another variant of this test which found a place whereDan Gohman2010-04-211-1/+2
| | | | | | | CodeGen's ComputeMaskedBits was being over-conservative when computing bits for an ADD. llvm-svn: 101963
* Give SelectionDAG a TargetMachine too, rather than having itDan Gohman2010-04-191-6/+2
| | | | | | fetch one from the MachineFunction. llvm-svn: 101807
* Delete now-unnecessary const_casts.Dan Gohman2010-04-171-1/+1
| | | | llvm-svn: 101637
* Use const qualifiers with TargetLowering. This eliminates severalDan Gohman2010-04-171-1/+1
| | | | | | | | | | | | | const_casts, and it reinforces the design of the Target classes being immutable. SelectionDAGISel::IsLegalToFold is now a static member function, because PIC16 uses it in an unconventional way. There is more room for API cleanup here. And PIC16's AsmPrinter no longer uses TargetLowering. llvm-svn: 101635
OpenPOWER on IntegriCloud