llvm-6502/include/llvm/CodeGen
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
..
PBQP Fix PBQP graph iterator typedefs. 2013-05-16 02:20:41 +00:00
Analysis.h
AsmPrinter.h Debug Info: use module flag to set up Dwarf version. 2013-07-02 23:40:10 +00:00
CalcSpillWeights.h Switch spill weights from a basic loop depth estimation to BlockFrequencyInfo. 2013-06-17 19:00:36 +00:00
CallingConvLower.h For ARM backend, fixed "byval" attribute support. 2013-05-05 07:48:36 +00:00
CommandFlags.h
DAGCombine.h
DFAPacketizer.h
EdgeBundles.h
FastISel.h Remove forward declaration of MachineBasicBlock. It is #included anyway. 2013-06-13 23:53:13 +00:00
FunctionLoweringInfo.h Simplify landing pad lowering. 2013-07-03 23:56:24 +00:00
GCMetadata.h
GCMetadataPrinter.h
GCs.h
GCStrategy.h
IntrinsicLowering.h
ISDOpcodes.h Remove unused MEMBARRIER DAG node; it's been replaced by ATOMIC_FENCE. 2013-04-20 12:32:17 +00:00
JITCodeEmitter.h
LatencyPriorityQueue.h
LexicalScopes.h Return SmallVectorImpl& instead of SmallVector& in a couple places to avoid having to specify the vector size in multiple places. 2013-07-03 04:30:58 +00:00
LinkAllAsmWriterComponents.h
LinkAllCodegenComponents.h
LiveInterval.h MI Sched: eliminate local vreg copies. 2013-04-24 15:54:43 +00:00
LiveIntervalAnalysis.h Switch spill weights from a basic loop depth estimation to BlockFrequencyInfo. 2013-06-17 19:00:36 +00:00
LiveIntervalUnion.h
LiveRangeEdit.h Refactor LiveRangeEdit::eliminateDeadDefs. 2013-06-21 18:33:17 +00:00
LiveRegMatrix.h
LiveStackAnalysis.h
LiveVariables.h
MachineBasicBlock.h Add MachineBasicBlock::addLiveIn(). 2013-07-03 23:56:20 +00:00
MachineBlockFrequencyInfo.h
MachineBranchProbabilityInfo.h
MachineCodeEmitter.h
MachineCodeInfo.h
MachineConstantPool.h Directly access objects which may change during compilation. 2013-06-17 20:41:25 +00:00
MachineDominators.h
MachineFrameInfo.h Directly access objects which may change during compilation. 2013-06-17 20:41:25 +00:00
MachineFunction.h Fix comment that didn't match the method it was above 2013-04-22 20:30:50 +00:00
MachineFunctionAnalysis.h
MachineFunctionPass.h
MachineInstr.h
MachineInstrBuilder.h Temporarily revert "Change the informal convention of DBG_VALUE so that we can express a" 2013-04-30 22:35:14 +00:00
MachineInstrBundle.h
MachineJumpTableInfo.h
MachineLoopInfo.h
MachineMemOperand.h Add target flags to MachineMemOperands. 2013-04-27 03:54:17 +00:00
MachineModuleInfo.h Remove addFrameMove. 2013-05-16 21:02:15 +00:00
MachineModuleInfoImpls.h
MachineOperand.h MachineOperand::setIsDebug should ensure the register is /not/ a definition 2013-06-16 20:34:09 +00:00
MachinePassRegistry.h
MachinePostDominators.h
MachineRegisterInfo.h Handle more cases in LiveRangeEdit::eliminateDeadDefs. 2013-06-21 18:33:20 +00:00
MachineRelocation.h
MachineScheduler.h Move #include from .h to .cpp file. 2013-06-14 00:00:13 +00:00
MachineSSAUpdater.h
MachineTraceMetrics.h Add ArrayRef constructor from None, and do the cleanups that this constructor enables 2013-05-05 00:40:33 +00:00
MachORelocation.h
Passes.h Access the TargetLoweringInfo from the TargetMachine object instead of caching it. The TLI may change between functions. No functionality change. 2013-06-19 21:07:11 +00:00
PseudoSourceValue.h
RegAllocPBQP.h Switch spill weights from a basic loop depth estimation to BlockFrequencyInfo. 2013-06-17 19:00:36 +00:00
RegAllocRegistry.h
RegisterClassInfo.h MI-Sched: Adjust regpressure limits for reserved regs. 2013-06-21 18:32:58 +00:00
RegisterPressure.h
RegisterScavenging.h Use SmallVectorImpl::iterator/const_iterator instead of SmallVector 2013-07-03 05:01:24 +00:00
ResourcePriorityQueue.h
RuntimeLibcalls.h
ScheduleDAG.h Use SmallVectorImpl::iterator/const_iterator instead of SmallVector 2013-07-03 05:01:24 +00:00
ScheduleDAGInstrs.h Machine Model: Add MicroOpBufferSize and resource BufferSize. 2013-06-15 04:49:57 +00:00
ScheduleDFS.h
ScheduleHazardRecognizer.h
SchedulerRegistry.h
ScoreboardHazardRecognizer.h
SelectionDAG.h Use SmallVectorImpl instead of SmallVector for iterators and references to avoid specifying the vector size unnecessarily. 2013-07-03 05:11:49 +00:00
SelectionDAGISel.h Access the TargetLoweringInfo from the TargetMachine object instead of caching it. The TLI may change between functions. No functionality change. 2013-06-19 21:36:55 +00:00
SelectionDAGNodes.h Track IR ordering of SelectionDAG nodes 2/4. 2013-05-25 02:42:55 +00:00
SlotIndexes.h Use only explicit bool conversion operators 2013-05-15 07:36:59 +00:00
TargetLoweringObjectFileImpl.h PR16493: DebugInfo with TLS on PPC crashing due to invalid relocation 2013-07-01 21:45:25 +00:00
TargetSchedule.h Machine Model: Add MicroOpBufferSize and resource BufferSize. 2013-06-15 04:49:57 +00:00
ValueTypes.h Improve diagnostics when getSizeInBits is called on the Other type. 2013-06-24 17:29:51 +00:00
ValueTypes.td
VirtRegMap.h