1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2024-10-24 05:23:45 +02:00
llvm-mirror/test
Hal Finkel d48111840e Revert "r226086 - Revert "r226071 - [RegisterCoalescer] Remove copies to reserved registers""
Reapply r226071 with fixes. Two fixes:

 1. We need to manually remove the old and create the new 'deaf defs'
    associated with physical register definitions when we move the definition of
    the physical register from the copy point to the point of the original vreg def.

    This problem was picked up by the machinstr verifier, and could trigger a
    verification failure on test/CodeGen/X86/2009-02-12-DebugInfoVLA.ll, so I've
    turned on the verifier in the tests.

 2. When moving the def point of the phys reg up, we need to make sure that it
    is neither defined nor read in between the two instructions. We don't, however,
    extend the live ranges of phys reg defs to cover uses, so just checking for
    live-range overlap between the pair interval and the phys reg aliases won't
    pick up reads. As a result, we manually iterate over the range and check for
    reads.

    A test soon to be committed to the PowerPC backend will test this change.

Original commit message:

[RegisterCoalescer] Remove copies to reserved registers

This allows the RegisterCoalescer to join "non-flipped" range pairs with a
physical destination register -- which allows the RegisterCoalescer to remove
copies like this:

<vreg> = something (maybe a load, for example)
... (things that don't use PHYSREG)
PHYSREG = COPY <vreg>

(with all of the restrictions normally applied by the RegisterCoalescer: having
compatible register classes, etc. )

Previously, the RegisterCoalescer handled only the opposite case (copying
*from* a physical register). I don't handle the problem fully here, but try to
get the common case where there is only one use of <vreg> (the COPY).

An upcoming commit to the PowerPC backend will make this pattern much more
common on PPC64/ELF systems.

llvm-svn: 226200
2015-01-15 20:32:09 +00:00
..
Analysis [PM] Port domtree to the new pass manager (at last). 2015-01-14 10:19:28 +00:00
Assembler IR: Move MDLocation into place 2015-01-14 22:27:36 +00:00
Bindings IR: Move MDLocation into place 2015-01-14 22:27:36 +00:00
Bitcode Revert Don't create new comdats in CodeGen 2015-01-15 16:14:34 +00:00
BugPoint IR: Move MDLocation into place 2015-01-14 22:27:36 +00:00
CodeGen Revert "r226086 - Revert "r226071 - [RegisterCoalescer] Remove copies to reserved registers"" 2015-01-15 20:32:09 +00:00
DebugInfo IR: Move MDLocation into place 2015-01-14 22:27:36 +00:00
ExecutionEngine [MCJIT] Remove a few redundant MCJIT tests, and drop the extraneous datalayout 2015-01-08 18:52:15 +00:00
Feature IR: Move MDLocation into place 2015-01-14 22:27:36 +00:00
FileCheck
Instrumentation IR: Move MDLocation into place 2015-01-14 22:27:36 +00:00
Integer
JitListener IR: Move MDLocation into place 2015-01-14 22:27:36 +00:00
Linker IR: Move MDLocation into place 2015-01-14 22:27:36 +00:00
LTO Put this test's input in the Inputs directory where it belongs, rather than 2015-01-12 08:50:47 +00:00
MC [Hexagon] Removing old versions of vsplice, valign, cl0, ct0 and updating references to new versions. 2015-01-15 19:28:32 +00:00
Object Don't loop endlessly for MachO files with 0 ncmds 2015-01-06 17:08:26 +00:00
Other [PM] Port TargetLibraryInfo to the new pass manager, provided by the 2015-01-15 11:39:46 +00:00
SymbolRewriter
TableGen
tools Fix linking of shared libraries. 2015-01-14 20:08:46 +00:00
Transforms Fix PR22222 2015-01-15 01:46:09 +00:00
Unit
Verifier Rename llvm.recoverframeallocation to llvm.framerecover 2015-01-13 01:51:34 +00:00
YAMLParser
.clang-format
CMakeLists.txt Revert r224149, llvm-dsymutil was already here. 2014-12-12 21:25:07 +00:00
lit.cfg llvm/test/lit.cfg: have_ld_plugin_support(): Use decode() for stdout. 2015-01-05 14:18:04 +00:00
lit.site.cfg.in [lit] Make config.llvm_lib_dir available on cmake, too. 2014-12-30 03:24:11 +00:00
Makefile [lit] Make config.llvm_lib_dir available on cmake, too. 2014-12-30 03:24:11 +00:00
Makefile.tests
TestRunner.sh