LLVM backend for 6502
Go to file
Cameron Zwarich 4e7f23b1b6 Land a first cut at StrongPHIElimination. There are only 5 new test failures
when running without the verifier, and I have not yet checked them to see if
the new results are still correct. There are more verifier failures, but they
all seem to be additional occurrences of verifier failures that occur with the
existing PHIElimination pass. There are a few obvious issues with the code:

1) It doesn't properly update the register equivalence classes during copy
insertion, and instead recomputes them before merging live intervals and
renaming registers. I wanted to keep this first patch simple for debugging
purposes, but it shouldn't be very hard to do this.

2) It doesn't mix the renaming and live interval merging with the copy insertion
process, which leads to a lot of virtual register churn. Virtual registers and
live intervals are created, only to later be merged into others. The code should
be smarter and only create a new virtual register if there is no existing
register in the same congruence class.

3) In one place the code uses a DenseMap per basic block, which is unnecessary
heap allocation. There should be an inline storage version of DenseMap.

I did a quick compile-time test of running llc on 403.gcc with and without
StrongPHIElimination. It is slightly slower with StrongPHIElimination, because
the small decrease in the coalescer runtime can't beat the increase in phi
elimination runtime. Perhaps fixing the above performance issues will narrow
the gap.

I also haven't yet run any tests of the quality of the generated code.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@122582 91177308-0d34-0410-b5e6-96231b3b80d8
2010-12-27 10:08:19 +00:00
autoconf Use GZIPBIN instead of GZIP. Apparently gzip uses GZIP as an environment 2010-12-10 01:31:51 +00:00
bindings Fix OCaml bindings crash, PR8847. 2010-12-23 15:49:26 +00:00
cmake Fixes file extension for loadable modules on OS X. 2010-12-22 08:30:17 +00:00
docs Revert 122341. It breaks some darwin tests. 2010-12-21 17:25:43 +00:00
examples Do not re-test for the existence of pthread.h. 2010-12-23 21:27:22 +00:00
include Support/PathV1: Deprecate GetRootDirectory. 2010-12-27 03:21:41 +00:00
lib Land a first cut at StrongPHIElimination. There are only 5 new test failures 2010-12-27 10:08:19 +00:00
projects Regen configure 2010-12-12 21:42:01 +00:00
runtime
test Handle reloc_riprel_4byte_movq_load. Should make the bots happy. 2010-12-27 02:03:24 +00:00
tools Support/PathV1: Deprecate get{Basename,Dirname,Suffix}. 2010-12-18 22:23:07 +00:00
unittests Change all self assignments X=X to (void)X, so that we can turn on a 2010-12-23 00:58:24 +00:00
utils Trailing whitespace. 2010-12-24 05:06:32 +00:00
website
.gitignore Cleanup and document .gitignore. 2010-12-17 17:22:50 +00:00
build-for-llvm-top.sh
CMakeLists.txt New cmake option LLVM_APPEND_VC_REV for controlling when the VC 2010-12-20 09:47:13 +00:00
configure Use GZIPBIN instead of GZIP. Apparently gzip uses GZIP as an environment 2010-12-10 01:31:51 +00:00
CREDITS.TXT Another git svn dcommit test. This time let's hope it doesn't kill my repo. 2010-12-10 14:45:10 +00:00
LICENSE.TXT
llvm.spec.in
Makefile Merge System into Support. 2010-11-29 18:16:10 +00:00
Makefile.common
Makefile.config.in Use GZIPBIN instead of GZIP. Apparently gzip uses GZIP as an environment 2010-12-10 01:31:51 +00:00
Makefile.rules build: Shared libraries shouldn't used RPATH on Darwin, only main executables 2010-12-08 02:29:26 +00:00
ModuleInfo.txt
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 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.