llvm-capstone/llvm/test
Matthias Braun 165d467125 MachineCopyPropagation: Remove the copies instead of using KILL instructions.
For some history here see the commit messages of r199797 and r169060.

The original intent was to fix cases like:

%EAX<def> = COPY %ECX<kill>, %RAX<imp-def>
%RCX<def> = COPY %RAX<kill>

where simply removing the copies would have RCX undefined as in terms of
machine operands only the ECX part of it is defined. The machine
verifier would complain about this so 169060 changed such COPY
instructions into KILL instructions so some super-register imp-defs
would be preserved. In r199797 it was finally decided to always do this
regardless of super-register defs.

But this is wrong, consider:
R1 = COPY R0
...
R0 = COPY R1
getting changed to:
R1 = KILL R0
...
R0 = KILL R1

It now looks like R0 dies at the first KILL and won't be alive until the
second KILL, while in reality R0 is alive and must not change in this
part of the program.

As this only happens after register allocation there is not much code
still performing liveness queries so the issue was not noticed.  In fact
I didn't manage to create a testcase for this, without unrelated changes
I am working on at the moment.

The fix is simple: As of r223896 the MachineVerifier allows reads from
partially defined registers, so the whole transforming COPY->KILL thing
is not necessary anymore. This patch also changes a similar (but more
benign case as the def and src are the same register) case in the
VirtRegRewriter.

Differential Revision: http://reviews.llvm.org/D10117

llvm-svn: 238588
2015-05-29 18:19:25 +00:00
..
Analysis [DependenceAnalysis] Extend unifySubscriptType for handling coupled subscript groups. 2015-05-29 16:58:08 +00:00
Assembler IR / debug info: Add a DWOId field to DICompileUnit, 2015-05-21 20:37:30 +00:00
Bindings IR: Give 'DI' prefix to debug info metadata 2015-04-29 16:38:44 +00:00
Bitcode [BitcodeReader] Change assert to report_fatal_error 2015-05-27 01:05:40 +00:00
BugPoint IR: Give 'DI' prefix to debug info metadata 2015-04-29 16:38:44 +00:00
CodeGen MachineCopyPropagation: Remove the copies instead of using KILL instructions. 2015-05-29 18:19:25 +00:00
DebugInfo Object, ELF: Use error code instead of calling report_fatal_error() 2015-05-28 20:25:42 +00:00
ExecutionEngine [Mips64] Add support for MCJIT for MIPS64r2 and MIPS64r6 2015-05-28 13:48:41 +00:00
Feature [opaque pointer type] Add textual IR support for explicit type parameter to the call instruction 2015-04-16 23:24:18 +00:00
FileCheck FileCheck: Add CHECK-SAME 2015-02-26 04:53:00 +00:00
Instrumentation [ASan] New approach to dynamic allocas unpoisoning. Patch by Max Ostapenko! 2015-05-28 07:51:49 +00:00
Integer [opaque pointer type] Add textual IR support for explicit type parameter to the call instruction 2015-04-16 23:24:18 +00:00
JitListener IR: Give 'DI' prefix to debug info metadata 2015-04-29 16:38:44 +00:00
Linker Changed renaming of local symbols by inserting a dot vefore the numeric suffix. 2015-05-12 16:47:30 +00:00
LTO Revert changes to LTO test case since llvm-lto can't handle textual IR inputs 2015-04-24 18:13:27 +00:00
MC Add support for VSX FMA single-precision instructions to the PPC back end 2015-05-29 17:13:25 +00:00
Object Stop inventing symbol sizes. 2015-05-22 15:43:00 +00:00
Other Let llc and opt override "-target-cpu" and "-target-features" via command line 2015-05-06 23:54:14 +00:00
SymbolRewriter
TableGen Use std::bitset for SubtargetFeatures. 2015-05-26 10:47:10 +00:00
tools [llvm-readobj/ELF] Teach how to decode DF_1_XXX flags 2015-05-25 19:12:18 +00:00
Transforms [IR] fptrunc-of-fptrunc isn't an EliminableCastPair. 2015-05-29 00:04:30 +00:00
Unit
Verifier [Verifier] Assert gc_relocate always return a pointer type 2015-05-18 19:50:14 +00:00
YAMLParser YAML: Implement block scalar parsing. 2015-05-13 23:10:51 +00:00
.clang-format
CMakeLists.txt Remove duplicate cmake target I added in r236792. 2015-05-08 16:59:53 +00:00
lit.cfg Add yaml-bench to the list of tools make check needs to run 2015-05-07 22:53:11 +00:00
lit.site.cfg.in test: Make a start on a test suite for libLTO. 2015-03-19 23:55:38 +00:00
Makefile test: Make a start on a test suite for libLTO. 2015-03-19 23:55:38 +00:00
Makefile.tests
TestRunner.sh