LLVM backend for 6502
Go to file
Dan Gohman 8be6bbe5bf Eliminate the ISel priority queue, which used the topological order for a
priority function. Instead, just iterate over the AllNodes list, which is
already in topological order. This eliminates a fair amount of bookkeeping,
and speeds up the isel phase by about 15% on many testcases.

The impact on most targets is that AddToISelQueue calls can be simply removed.

In the x86 target, there are two additional notable changes.

The rule-bending AND+SHIFT optimization in MatchAddress that creates new
pre-isel nodes during isel is now a little more verbose, but more robust.
Instead of either creating an invalid DAG or creating an invalid topological
sort, as it has historically done, it can now just insert the new nodes into
the node list at a position where they will be consistent with the topological
ordering.

Also, the address-matching code has logic that checked to see if a node was
"already selected". However, when a node is selected, it has all its uses
taken away via ReplaceAllUsesWith or equivalent, so it won't recieve any
further visits from MatchAddress. This code is now removed.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@58748 91177308-0d34-0410-b5e6-96231b3b80d8
2008-11-05 04:14:16 +00:00
autoconf [PR2886] Don't look for ocaml's .opt executables; something in the autoconf/test machinery doesn't handle the period properly. 2008-10-22 12:40:40 +00:00
bindings PR2731: C and Ocaml bindings for setTailCall and isTailCall. 2008-08-30 16:34:54 +00:00
cmake CMake: Support for building 32 bit mode libs and binaries on 2008-11-04 03:27:24 +00:00
docs fix two validation errors 2008-11-04 21:50:59 +00:00
examples CMake: use add_llvm_example for HowToUseJIT. 2008-10-22 02:52:59 +00:00
include Eliminate the ISel priority queue, which used the topological order for a 2008-11-05 04:14:16 +00:00
lib Eliminate the ISel priority queue, which used the topological order for a 2008-11-05 04:14:16 +00:00
projects Add "sample" documentation to sample project. 2008-09-15 05:31:29 +00:00
runtime
test New test case. 2008-11-05 01:40:30 +00:00
tools On darwin, 32-bit x86 target is i386-apple-darwin... 2008-11-04 23:13:50 +00:00
utils Eliminate the ISel priority queue, which used the topological order for a 2008-11-05 04:14:16 +00:00
website
win32 Add a file to VC++ proj. 2008-10-24 10:38:57 +00:00
Xcode Remove Stacker.html from Xcode project. 2008-10-14 23:23:59 +00:00
build-for-llvm-top.sh
CMakeLists.txt CMake: Support for building 32 bit mode libs and binaries on 2008-11-04 03:27:24 +00:00
configure Regenerate. 2008-10-22 12:40:55 +00:00
CREDITS.TXT Updated email address. 2008-10-21 19:50:00 +00:00
LICENSE.TXT llvmc doesn't exist anymore, and llvmc2 doesn't have a special license file. 2008-06-20 20:05:57 +00:00
llvm.spec.in
Makefile Add support for Canadian Cross builds where the host executables are not 2008-10-02 22:56:44 +00:00
Makefile.common
Makefile.config.in Use spaces rather than tab. 2008-10-22 09:42:14 +00:00
Makefile.rules Comment fix. 2008-11-03 17:33:36 +00:00
ModuleInfo.txt
README.txt Remove extra lines 2008-07-28 20:50:25 +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.