llvm-project/llvm
Evan Cheng 4c5f7a7f5e 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.

llvm-svn: 98121
2010-03-10 02:12:03 +00:00
..
autoconf Move the docsdir to /usr/share/doc/llvm to match other projects. 2010-03-02 05:17:21 +00:00
bindings Add OCaml tutorial to the examples. 2010-03-08 19:32:27 +00:00
cmake Update CMake LibDeps 2010-01-22 18:14:14 +00:00
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 Testing subversion commit access 2010-02-23 15:11:17 +00:00
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
CMakeLists.txt Adding MBlaze to cmake target list. 2010-03-05 15:15:55 +00:00
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
Makefile Try r96559 for the third time. This time the shared library is only built if 2010-02-25 06:34:33 +00:00
Makefile.common
Makefile.config.in Rewrite makefiles to explicitly reference DESTDIR to fix bug 3153. 2010-03-04 20:56:19 +00:00
Makefile.rules Rewrite makefiles to explicitly reference DESTDIR to fix bug 3153. 2010-03-04 20:56:19 +00:00
ModuleInfo.txt
README.txt Give packagers some advice about how to build LLVM so it's useful to 2010-02-26 00:54:42 +00:00
build-for-llvm-top.sh
configure Move the docsdir to /usr/share/doc/llvm to match other projects. 2010-03-02 05:17:21 +00:00
llvm.spec.in

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.