Fork of llvm with experimental commits and workarounds for RPCS3
Go to file
Chris Lattner 61c2a0fc8a This adds in some code (currently disabled unless you pass
-enable-smarter-addr-folding to llc) that gives CGP a better
cost model for when to sink computations into addressing modes.
The basic observation is that sinking increases register 
pressure when part of the addr computation has to be available
for other reasons, such as having a use that is a non-memory
operation.  In cases where it works, it can substantially reduce
register pressure.

This code is currently an overall win on 403.gcc and 255.vortex
(the two things I've been looking at), but there are several 
things I want to do before enabling it by default:

1. This isn't doing any caching of results, so it is much slower 
   than it could be.  It currently slows down release-asserts llc 
   by 1.7% on 176.gcc: 27.12s -> 27.60s.
2. This doesn't think about inline asm memory operands yet.
3. The cost model botches the case when the needed value is live
   across the computation for other reasons.

I'll continue poking at this, and eventually turn it on as llcbeta.

llvm-svn: 60074
2008-11-26 02:00:14 +00:00
autoconf Revert accidental last patch 2008-11-20 04:28:08 +00:00
bindings PR2731: C and Ocaml bindings for setTailCall and isTailCall. 2008-08-30 16:34:54 +00:00
cmake CMake: Do not rebuild the world when tblgen changes but the .inc files 2008-11-21 00:18:45 +00:00
docs Add a man page for llvmc. Really basic for now, will be updated later. 2008-11-25 21:38:38 +00:00
examples reapply Sanjiv's patch to genericize memcpy/memset/memmove to take an 2008-11-21 16:42:48 +00:00
include change AnnotationManager to use 'const char*' instead of std::string. this fixes the leakage of those strings and avoids the creation of such strings in static cosntructors (should result in a little improvement of startup time) 2008-11-26 00:00:44 +00:00
lib This adds in some code (currently disabled unless you pass 2008-11-26 02:00:14 +00:00
projects Add "sample" documentation to sample project. 2008-09-15 05:31:29 +00:00
runtime
test This adds in some code (currently disabled unless you pass 2008-11-26 02:00:14 +00:00
tools CMake: llvmc2 is now known as llvmc. 2008-11-25 22:18:49 +00:00
utils Copy the tblgen utility. 2008-11-20 00:11:57 +00:00
website
win32 Add files to VC++ projects. 2008-11-13 21:18:54 +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: Option for building with -fPIC. 2008-11-20 19:13:51 +00:00
configure Add XCore backend. 2008-11-07 10:59:00 +00:00
CREDITS.TXT Keep CREDITS.TXT sorted by name. 2008-11-07 12:44:36 +00:00
LICENSE.TXT
llvm.spec.in
Makefile Proper way of doing llvm canadian-cross compilation. 2008-11-10 07:33:13 +00:00
Makefile.common
Makefile.config.in Use spaces rather than tab. 2008-10-22 09:42:14 +00:00
Makefile.rules Move target independent td files from lib/Target/ to include/llvm/Target so they can be distributed along with the header files. 2008-11-24 07:34:46 +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.