Fork of llvm with experimental commits and workarounds for RPCS3
Go to file
Chris Lattner 04d52ee9a2 Switch the inliner over to using CloneAndPruneFunctionInto. This effectively
makes it so that it constant folds instructions on the fly.  This is good
for several reasons:

0. Many instructions are constant foldable after inlining, particularly if
   inlining a call with constant arguments.
1. Without this, the inliner has to allocate memory for all of the instructions
   that can be constant folded, then a subsequent pass has to delete them.  This
   gets the job done without this extra work.
2. This makes the inliner *pass* a bit more aggressive: in particular, it
   partially solves a phase order issue where the inliner would inline lots
   of code that folds away to nothing, but think that the resultant function
   is big because of this code that will be gone.  Now the code never exists.

This is the first part of a 2-step process.  The second part will be smart
enough to see when this implicit constant folding propagates a constant into
a branch or switch instruction, making CFG edges dead.

This implements Transforms/Inline/inline_constprop.ll

llvm-svn: 28521
2006-05-27 01:28:04 +00:00
autoconf For PR784: 2006-05-21 10:40:20 +00:00
docs Describe how to add a custom test. 2006-05-23 01:40:20 +00:00
examples Catch a potentially thrown exception. 2006-05-14 19:08:39 +00:00
include/llvm Implement a new method: CloneAndPruneFunctionInto, as documented. 2006-05-27 01:21:50 +00:00
lib Switch the inliner over to using CloneAndPruneFunctionInto. This effectively 2006-05-27 01:28:04 +00:00
projects Avoid defining dead result 2006-05-12 17:29:40 +00:00
runtime For PR786: 2006-05-24 19:21:13 +00:00
test New testcase: check that the inliner constant folds instructions on the 2006-05-27 01:16:22 +00:00
tools For PR786: 2006-05-24 19:21:13 +00:00
utils Can't trust NodeDepth when checking for possibility of load folding creating 2006-05-25 20:16:55 +00:00
win32 Keep Visual Studio happy. 2006-05-03 00:28:50 +00:00
Xcode Misc. project changes. html + build config changes supplied by Devang. 2006-04-08 06:04:56 +00:00
.cvsignore Ignore stuff built by "make dist". 2006-04-07 15:55:18 +00:00
configure For PR784: 2006-05-21 10:40:20 +00:00
CREDITS.TXT Add my homepage, as a test that commit access works 2006-05-16 05:36:15 +00:00
LICENSE.TXT Changing domain name 2006-04-20 05:51:53 +00:00
llvm.spec For PR723: 2006-04-07 16:07:37 +00:00
Makefile Make some changes suggested by Chris: 2006-05-17 22:55:35 +00:00
Makefile.common Update comments to reflect new variable names. Patch contributed by 2005-02-14 16:02:19 +00:00
Makefile.config.in Fix a comment. 2006-04-09 23:39:43 +00:00
Makefile.rules Abstract out the current optimization level into a flag that can be overridden 2006-05-24 23:02:40 +00:00
README.txt Make the text of this file a little more useful. 2004-09-02 22:49:27 +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.