LLVM backend for 6502
Go to file
Pete Cooper 076d176640 Clear kill flags in ARMLoadStoreOptimizer.
The pass here was clearing kill flags on instructions which had
their sources killed in the instruction being combined.  But
given that the new instruction is inserted after the existing ones,
any existing instructions with kill flags will lead to the verifier
complaining that we are reading an undefined physreg.

For example, what we had prior to this optimization is
	t2STRi12 %R1, %SP, 12
	t2STRi12 %R1<kill>, %SP, 16
	t2STRi12 %R0<kill>, %SP, 8

and prior to this fix that would generate
	t2STRi12 %R1<kill>, %SP, 16
	t2STRDi8 %R0<kill>, %R1, %SP, 8

This is clearly incorrect as it didn't clear the kill flag on R1
used with offset 16 because there was no kill flag on the instruction
with offset 12.

After this change we clear the kill flag on the offset 16 instruction
because we know it will be used afterwards in the new instruction.

I haven't provided a test case.  I have a small test, but even it is
very sensitive to register allocation order which isn't ideal.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@242359 91177308-0d34-0410-b5e6-96231b3b80d8
2015-07-16 00:09:18 +00:00
autoconf Update the trunk version to 3.8.0svn. 2015-07-14 22:35:57 +00:00
bindings Expose setPersonalityFn to Go 2015-07-15 13:03:08 +00:00
cmake
docs Fix Sphinx error about duplicate label in CommandLine.rst:1560 and CoverageMappingFormat.rst 2015-07-14 23:29:53 +00:00
examples
include MIR Serialization: Serialize the jump table info. 2015-07-15 23:31:07 +00:00
lib Clear kill flags in ARMLoadStoreOptimizer. 2015-07-16 00:09:18 +00:00
projects
resources
test MIR Serialization: Serialize the jump table index operands. 2015-07-15 23:38:35 +00:00
tools For new archive member we only need to store the full path. 2015-07-15 22:46:53 +00:00
unittests
utils test-release.sh: Run both .o files through sed before comparing them 2015-07-15 22:18:25 +00:00
.arcconfig
.clang-format
.clang-tidy
.gitignore
CMakeLists.txt Update the trunk version to 3.8.0svn. 2015-07-14 22:35:57 +00:00
CODE_OWNERS.TXT
configure Update the trunk version to 3.8.0svn. 2015-07-14 22:35:57 +00:00
CREDITS.TXT
LICENSE.TXT
llvm.spec.in
LLVMBuild.txt
Makefile
Makefile.common
Makefile.config.in
Makefile.rules
README.txt

Low Level Virtual Machine (LLVM)
================================

This directory and its subdirectories contain source code for LLVM,
a toolkit for the construction of highly optimized compilers,
optimizers, and runtime environments.

LLVM is open source software. You may freely distribute it under the terms of
the license agreement found in LICENSE.txt.

Please see the documentation provided in docs/ for further
assistance with LLVM, and in particular docs/GettingStarted.rst for getting
started with LLVM and docs/README.txt for an overview of LLVM's
documentation setup.

If you're writing a package for LLVM, see docs/Packaging.rst for our
suggestions.