LLVM backend for 6502
Go to file
Jim Grosbach fc1a161d76 Switch the fixed-length disassembler to be table-driven.
Refactor the TableGen'erated fixed length disassemblmer to use a
table-driven state machine rather than a massive set of nested
switch() statements.

As a result, the ARM Disassembler (ARMDisassembler.cpp) builds much more
quickly and generates a smaller end result. For a Release+Asserts build on
a 16GB 3.4GHz i7 iMac w/ SSD:

Time to compile at -O2 (averaged w/ hot caches):
  Previous: 35.5s
  New:       8.9s

TEXT size:
  Previous: 447,251
  New:      297,661

Builds in 25% of the time previously required and generates code 66% of
the size.

Execution time of the disassembler is only slightly slower (7% disassembling
10 million ARM instructions, 19.6s vs 21.0s). The new implementation has
not yet been tuned, however, so the performance should almost certainly
be recoverable should it become a concern.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@161888 91177308-0d34-0410-b5e6-96231b3b80d8
2012-08-14 19:06:05 +00:00
autoconf [configure] Add a --enable-keep-symbols configure flag. 2012-08-14 18:14:20 +00:00
bindings Remove tabs. 2012-07-19 00:23:13 +00:00
cmake revert my previous patch 2012-08-08 18:04:45 +00:00
docs Remove references to compression in llvm-ar. It has been a long time since we 2012-08-10 01:57:52 +00:00
examples Move llvm/Support/IRBuilder.h -> llvm/IRBuilder.h 2012-06-29 12:38:19 +00:00
include Switch the fixed-length disassembler to be table-driven. 2012-08-14 19:06:05 +00:00
lib Switch the fixed-length disassembler to be table-driven. 2012-08-14 19:06:05 +00:00
projects Fix a typo (the the => the) 2012-07-23 08:51:15 +00:00
runtime Free the allocated filename. Found by clang static analyzer. 2012-06-15 09:11:47 +00:00
test [asan] insert crash basic blocks inline as opposed to inserting them at the end of the function. This doesn't seem to fix or break anything, but is considered to be more friendly to downstream passes (test change) 2012-08-14 14:05:50 +00:00
tools Remove references to compression in llvm-ar. It has been a long time since we 2012-08-10 01:57:52 +00:00
unittests Added test for non-static use of cl::opt (fixed in r160170) 2012-08-13 10:43:36 +00:00
utils Switch the fixed-length disassembler to be table-driven. 2012-08-14 19:06:05 +00:00
.gitignore Add tools/lld to .gitignore. 2012-05-02 21:25:32 +00:00
CMakeLists.txt Support for experimental targets 2012-08-09 01:13:59 +00:00
CODE_OWNERS.TXT Add the list of code owners to the top level of the LLVM source tree to 2012-07-26 08:04:09 +00:00
configure Update configure. 2012-08-14 18:14:22 +00:00
CREDITS.TXT Alphabetize. 2012-06-19 23:47:58 +00:00
LICENSE.TXT Add YAML parser to Support. 2012-04-03 23:09:22 +00:00
llvm.spec.in Tidy up. s/Low Level Virtual Machine/LLVM/. 2012-01-25 22:00:23 +00:00
LLVMBuild.txt LLVMBuild: Introduce a common section which currently has a list of the 2011-12-12 22:45:54 +00:00
Makefile Fix the make update target to work even when sub repo repositories are ignored. 2012-08-14 18:33:50 +00:00
Makefile.common [docs] Remove unsupported references to ExtraSource variable. 2012-05-15 21:32:27 +00:00
Makefile.config.in [configure] Add a --enable-keep-symbols configure flag. 2012-08-14 18:14:20 +00:00
Makefile.rules Add a configure flag for enabling -Werror on the command line 2012-08-03 19:58:20 +00:00
README.txt test commit 2012-07-11 17:34:12 +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 HTML documentation provided in docs/index.html for further
assistance with LLVM.

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