llvm-6502/lib/CodeGen/SelectionDAG
Jakob Stoklund Olesen 918b7c82f8 Simplify landing pad lowering.
Stop using the ISD::EXCEPTIONADDR and ISD::EHSELECTION when lowering
landing pad arguments. These nodes were previously legalized into
CopyFromReg nodes, but that never worked properly because the
CopyFromReg node weren't guaranteed to be  scheduled at the top of the
basic block.

This meant the exception pointer and selector registers could be
clobbered before being copied to a virtual register.

This patch copies the two physical registers to virtual registers at
the beginning of the basic block, and lowers the landingpad instruction
directly to two CopyFromReg nodes reading the *virtual* registers. This
is safe because virtual registers don't get clobbered.

A future patch will remove the ISD::EXCEPTIONADDR and ISD::EHSELECTION
nodes.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@185617 91177308-0d34-0410-b5e6-96231b3b80d8
2013-07-04 04:53:45 +00:00
..
CMakeLists.txt
DAGCombiner.cpp DAGCombiner: fix use-counting issue when forming zextload 2013-07-02 09:58:53 +00:00
FastISel.cpp FastISel can only apend to basic blocks. 2013-07-04 04:32:39 +00:00
FunctionLoweringInfo.cpp Debug Info: clean up usage of Verify. 2013-06-28 05:43:10 +00:00
InstrEmitter.cpp Debug Info: Simplify Frame Index handling in DBG_VALUE Machine Instructions 2013-06-16 20:34:15 +00:00
InstrEmitter.h
LegalizeDAG.cpp Revert r185595-185596 which broke buildbots. 2013-07-04 00:26:30 +00:00
LegalizeFloatTypes.cpp Introduce getSelect usage and use more getSelectCC 2013-06-14 22:04:37 +00:00
LegalizeIntegerTypes.cpp Add missing case to switch statement - DAGTypeLegalizer::ExpandIntegerResult 2013-06-28 18:36:42 +00:00
LegalizeTypes.cpp Remove double semicolons. 2013-05-28 16:31:26 +00:00
LegalizeTypes.h Track IR ordering of SelectionDAG nodes 2/4. 2013-05-25 02:42:55 +00:00
LegalizeTypesGeneric.cpp Track IR ordering of SelectionDAG nodes 2/4. 2013-05-25 02:42:55 +00:00
LegalizeVectorOps.cpp Introduce getSelect usage and use more getSelectCC 2013-06-14 22:04:37 +00:00
LegalizeVectorTypes.cpp Introduce getSelect usage and use more getSelectCC 2013-06-14 22:04:37 +00:00
LLVMBuild.txt
Makefile
ResourcePriorityQueue.cpp Cache the TargetLowering info object as a pointer. 2013-06-06 00:43:09 +00:00
ScheduleDAGFast.cpp Move all of the header files which are involved in modelling the LLVM IR 2013-01-02 11:36:10 +00:00
ScheduleDAGRRList.cpp Cache the TargetLowering info object as a pointer. 2013-06-06 00:43:09 +00:00
ScheduleDAGSDNodes.cpp Fix PR16143: Insert DEBUG_VALUE before terminator. 2013-05-26 08:58:50 +00:00
ScheduleDAGSDNodes.h Fix #includes, so we include only what we really need. 2013-02-20 00:26:25 +00:00
ScheduleDAGVLIW.cpp Move all of the header files which are involved in modelling the LLVM IR 2013-01-02 11:36:10 +00:00
SDNodeDbgValue.h
SelectionDAG.cpp Use SmallVectorImpl instead of SmallVector for iterators and references to avoid specifying the vector size unnecessarily. 2013-07-03 05:11:49 +00:00
SelectionDAGBuilder.cpp Simplify landing pad lowering. 2013-07-04 04:53:45 +00:00
SelectionDAGBuilder.h Added c++ mode selector to head of SelectionDAGBuilder.h so editors open it in c++ mode instead of c mode. 2013-07-01 16:53:41 +00:00
SelectionDAGDumper.cpp Revert r185595-185596 which broke buildbots. 2013-07-04 00:26:30 +00:00
SelectionDAGISel.cpp Simplify landing pad lowering. 2013-07-04 04:53:45 +00:00
SelectionDAGPrinter.cpp Move all of the header files which are involved in modelling the LLVM IR 2013-01-02 11:36:10 +00:00
TargetLowering.cpp The getRegForInlineAsmConstraint function should only accept MVT value types. 2013-06-22 18:37:38 +00:00
TargetSelectionDAGInfo.cpp