LLVM backend for 6502
Go to file
Evan Cheng 2938a00f29 Add a couple more heuristics to neuter machine cse some more.
1. Be careful with cse "cheap" expressions. e.g. constant materialization. Only cse them when the common expression is local or in a direct predecessor. We don't want cse of cheap instruction causing other expressions to be spilled.
2. Watch out for the case where the expression doesn't itself uses a virtual register. e.g. lea of frame object. If the common expression itself is used by copies (common for passing addresses to function calls), don't perform the cse. Since these expressions do not use a register, it creates a live range but doesn't close any, we want to be very careful with increasing register pressure.

Note these are heuristics so machine cse doesn't make register allocator unhappy. Once we have proper live range splitting and re-materialization support in place, these should be evaluated again.

Now machine cse is almost always a win on llvm nightly tests on x86 and x86_64.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98121 91177308-0d34-0410-b5e6-96231b3b80d8
2010-03-10 02:12:03 +00:00
autoconf
bindings Add OCaml tutorial to the examples. 2010-03-08 19:32:27 +00:00
cmake
docs Clarify the documentation for MachineFunctionPasses. 2010-03-10 01:29:39 +00:00
examples Don't always run the ocaml kaleidoscope tutorials. 2010-03-08 20:07:32 +00:00
include eliminate MCContext::CreateSymbol and CreateTemporarySymbol. 2010-03-10 01:29:27 +00:00
lib Add a couple more heuristics to neuter machine cse some more. 2010-03-10 02:12:03 +00:00
projects
runtime disable this for mingw as well, we really need a 'has no dynamic linking' predicate. 2010-03-06 18:54:37 +00:00
test MC/Mach-O: Use the SECTDIFF relocation type for (A - B + constant) where A is external. 2010-03-10 00:58:25 +00:00
tools Attempt to fix random build failures seen when doing highly 2010-03-09 09:03:21 +00:00
unittests Consolidate GoogleTest make options and duplicate them to its own makefile. 2010-03-09 19:24:49 +00:00
utils Continue propagating the GoogleTest flags until we can update our version to 2010-03-09 22:45:10 +00:00
website
build-for-llvm-top.sh
CMakeLists.txt Adding MBlaze to cmake target list. 2010-03-05 15:15:55 +00:00
configure
CREDITS.TXT Adding the MicroBlaze backend. 2010-02-23 19:15:24 +00:00
LICENSE.TXT 2010 is upon us. 2010-01-09 18:40:31 +00:00
llvm.spec.in
Makefile
Makefile.common
Makefile.config.in
Makefile.rules
ModuleInfo.txt Patch to build llvm with srcdir != objdir from 2009-01-23 08:42:38 +00:00
README.txt Give packagers some advice about how to build LLVM so it's useful to 2010-02-26 00:54:42 +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.