llvm-6502/lib/CodeGen
Chris Lattner 47eb6567e2 This patch fixes the nasty bug that caused 175.vpr to fail for X86 last night.
The problem occurred when trying to reload this instruction:

MOV32mr %reg2326, 8, %reg2297, 4, %reg2295

The value of reg2326 was available in EBX, so it was reused from there, instead
of reloading it into EDX.

The value of reg2297 was available in EDX, so it was reused from there, instead
of reloading it into EDI.

The value of reg2295 was not available, so we tried reloading it into EBX, its
assigned register.  However, we checked and saw that we already reloaded
something into EBX, so we chose what reg2326 was assigned to (EDX) and reloaded
into that register instead.

Unfortunately EDX had already been used by reg2297, so reloading into EDX
clobbered the value used by the reg2326 operand, breaking the program.

The fix for this is to check that the newly picked register is ok.  In this
case we now find that EDX is already used and try using EDI, which succeeds.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17006 91177308-0d34-0410-b5e6-96231b3b80d8
2004-10-15 03:19:31 +00:00
..
SelectionDAG Update to reflect changes in Makefile rules. 2004-10-13 11:46:52 +00:00
AsmPrinter.cpp Do not use .xword and friends to emit zeros on V9. Apparently there are issues 2004-08-24 00:26:11 +00:00
BranchFolding.cpp Changes For Bug 352 2004-09-01 22:55:40 +00:00
IntrinsicLowering.cpp
LiveInterval.cpp Fix includes. Patch contributed by Paolo Invernizzi! 2004-09-28 02:38:58 +00:00
LiveInterval.h
LiveIntervalAnalysis.cpp When a virtual register is folded into an instruction, keep track of whether 2004-10-01 23:15:36 +00:00
LiveIntervalAnalysis.h * Wrap some comments to 80 cols 2004-09-30 15:59:17 +00:00
LiveVariables.cpp Changes For Bug 352 2004-09-01 22:55:40 +00:00
MachineBasicBlock.cpp Indent to 2 spaces. 2004-09-05 18:39:20 +00:00
MachineCodeEmitter.cpp
MachineFunction.cpp Indent to 2 spaces and cleanup excess whitespace. 2004-09-05 18:41:35 +00:00
MachineInstr.cpp Changes For Bug 352 2004-09-01 22:55:40 +00:00
Makefile ModuloScheduling has moved to lib/Target/SparcV9 2004-10-10 23:37:40 +00:00
Makefile.am Update to reflect changes in Makefile rules. 2004-10-13 11:46:52 +00:00
Passes.cpp Changes For Bug 352 2004-09-01 22:55:40 +00:00
PHIElimination.cpp Changes For Bug 352 2004-09-01 22:55:40 +00:00
PhysRegTracker.h
PrologEpilogInserter.cpp Put this change back in after testing from Reid proved its innocence. getSpillSize now returns value in bits 2004-08-29 22:00:24 +00:00
RegAllocIterativeScan.cpp Change the way we choose a free register: instead of picking the first 2004-09-02 21:24:33 +00:00
RegAllocLinearScan.cpp Free the VirtRegMap at the end of MachineFunction processing instead of at 2004-09-30 02:02:33 +00:00
RegAllocLocal.cpp Changes For Bug 352 2004-09-01 22:55:40 +00:00
RegAllocSimple.cpp Changes For Bug 352 2004-09-01 22:55:40 +00:00
TwoAddressInstructionPass.cpp Changes For Bug 352 2004-09-01 22:55:40 +00:00
UnreachableBlockElim.cpp Changes For Bug 352 2004-09-01 22:55:40 +00:00
VirtRegMap.cpp This patch fixes the nasty bug that caused 175.vpr to fail for X86 last night. 2004-10-15 03:19:31 +00:00
VirtRegMap.h When a virtual register is folded into an instruction, keep track of whether 2004-10-01 23:15:36 +00:00