llvm-6502/lib/CodeGen/SelectionDAG
Duncan Sands 47d9dcc584 Fix PR3117: not all nodes being legalized. The
essential problem was that the DAG can contain
random unused nodes which were never analyzed.
When remapping a value of a node being processed,
such a node may become used and need to be analyzed;
however due to operands being transformed during
analysis the node may morph into a different one.
Users of the morphing node need to be updated, and
this wasn't happening.  While there I added a bunch
of documentation and sanity checks, so I (or some
other poor soul) won't have to scratch their head
over this stuff so long trying to remember how it
was all supposed to work next time some obscure
problem pops up!  The extra sanity checking exposed
a few places where invariants weren't being preserved,
so those are fixed too.  Since some of the sanity
checking is expensive, I added a flag to turn it
on.  It is also turned on when building with
ENABLE_EXPENSIVE_CHECKS=1.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@60797 91177308-0d34-0410-b5e6-96231b3b80d8
2008-12-09 21:33:20 +00:00
..
CallingConvLower.cpp Add "inreg" field to CallSDNode (doesn't increase 2008-09-26 19:31:26 +00:00
CMakeLists.txt Experimental post-pass scheduling support. Post-pass scheduling 2008-11-19 23:18:57 +00:00
DAGCombiner.cpp One more transformation. 2008-12-02 18:40:40 +00:00
FastISel.cpp Factor out the code for sign-extending/truncating gep indices 2008-12-08 07:57:47 +00:00
LegalizeDAG.cpp In LegalizeOp, don't change the result type of CONVERT_RNDSAT when promoting 2008-12-09 07:27:39 +00:00
LegalizeFloatTypes.cpp Fix PR3117: not all nodes being legalized. The 2008-12-09 21:33:20 +00:00
LegalizeIntegerTypes.cpp Fix PR3117: not all nodes being legalized. The 2008-12-09 21:33:20 +00:00
LegalizeTypes.cpp Fix PR3117: not all nodes being legalized. The 2008-12-09 21:33:20 +00:00
LegalizeTypes.h Fix PR3117: not all nodes being legalized. The 2008-12-09 21:33:20 +00:00
LegalizeTypesGeneric.cpp Fix PR3117: not all nodes being legalized. The 2008-12-09 21:33:20 +00:00
LegalizeVectorTypes.cpp Fix PR3117: not all nodes being legalized. The 2008-12-09 21:33:20 +00:00
Makefile remove attribution from lib Makefiles. 2007-12-29 20:09:26 +00:00
ScheduleDAGFast.cpp Check in the rest of this change. The isAntiDep flag needs to be passed 2008-11-24 17:33:52 +00:00
ScheduleDAGList.cpp Factor out the code for verifying the work of the scheduler, 2008-11-20 01:26:25 +00:00
ScheduleDAGRRList.cpp Make debug output more informative. 2008-12-04 02:14:57 +00:00
ScheduleDAGSDNodes.cpp Use ComputeLatency in the MachineInstr scheduler. 2008-11-21 01:44:51 +00:00
ScheduleDAGSDNodesEmit.cpp Experimental post-pass scheduling support. Post-pass scheduling 2008-11-19 23:18:57 +00:00
SelectionDAG.cpp Fix PR3117: not all nodes being legalized. The 2008-12-09 21:33:20 +00:00
SelectionDAGBuild.cpp There are no longer any places that require a 2008-12-01 11:41:29 +00:00
SelectionDAGBuild.h Factor out the code for mapping LLVM IR condition opcodes to 2008-10-17 21:16:08 +00:00
SelectionDAGISel.cpp If the type legalizer actually legalized anything 2008-11-24 14:53:14 +00:00
SelectionDAGPrinter.cpp Experimental post-pass scheduling support. Post-pass scheduling 2008-11-19 23:18:57 +00:00
TargetLowering.cpp Followup to r60283: optimize arbitrary width signed divisions as well 2008-11-30 06:35:39 +00:00