llvm/lib/CodeGen/SelectionDAG
Jakob Stoklund Olesen 9c0e921732 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@185595 91177308-0d34-0410-b5e6-96231b3b80d8
2013-07-03 23:56:24 +00:00
..
CMakeLists.txt llvm/lib: [CMake] Add explicit dependency to intrinsics_gen. 2012-06-24 13:32:01 +00:00
DAGCombiner.cpp DAGCombiner: fix use-counting issue when forming zextload 2013-07-02 09:58:53 +00:00
FastISel.cpp Debug Info: clean up usage of Verify. 2013-06-28 05:43:10 +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 Use MachineInstrBuilder in InstrEmitter. 2012-12-20 18:08:09 +00:00
LegalizeDAG.cpp Introduce getSelect usage and use more getSelectCC 2013-06-14 22:04:37 +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 LLVMBuild: Remove trailing newline, which irked me. 2011-12-12 19:48:00 +00:00
Makefile make -fno-rtti the default unless a directory builds with REQUIRES_RTTI. 2010-01-24 20:43:08 +00:00
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 Sort includes for all of the .h files under the 'lib' tree. These were 2012-12-04 07:12:27 +00:00
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-03 23:56:24 +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 Debug Info: clean up usage of Verify. 2013-06-28 05:43:10 +00:00
SelectionDAGISel.cpp Simplify landing pad lowering. 2013-07-03 23:56:24 +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 Move TargetData to DataLayout. 2012-10-08 16:38:25 +00:00