llvm-6502/test
Bill Wendling 869d60d39d Machine sink could potentially sink instructions into a block where the physical
registers it defines then interfere with an existing preg live range.

For instance, if we had something like these machine instructions:

BB#0
  ... = imul ... EFLAGS<imp-def,dead>
  test ..., EFLAGS<imp-def>
  jcc BB#2 EFLAGS<imp-use>

BB#1
  ... ; fallthrough to BB#2

BB#2
  ... ; No code that defines EFLAGS
  jcc ... EFLAGS<imp-use>

Machine sink will come along, see that imul implicitly defines EFLAGS, but
because it's "dead", it assumes that it can move imul into BB#2. But when it
does, imul's "dead" imp-def of EFLAGS is raised from the dead (a zombie) and
messes up the condition code for the jump (and pretty much anything else which
relies upon it being correct).

The solution is to know which pregs are live going into a basic block. However,
that information isn't calculated at this point. Nor does the LiveVariables pass
take into account non-allocatable physical registers. In lieu of this, we do a
*very* conservative pass through the basic block to determine if a preg is live
coming out of it.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@105387 91177308-0d34-0410-b5e6-96231b3b80d8
2010-06-03 07:54:20 +00:00
..
Analysis Add a comment to this test. 2010-04-26 21:37:43 +00:00
Archive fix a broken archive that was breaking dejagnu only (not lit) 2010-02-04 07:11:08 +00:00
Assembler add newlines at the end of files. 2010-04-07 22:53:17 +00:00
Bindings/Ocaml Add a LLVMWriteBitcodeToFD that exposes the raw_fd_ostream options. 2010-03-06 00:30:06 +00:00
Bitcode reapply 'reject forward references to functions whose type don't match' 2010-04-20 04:49:11 +00:00
BugPoint
CodeGen Machine sink could potentially sink instructions into a block where the physical 2010-06-03 07:54:20 +00:00
DebugInfo DwarfWrite is now smart enough to drop debug value pointing to undefined register. Update this test to avoid this. 2010-06-01 23:01:43 +00:00
ExecutionEngine Revert r101455, which fails on the llvm-arm-linux buildbot. 2010-04-16 18:37:31 +00:00
Feature fix PR7105 by enumerating MDNodes on all @llvm.foo 2010-05-10 20:53:17 +00:00
FrontendAda
FrontendC Add a test for the llvm-gcc commit in r90200. 2010-05-31 20:39:10 +00:00
FrontendC++ Revert 104841, 104842, 104876 due to buildbot failures. Radar 7424645. 2010-05-28 16:41:07 +00:00
FrontendFortran
FrontendObjC Make sure this runs in 64-bit only, 32-bit won't produce the correct stores. 2010-03-25 01:46:07 +00:00
FrontendObjC++
Integer
lib Eliminate llvmgcc_version testing variable. 2010-02-23 07:56:28 +00:00
Linker
LLVMC XFAIL tests from LLVMC on valgrind or valgrind+leak-checking. We 2010-03-21 08:12:46 +00:00
MC MC/X86: Add alias for movzx. 2010-05-28 21:20:21 +00:00
Other Add lint checks for function attributes. 2010-05-28 21:43:57 +00:00
Scripts Revert r98892. BSD systems may not have bash installed at all. 2010-03-19 00:32:11 +00:00
TableGen XFAIL a new tblgen test for memory leak checking. 2010-03-27 04:59:47 +00:00
Transforms Fix PR7272: when inlining through a callsite with byval arguments, 2010-05-31 21:00:26 +00:00
Unit Try r96559 for the third time. This time the shared library is only built if 2010-02-25 06:34:33 +00:00
Verifier Reapply address space patch after fixing an issue in MemCopyOptimizer. 2010-04-04 03:10:48 +00:00
CMakeLists.txt Fix make check with cmake/lit 2010-03-10 18:41:59 +00:00
lit.cfg Add support for XFAILing valgrind runs with memory leak checking independently 2010-03-20 23:08:45 +00:00
lit.site.cfg.in
Makefile doh, didn't mean to check in my hackaround lit sucking. :) 2010-04-17 19:04:03 +00:00
Makefile.tests Switch .bc/.ll Makefile rules to use LLVM{CC,CXX} instead of LLVMG{CC,XX} 2010-02-23 10:28:06 +00:00
site.exp.in Eliminate llvmgcc_version testing variable. 2010-02-23 07:56:28 +00:00
TestRunner.sh