llvm-6502/include/llvm/CodeGen
Hal Finkel 2e80991a77 Reapply r178845 with fix - Fix bug in PEI's virtual-register scavenging
This fixes PEI as previously described, but correctly handles the case where
the instruction defining the virtual register to be scavenged is the first in
the block. Arnold provided me with a bugpoint-reduced test case, but even that
seems too large to use as a regression test. If I'm successful in cleaning it
up then I'll commit that as well.

Original commit message:

    This change fixes a bug that I introduced in r178058. After a register is
    scavenged using one of the available spills slots the instruction defining the
    virtual register needs to be moved to after the spill code. The scavenger has
    already processed the defining instruction so that registers killed by that
    instruction are available for definition in that same instruction. Unfortunately,
    after this, the scavenger needs to iterate through the spill code and then
    visit, again, the instruction that defines the now-scavenged register. In order
    to avoid confusion, the register scavenger needs the ability to 'back up'
    through the spill code so that it can again process the instructions in the
    appropriate order. Prior to this fix, once the scavenger reached the
    just-moved instruction, it would assert if it killed any registers because,
    having already processed the instruction, it believed they were undefined.

    Unfortunately, I don't yet have a small test case. Thanks to Pranav Bhandarkar
    for diagnosing the problem and testing this fix.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@178919 91177308-0d34-0410-b5e6-96231b3b80d8
2013-04-05 22:31:56 +00:00
..
PBQP
Analysis.h Remove unused parameter. Also use the AttributeSet query methods instead of the Attribute query methods. 2013-01-18 21:50:24 +00:00
AsmPrinter.h
CalcSpillWeights.h
CallingConvLower.h
CommandFlags.h
DAGCombine.h
DFAPacketizer.h
EdgeBundles.h
FastISel.h Reverted: r176136 - Have a way for a target to opt-out of target-independent fast isel 2013-02-27 19:54:00 +00:00
FunctionLoweringInfo.h
GCMetadata.h GCInfoDeleter code cleanup after r175528 2013-03-01 11:40:32 +00:00
GCMetadataPrinter.h
GCs.h Add a GC plugin for Erlang 2013-03-25 13:47:46 +00:00
GCStrategy.h
IntrinsicLowering.h
ISDOpcodes.h Fix PR10475 2013-03-01 18:40:30 +00:00
JITCodeEmitter.h Simplify code. 2013-02-09 13:29:31 +00:00
LatencyPriorityQueue.h
LexicalScopes.h Correct indentation for dumping LexicalScope. 2013-02-02 00:02:03 +00:00
LinkAllAsmWriterComponents.h Add a GC plugin for Erlang 2013-03-25 13:47:46 +00:00
LinkAllCodegenComponents.h Add a GC plugin for Erlang 2013-03-25 13:47:46 +00:00
LiveInterval.h Use LiveRangeUpdater instead of mergeIntervalRanges. 2013-02-20 18:18:15 +00:00
LiveIntervalAnalysis.h Move #include of BitVector from .h to .cpp file. 2013-03-18 23:45:45 +00:00
LiveIntervalUnion.h
LiveRangeEdit.h Add some constantness. 2013-03-18 23:40:46 +00:00
LiveRegMatrix.h
LiveStackAnalysis.h
LiveVariables.h Move #include of BitVector from .h to .cpp file. 2013-03-18 23:45:45 +00:00
MachineBasicBlock.h
MachineBlockFrequencyInfo.h
MachineBranchProbabilityInfo.h Remove blank line before block comment. 2013-03-20 18:25:12 +00:00
MachineCodeEmitter.h
MachineCodeInfo.h
MachineConstantPool.h
MachineDominators.h Add even more constatness in MachineDominators.h. 2013-02-16 12:36:32 +00:00
MachineFrameInfo.h Move estimateStackSize from ARM into MachineFrameInfo 2013-03-14 21:15:20 +00:00
MachineFunction.h [ms-inline asm] Do not omit the frame pointer if we have ms-inline assembly. 2013-02-16 01:25:28 +00:00
MachineFunctionAnalysis.h Remove unneeded "TargetMachine.h" #includes. 2013-02-09 20:54:05 +00:00
MachineFunctionPass.h
MachineInstr.h [ms-inline asm] Do not omit the frame pointer if we have ms-inline assembly. 2013-02-16 01:25:28 +00:00
MachineInstrBuilder.h
MachineInstrBundle.h
MachineJumpTableInfo.h
MachineLoopInfo.h
MachineMemOperand.h
MachineModuleInfo.h Add some constantness. 2013-03-18 23:40:46 +00:00
MachineModuleInfoImpls.h
MachineOperand.h
MachinePassRegistry.h
MachinePostDominators.h Remove unneeded #include. 2013-03-10 01:15:14 +00:00
MachineRegisterInfo.h Residual cleanup: live-out set is gone 2013-03-11 23:18:25 +00:00
MachineRelocation.h
MachineScheduler.h Use const reference instead of vector object when passing an argument to 2013-02-16 15:47:26 +00:00
MachineSSAUpdater.h
MachineTraceMetrics.h Count processor resources individually in MachineTraceMetrics. 2013-04-02 17:49:51 +00:00
MachORelocation.h
Passes.h Remove the old CodePlacementOpt pass. 2013-03-29 17:14:24 +00:00
PseudoSourceValue.h
RegAllocPBQP.h
RegAllocRegistry.h
RegisterClassInfo.h
RegisterPressure.h
RegisterScavenging.h Reapply r178845 with fix - Fix bug in PEI's virtual-register scavenging 2013-04-05 22:31:56 +00:00
ResourcePriorityQueue.h
RuntimeLibcalls.h Teach SDISel to combine fsin / fcos into a fsincos node if the following 2013-01-29 02:32:37 +00:00
ScheduleDAG.h Fix incorrect ScheduleDAG comment and formalize Weak edges. 2013-03-01 00:19:12 +00:00
ScheduleDAGInstrs.h Cleanup #includes. 2013-03-10 13:11:23 +00:00
ScheduleDFS.h SchedDFS: Complete support for nested subtrees. 2013-01-25 06:52:27 +00:00
ScheduleHazardRecognizer.h
SchedulerRegistry.h
ScoreboardHazardRecognizer.h
SelectionDAG.h ArrayRefize some code. No functionality change. 2013-03-07 20:33:29 +00:00
SelectionDAGISel.h A small refactoring + adding comments. 2013-02-28 23:09:18 +00:00
SelectionDAGNodes.h Cleanup the simplify_type implementation. 2013-03-27 16:43:11 +00:00
SlotIndexes.h No really, don't use end(). 2013-03-08 18:36:36 +00:00
TargetLoweringObjectFileImpl.h
TargetSchedule.h
ValueTypes.h Mark getRawBits const. 2013-02-14 22:49:29 +00:00
ValueTypes.td
VirtRegMap.h