LLVM backend for 6502
Go to file
Simon Pilgrim 0d1978b813 [X86] Memory folding for commutative instructions (updated)
This patch improves support for commutative instructions in the x86 memory folding implementation by attempting to fold a commuted version of the instruction if the original folding fails - if that folding fails as well the instruction is 're-commuted' back to its original order before returning.

Updated version of r219584 (reverted in r219595) - the commutation attempt now explicitly ensures that neither of the commuted source operands are tied to the destination operand / register, which was the source of all the regressions that occurred with the original patch attempt.

Added additional regression test case provided by Joerg Sonnenberger.

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



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@220239 91177308-0d34-0410-b5e6-96231b3b80d8
2014-10-20 22:14:22 +00:00
autoconf Initial version of Go bindings. 2014-10-16 22:48:02 +00:00
bindings Fix bashism in build.sh. 2014-10-17 02:20:40 +00:00
cmake Explain why we don't always use --gc-sections. 2014-10-20 21:37:38 +00:00
docs [llvm-symbolizer] Introduce the -dsym-hint option. 2014-10-17 00:50:19 +00:00
examples
include Try to fix GCC error about invalid use of const_cast in const version of ErrorOr::get() 2014-10-20 20:41:21 +00:00
lib [X86] Memory folding for commutative instructions (updated) 2014-10-20 22:14:22 +00:00
projects
test [X86] Memory folding for commutative instructions (updated) 2014-10-20 22:14:22 +00:00
tools Add a test that would have found the bug in r219829. 2014-10-17 01:34:23 +00:00
unittests [ADT] Add a 'find_as' operation to DenseSet. 2014-10-19 19:36:33 +00:00
utils Teach Lit to catch OSError exceptions when creating a process during the 2014-10-20 20:14:28 +00:00
.arcconfig
.clang-format
.clang-tidy
.gitignore Initial version of Go bindings. 2014-10-16 22:48:02 +00:00
CMakeLists.txt
CODE_OWNERS.TXT
configure Initial version of Go bindings. 2014-10-16 22:48:02 +00:00
CREDITS.TXT
LICENSE.TXT
llvm.spec.in
LLVMBuild.txt
Makefile
Makefile.common
Makefile.config.in Initial version of Go bindings. 2014-10-16 22:48:02 +00:00
Makefile.rules
README.txt

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

This directory and its subdirectories contain source code for the Low Level
Virtual Machine, 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.