LLVM backend for 6502
Go to file
Chris Lattner dbab4dc942 implement a nice little efficiency hack in the inliner. Since we're now
running IPSCCP early, and we run functionattrs interlaced with the inliner,
we often (particularly for small or noop functions) completely propagate
all of the information about a call to its call site in IPSSCP (making a call
dead) and functionattrs is smart enough to realize that the function is
readonly (because it is interlaced with inliner).

To improve compile time and make the inliner threshold more accurate, realize
that we don't have to inline dead readonly function calls.  Instead, just 
delete the call.  This happens all the time for C++ codes, here are some
counters from opt/llvm-ld counting the number of times calls were deleted vs
inlined on various apps:

Tramp3d opt:
  5033 inline                - Number of call sites deleted, not inlined
 24596 inline                - Number of functions inlined
llvm-ld:
  667 inline           - Number of functions deleted because all callers found
  699 inline           - Number of functions inlined

483.xalancbmk opt:
  8096 inline                - Number of call sites deleted, not inlined
 62528 inline                - Number of functions inlined
llvm-ld:
   217 inline           - Number of allocas merged together
  2158 inline           - Number of functions inlined

471.omnetpp:
  331 inline                - Number of call sites deleted, not inlined
 8981 inline                - Number of functions inlined
llvm-ld:
  171 inline           - Number of functions deleted because all callers found
  629 inline           - Number of functions inlined


Deleting a call is much faster than inlining it, and is insensitive to the
size of the callee. :)



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@86975 91177308-0d34-0410-b5e6-96231b3b80d8
2009-11-12 07:56:08 +00:00
autoconf Add the --with-c-include-dirs to llvm's configure. 2009-11-12 05:46:09 +00:00
bindings Expose the rest of the attribute settings. 2009-09-28 04:42:47 +00:00
cmake CMake: Pass -lm to check_symbol_exists for detecting several math 2009-11-12 05:36:09 +00:00
docs lit: Start documentation testing architecture. 2009-11-10 02:41:27 +00:00
examples Re-commit r86077 now that r86290 fixes the 179.art and 175.vpr ARM regressions. 2009-11-07 00:16:28 +00:00
include - Teach LSR to avoid changing cmp iv stride if it will create an immediate that 2009-11-12 07:35:05 +00:00
lib implement a nice little efficiency hack in the inliner. Since we're now 2009-11-12 07:56:08 +00:00
projects Move DataTypes.h to include/llvm/System, update all users. This breaks the last 2009-10-26 01:35:46 +00:00
runtime OptimalEdgeProfiling: Creation of profiles. 2009-09-01 19:03:44 +00:00
test implement a nice little efficiency hack in the inliner. Since we're now 2009-11-12 07:56:08 +00:00
tools Stop running get_target_triple more than we need to. 2009-11-07 23:52:20 +00:00
unittests Use stubs when we have them, otherwise use code we already have, 2009-11-12 03:12:18 +00:00
utils Show command-line args and features passed into backend in debug output. Approved by Evan Cheng. 2009-11-11 03:23:46 +00:00
website Prepare for "core" website. 2007-08-03 05:43:35 +00:00
Xcode Remove the IA-64 backend. 2009-07-24 00:30:09 +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 CMake: Hopefully unbreak the build by mimicking the changes on the 2009-11-12 06:48:09 +00:00
configure Add the --with-c-include-dirs to llvm's configure. 2009-11-12 05:46:09 +00:00
CREDITS.TXT Add myself to the blame list. 2009-08-20 15:20:15 +00:00
LICENSE.TXT Add regular expression matching support, based on OpenBSD regexec()/regcomp() 2009-08-30 08:24:09 +00:00
llvm.spec.in * llvm.spec.in: update blurb 2007-07-13 09:48:29 +00:00
Makefile When cross-building, the CFLAGS and CXXFLAGS are for the target, and don't 2009-10-30 19:53:38 +00:00
Makefile.common Removed trailing whitespace from Makefiles. 2009-01-09 16:44:42 +00:00
Makefile.config.in Add the --with-c-include-dirs to llvm's configure. 2009-11-12 05:46:09 +00:00
Makefile.rules configure: Add --with-optimize-option, for setting the default value of 2009-11-04 04:32:50 +00:00
ModuleInfo.txt Patch to build llvm with srcdir != objdir from 2009-01-23 08:42:38 +00:00
README.txt First test commit 2009-10-05 22:29:11 +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.