LLVM backend for 6502
Go to file
Quentin Colombet 331ec379a0 [RegAllocFast] Handle implicit definitions conservatively.
Prior to this commit, physical registers defined implicitly were considered free
right after their definition, i.e.. like dead definitions. Therefore, their uses
had to immediately follow their definitions, otherwise the related register may
be reused to allocate a virtual register.

This commit fixes this assumption by keeping implicit definitions alive until
they are actually used. The downside is that if the implicit definition was dead
(and not marked at such), we block an otherwise available register. This is
however conservatively correct and makes the fast register allocator much more
robust in particular regarding the scheduling of the instructions.

Fixes PR21700.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@223317 91177308-0d34-0410-b5e6-96231b3b80d8
2014-12-03 23:38:08 +00:00
autoconf Expose LLVM version string via macro in llvm-config.h, and modify Go bindings 2014-11-19 03:34:17 +00:00
bindings Add bindings for the rest of the MCJIT options that we previously 2014-12-02 21:09:01 +00:00
cmake [OCaml] [cmake] Disable OCaml bindings if ctypes >=0.3 is not found. 2014-12-03 03:39:01 +00:00
docs Fix grammar-o. 2014-12-03 20:58:23 +00:00
examples ExceptionDemo: Let setMCJITMemoryManager() take unique_ptr, since r223183. 2014-12-03 02:05:51 +00:00
include Split the set of identified struct types into opaque and non-opaque ones. 2014-12-03 22:36:37 +00:00
lib [RegAllocFast] Handle implicit definitions conservatively. 2014-12-03 23:38:08 +00:00
projects
test [RegAllocFast] Handle implicit definitions conservatively. 2014-12-03 23:38:08 +00:00
tools This reverts commit r223306 and r223277. 2014-12-03 23:29:34 +00:00
unittests Silencing several "multiple copy constructors" warnings from MSVC; NFC. 2014-12-03 14:44:16 +00:00
utils Add a test-case for lit xunit output 2014-12-03 23:01:35 +00:00
.arcconfig
.clang-format
.clang-tidy
.gitignore
CMakeLists.txt [OCaml] [cmake] Add CMake buildsystem for OCaml. 2014-12-01 19:50:23 +00:00
CODE_OWNERS.TXT
configure Expose LLVM version string via macro in llvm-config.h, and modify Go bindings 2014-11-19 03:34:17 +00:00
CREDITS.TXT
LICENSE.TXT Remove projects/sample. 2014-03-12 22:40:22 +00:00
llvm.spec.in
LLVMBuild.txt
Makefile
Makefile.common
Makefile.config.in Add a check for misbehaving -Wcomment from gcc-4.7 and add 2014-11-05 00:35:15 +00:00
Makefile.rules Add a check for misbehaving -Wcomment from gcc-4.7 and add 2014-11-05 00:35:15 +00:00
README.txt Trivial test commit. 2014-04-26 19:05:45 +00:00

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.