summaryrefslogtreecommitdiffstats
path: root/llvm/lib/CodeGen/SelectionDAG/InstrEmitter.h
Commit message (Collapse)AuthorAgeFilesLines
* Don't set kill flags for instructions which the scheduler has cloned.Dan Gohman2010-05-141-4/+6
| | | | llvm-svn: 103827
* Teach scheduler about REG_SEQUENCE.Evan Cheng2010-05-041-0/+3
| | | | llvm-svn: 102984
* Get rid of the EdgeMapping map. Instead, just check for BasicBlockDan Gohman2010-05-011-5/+3
| | | | | | changes before doing phi lowering for switches. llvm-svn: 102809
* EmitDbgValue doesn't need its EdgeMapping argument.Dan Gohman2010-04-301-2/+1
| | | | llvm-svn: 102742
* - Move TargetLowering::EmitTargetCodeForFrameDebugValue to TargetInstrInfo ↵Evan Cheng2010-04-261-1/+0
| | | | | | | | and rename it to emitFrameIndexDebugValue. - Teach spiller to modify DBG_VALUE instructions to reference spill slots. llvm-svn: 102323
* reapply 99444/99445, which I speculatively reverted inChris Lattner2010-03-251-1/+13
| | | | | | r99453. llvm-svn: 99482
* Change how dbg_value sdnodes are converted into machine instructions. Their ↵Evan Cheng2010-03-251-12/+10
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | placement should be determined by the relative order of incoming llvm instructions. The scheduler will now use the SDNode ordering information to determine where to insert them. A dbg_value instruction is inserted after the instruction with the last highest source order and before the instruction with the next highest source order. It will optimize the placement by inserting right after the instruction that produces the value if they have consecutive order numbers. Here is a theoretical example that illustrates why the placement is important. tmp1 = store tmp1 -> x ... tmp2 = add ... ... call ... store tmp2 -> x Now mem2reg comes along: tmp1 = dbg_value (tmp1 -> x) ... tmp2 = add ... ... call ... dbg_value (tmp2 -> x) When the debugger examine the value of x after the add instruction but before the call, it should have the value of tmp1. Furthermore, for dbg_value's that reference constants, they should not be emitted at the beginning of the block (since they do not have "producers"). This patch also cleans up how SDISel manages DbgValue nodes. It allow a SDNode to be referenced by multiple SDDbgValue nodes. When a SDNode is deleted, it uses the information to find the SDDbgValues and invalidate them. They are not deleted until the corresponding SelectionDAG is destroyed. llvm-svn: 99469
* revert 99444/99445. This doesn't cause the failure of Chris Lattner2010-03-241-13/+1
| | | | | | | | 2006-07-19-stwbrx-crash.ll for me, but it's the only likely patch in the blame list of several bots. Lets see if this fixes it. llvm-svn: 99453
* remove dead argument.Chris Lattner2010-03-241-3/+2
| | | | llvm-svn: 99445
* split EmitNode in half to reduce indentation.Chris Lattner2010-03-241-1/+14
| | | | llvm-svn: 99444
* Progress towards shepherding debug info through SelectionDAG.Dale Johannesen2010-03-101-1/+2
| | | | | | | No functional effect yet. This is still evolving and should not be viewed as final. llvm-svn: 98195
* Add some new bits of debug info handling. NoDale Johannesen2010-03-061-0/+11
| | | | | | functional change yet. llvm-svn: 97855
* Fix a typo in a comment.Dan Gohman2009-11-161-1/+1
| | | | llvm-svn: 88953
* Create a new InstrEmitter class for translating SelectionDAG nodesDan Gohman2009-10-101-0/+119
into MachineInstrs. This is mostly just moving the code from ScheduleDAGSDNodesEmit.cpp into a new class. This decouples MachineInstr emitting from scheduling. llvm-svn: 83699
OpenPOWER on IntegriCloud