llvm-6502/test
Bob Wilson 9d928c223f Fix pr4100. Do not remove no-op copies when they are dead. The register
scavenger gets confused about register liveness if it doesn't see them.
I'm not thrilled with this solution, but it only comes up when there are dead
copies in the code, which is something that hopefully doesn't happen much.

Here is what happens in pr4100: As shown in the following excerpt from the
debug output of llc, the source of a move gets reloaded from the stack,
inserting a new load instruction before the move.  Since that source operand
is a kill, the physical register is free to be reused for the destination
of the move.  The move ends up being a no-op, copying R3 to R3, so it is
deleted.  But, it leaves behind the load to reload %reg1028 into R3, and
that load is not updated to show that it's destination operand (R3) is dead.
The scavenger gets confused by that load because it thinks that R3 is live.

Starting RegAlloc of: %reg1025<def,dead> = MOVr %reg1028<kill>, 14, %reg0, %reg0
  Regs have values: 
  Reloading %reg1028 into R3
  Last use of R3[%reg1028], removing it from live set
  Assigning R3 to %reg1025
  Register R3 [%reg1025] is never used, removing it from live set

Alternative solutions might be either marking the load as dead, or zapping
the load along with the no-op copy.  I couldn't see an easy way to do
either of those, though.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@71196 91177308-0d34-0410-b5e6-96231b3b80d8
2009-05-07 23:47:03 +00:00
..
Analysis When printing a SCEVUnknown with pointer type, don't print an 2009-05-01 17:02:22 +00:00
Archive
Assembler Make this test slightly more strict. 2009-04-27 03:05:26 +00:00
Bindings/Ocaml Nounwind is not valid for function return values. 2009-05-06 13:51:18 +00:00
Bitcode fix a bitcode reader bug where it can't handle extractelement correctly: 2009-02-03 02:11:28 +00:00
BugPoint Re-commit r67334 and r67349 with fix. 2009-03-21 18:12:24 +00:00
CodeGen Fix pr4100. Do not remove no-op copies when they are dead. The register 2009-05-07 23:47:03 +00:00
DebugInfo Restore minor deletion. 2009-05-04 18:40:41 +00:00
ExecutionEngine remove a testcase that depends on -debug existing. 2009-03-13 20:31:25 +00:00
Feature Add support for embedded metadata to LLVM. This introduces two new types of 2009-04-04 07:22:01 +00:00
FrontendAda Adjust this test for recent sroa improvements. 2009-03-12 11:56:12 +00:00
FrontendC Restore minor deletion. 2009-05-04 18:40:41 +00:00
FrontendC++ Restore minor deletion. 2009-05-04 18:40:41 +00:00
FrontendFortran These tests are x86 specific. 2009-04-22 10:39:51 +00:00
FrontendObjC Test for llvm-gcc bug fixed by 70301. 2009-04-28 17:16:30 +00:00
FrontendObjC++ This is an objective-c test, not an objective-c++ one. 2008-10-06 18:42:48 +00:00
Integer Converted a1.ll to unittests. 2009-03-24 21:36:09 +00:00
lib Re-commit r67334 and r67349 with fix. 2009-03-21 18:12:24 +00:00
Linker Reimplement the old and horrible bison parser for .ll files with a nice 2009-01-02 07:01:27 +00:00
LLVMC The 'forward_as' property did not use its second argument. 2009-05-06 01:41:19 +00:00
Other Update call graph after inlining invoke. 2009-03-31 17:36:12 +00:00
Scripts
TableGen Allow multiclass def names to contain "#NAME"" where TableGen replaces 2009-05-05 16:28:25 +00:00
Transforms Revert 71165. It did more than just revert 71158 and it introduced 2009-05-07 19:46:24 +00:00
Verifier Reimplement the old and horrible bison parser for .ll files with a nice 2009-01-02 07:01:27 +00:00
Makefile Add more ulimit limits, to catch more kinds of runaway behavior. 2009-04-23 00:28:31 +00:00
Makefile.tests
TestRunner.sh