llvm-6502/include/llvm/CodeGen
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
..
PBQP
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
CommandFlags.h
DAGCombine.h
DFAPacketizer.h
EdgeBundles.h
FastISel.h
FunctionLoweringInfo.h Simplify landing pad lowering. 2013-07-04 04:53:45 +00:00
GCMetadata.h
GCMetadataPrinter.h
GCs.h
GCStrategy.h
IntrinsicLowering.h
ISDOpcodes.h Revert r185595-185596 which broke buildbots. 2013-07-04 00:26:30 +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
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
MachineFunctionAnalysis.h
MachineFunctionPass.h
MachineInstr.h
MachineInstrBuilder.h
MachineInstrBundle.h
MachineJumpTableInfo.h
MachineLoopInfo.h
MachineMemOperand.h
MachineModuleInfo.h
MachineModuleInfoImpls.h
MachineOperand.h
MachinePassRegistry.h
MachinePostDominators.h
MachineRegisterInfo.h Handle more cases in LiveRangeEdit::eliminateDeadDefs. 2013-06-21 18:33:20 +00:00
MachineRelocation.h
MachineScheduler.h
MachineSSAUpdater.h
MachineTraceMetrics.h
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
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
SlotIndexes.h
TargetLoweringObjectFileImpl.h PR16493: DebugInfo with TLS on PPC crashing due to invalid relocation 2013-07-01 21:45:25 +00:00
TargetSchedule.h
ValueTypes.h Improve diagnostics when getSizeInBits is called on the Other type. 2013-06-24 17:29:51 +00:00
ValueTypes.td
VirtRegMap.h