Mirror of official llvm git repository located at http://llvm.org/git/llvm. Updated every five minutes.
Go to file
Chris Lattner beac75da37 implement rdar://6653118 - fastisel should fold loads where possible.
Since mem2reg isn't run at -O0, we get a ton of reloads from the stack,
for example, before, this code:

int foo(int x, int y, int z) {
  return x+y+z;
}

used to compile into:

_foo:                                   ## @foo
	subq	$12, %rsp
	movl	%edi, 8(%rsp)
	movl	%esi, 4(%rsp)
	movl	%edx, (%rsp)
	movl	8(%rsp), %edx
	movl	4(%rsp), %esi
	addl	%edx, %esi
	movl	(%rsp), %edx
	addl	%esi, %edx
	movl	%edx, %eax
	addq	$12, %rsp
	ret

Now we produce:

_foo:                                   ## @foo
	subq	$12, %rsp
	movl	%edi, 8(%rsp)
	movl	%esi, 4(%rsp)
	movl	%edx, (%rsp)
	movl	8(%rsp), %edx
	addl	4(%rsp), %edx    ## Folded load
	addl	(%rsp), %edx     ## Folded load
	movl	%edx, %eax
	addq	$12, %rsp
	ret

Fewer instructions and less register use = faster compiles.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@113102 91177308-0d34-0410-b5e6-96231b3b80d8
2010-09-05 02:18:34 +00:00
autoconf Fix LLVM target initialization to deal with sociopathic outside projects 2010-08-30 18:34:48 +00:00
bindings Remove unions from the ocaml bindings. 2010-08-28 09:47:42 +00:00
cmake Fix cmake build without native target selected. 2010-09-03 02:22:23 +00:00
docs this is a release note worthy change. 2010-09-02 23:22:50 +00:00
examples Remove this from the main tree. I'll host it out of tree. 2010-08-30 21:34:26 +00:00
include implement rdar://6653118 - fastisel should fold loads where possible. 2010-09-05 02:18:34 +00:00
lib implement rdar://6653118 - fastisel should fold loads where possible. 2010-09-05 02:18:34 +00:00
projects Remove bogus link. 2010-07-16 06:33:36 +00:00
runtime Rename 'libprofile/exported_symbols.lst' to 'libprofile/libprofile.exports'. 2010-09-03 15:42:45 +00:00
test implement rdar://6653118 - fastisel should fold loads where possible. 2010-09-05 02:18:34 +00:00
tools Quiesce warning about non-virtual d'tor in virtual class. 2010-09-03 18:41:20 +00:00
unittests zap dead code. 2010-09-01 15:44:05 +00:00
utils delete dead code. 2010-09-04 18:17:16 +00:00
website Prepare for "core" website. 2007-08-03 05:43:35 +00:00
build-for-llvm-top.sh Patch to build llvm with srcdir != objdir from 2009-01-23 08:42:38 +00:00
CMakeLists.txt Attempt to remove the MSIL backend from CMake as well based on Chris's r112375. 2010-08-30 07:25:54 +00:00
configure Fix LLVM target initialization to deal with sociopathic outside projects 2010-08-30 18:34:48 +00:00
CREDITS.TXT Flesh out the list of things I've worked on. 2010-08-29 04:22:35 +00:00
LICENSE.TXT 2010 is upon us. 2010-01-09 18:40:31 +00:00
llvm.spec.in * llvm.spec.in: update blurb 2007-07-13 09:48:29 +00:00
Makefile llvmc: remove dynamic plugins. 2010-08-15 07:07:12 +00:00
Makefile.common Removed trailing whitespace from Makefiles. 2009-01-09 16:44:42 +00:00
Makefile.config.in Make the makefiles go much faster by using the realpath 2010-08-03 22:53:22 +00:00
Makefile.rules Fix Windows stuff to follow the existing source organization. 2010-09-03 17:29:33 +00:00
ModuleInfo.txt Patch to build llvm with srcdir != objdir from 2009-01-23 08:42:38 +00:00
README.txt (Hopefully) One last test. 2010-07-27 00:04:55 +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.