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 Fix include guards so they exactly match file names. 2013-01-10 00:45:19 +00:00
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 Move all of the header files which are involved in modelling the LLVM IR 2013-01-02 11:36:10 +00:00
CalcSpillWeights.h Sort the #include lines for the include/... tree with the script. 2012-12-03 17:02:12 +00:00
CallingConvLower.h CallingConvLower.h: Use bitfields like unsigned:1 instead of bool:1 . 2013-01-07 11:13:51 +00:00
CommandFlags.h Fix include guards so they exactly match file names. 2013-01-10 00:45:19 +00:00
DAGCombine.h Refactor DAGCombinerInfo. Change the different booleans that indicate if we are before or after different runs of DAGCo, with the CombineLevel enum. 2012-12-27 06:47:41 +00:00
DFAPacketizer.h Sort the #include lines for the include/... tree with the script. 2012-12-03 17:02:12 +00:00
EdgeBundles.h Give a small negative bias to giant edge bundles. 2012-05-21 03:11:23 +00:00
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 Remove unneeded includes from FunctionLoweringInfo.h. 2013-01-10 22:13:13 +00:00
GCMetadata.h GCInfoDeleter code cleanup after r175528 2013-03-01 11:40:32 +00:00
GCMetadataPrinter.h Mark unimplemented copy constructors and copy assignment operators as LLVM_DELETED_FUNCTION. 2012-09-17 06:59:23 +00:00
GCs.h Add a GC plugin for Erlang 2013-03-25 13:47:46 +00:00
GCStrategy.h Convert comments to proper Doxygen comments. 2012-06-09 00:01:45 +00:00
IntrinsicLowering.h Move all of the header files which are involved in modelling the LLVM IR 2013-01-02 11:36:10 +00:00
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 Fix include guards so they exactly match file names. 2013-01-10 00:45:19 +00:00
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 Fix include guards so they exactly match file names. 2013-01-10 00:45:19 +00:00
LiveRangeEdit.h Add some constantness. 2013-03-18 23:40:46 +00:00
LiveRegMatrix.h Sort the #include lines for the include/... tree with the script. 2012-12-03 17:02:12 +00:00
LiveStackAnalysis.h Fix include guards so they exactly match file names. 2013-01-10 00:45:19 +00:00
LiveVariables.h Move #include of BitVector from .h to .cpp file. 2013-03-18 23:45:45 +00:00
MachineBasicBlock.h Use bidirectional bundle flags to simplify important functions. 2012-12-18 23:21:49 +00:00
MachineBlockFrequencyInfo.h
MachineBranchProbabilityInfo.h Remove blank line before block comment. 2013-03-20 18:25:12 +00:00
MachineCodeEmitter.h Sort the #include lines for the include/... tree with the script. 2012-12-03 17:02:12 +00:00
MachineCodeInfo.h Fix include guards so they exactly match file names. 2013-01-10 00:45:19 +00:00
MachineConstantPool.h Move TargetData to DataLayout. 2012-10-08 16:38:25 +00:00
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 Fix include guards so they exactly match file names. 2013-01-10 00:45:19 +00:00
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 Add a getBundleEnd() function to go with the existing getBundleStart(). 2013-01-09 01:02:19 +00:00
MachineInstrBundle.h Add a getBundleEnd() function to go with the existing getBundleStart(). 2013-01-09 01:02:19 +00:00
MachineJumpTableInfo.h Sort the #include lines for the include/... tree with the script. 2012-12-03 17:02:12 +00:00
MachineLoopInfo.h Fix include guards so they exactly match file names. 2013-01-10 00:45:19 +00:00
MachineMemOperand.h Add MachineMemOperand::isUnordered(). 2012-08-29 21:08:52 +00:00
MachineModuleInfo.h Add some constantness. 2013-03-18 23:40:46 +00:00
MachineModuleInfoImpls.h Rename virtual table anchors from Anchor() to anchor() for consistency with the rest of the tree. 2012-09-26 06:36:36 +00:00
MachineOperand.h Pack MachineOperand bitfields better. 2013-01-07 23:21:44 +00:00
MachinePassRegistry.h Allow targets to select the default scheduler by name. 2012-04-19 01:34:10 +00:00
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 Mark unimplemented copy constructors and copy assignment operators as LLVM_DELETED_FUNCTION. 2012-09-17 06:59:23 +00:00
MachineTraceMetrics.h Count processor resources individually in MachineTraceMetrics. 2013-04-02 17:49:51 +00:00
MachORelocation.h Fix include guards so they exactly match file names. 2013-01-10 00:45:19 +00:00
Passes.h Remove the old CodePlacementOpt pass. 2013-03-29 17:14:24 +00:00
PseudoSourceValue.h Move all of the header files which are involved in modelling the LLVM IR 2013-01-02 11:36:10 +00:00
RegAllocPBQP.h Sort the #include lines for the include/... tree with the script. 2012-12-03 17:02:12 +00:00
RegAllocRegistry.h Fix include guards so they exactly match file names. 2013-01-10 00:45:19 +00:00
RegisterClassInfo.h Precompute some information about register costs. 2013-01-12 00:54:59 +00:00
RegisterPressure.h RegPressureTracker::dump(): Remove unnecessary argument. 2012-12-05 23:05:22 +00:00
RegisterScavenging.h Reapply r178845 with fix - Fix bug in PEI's virtual-register scavenging 2013-04-05 22:31:56 +00:00
ResourcePriorityQueue.h Fix include guards so they exactly match file names. 2013-01-10 00:45:19 +00:00
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 misched: Allow disabling scoreboard hazard checking for subtargets with a 2012-06-05 03:44:32 +00:00
SchedulerRegistry.h Fix include guards so they exactly match file names. 2013-01-10 00:45:19 +00:00
ScoreboardHazardRecognizer.h Sort the #include lines for the include/... tree with the script. 2012-12-03 17:02:12 +00:00
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 Sort the #include lines for the include/... tree with the script. 2012-12-03 17:02:12 +00:00
TargetSchedule.h Fix include guards so they exactly match file names. 2013-01-10 00:45:19 +00:00
ValueTypes.h Mark getRawBits const. 2013-02-14 22:49:29 +00:00
ValueTypes.td Added 6 more value types: v32i1, v64i1, v32i16, v32i8, v64i8, v8f64 2012-12-24 10:03:57 +00:00
VirtRegMap.h Remove VirtRegMap::getRegAllocPref(). 2012-12-04 00:35:59 +00:00