llvm-project/llvm
Chandler Carruth df973ed626 Hoist the definition of getTypeSizeInBits to be inlinable and in the
header.

This method is called in the hot path for *many* passes, SROA is what
caught my interest. A common pattern is that which branch of the switch
should be taken is known in the callsite and so it is a very good
candidate for inlining and simplification. Moving it into the header
allows the optimizer to fold a lot of boring, repeatitive code in
callers of this routine.

I'm seeing pretty significant speedups in parts of SROA and I suspect
other passes will see similar speedups if they end up working with type
sizes frequently. I've not seen any significant growth of the binaries
as a consequence, but let me know if you see anything suspicious here.

llvm-svn: 177632
2013-03-21 09:52:22 +00:00
..
autoconf Turn anonymous type in anonymous union warning back on after cleaning up 2013-03-15 00:43:00 +00:00
bindings [python] Add markup option to disassembler 2012-12-01 21:57:30 +00:00
cmake Enable -Wnon-virtual-dtor build warning 2013-03-19 10:10:03 +00:00
docs Formatting fixups. 2013-03-19 23:10:26 +00:00
examples Update links to "Itanium C++ ABI: Exception Handling" document 2013-01-13 15:53:09 +00:00
include Hoist the definition of getTypeSizeInBits to be inlinable and in the 2013-03-21 09:52:22 +00:00
lib Hoist the definition of getTypeSizeInBits to be inlinable and in the 2013-03-21 09:52:22 +00:00
projects Print a warning message if compiler-rt can't be built because of old CMake version to make this requirement more visible to users 2013-03-05 14:43:07 +00:00
runtime Remove GCDAProfiling.c. This copy is old, the copy in compiler-rt is newer and 2013-03-07 02:03:08 +00:00
test Move library call prototype attribute inference to functionattrs 2013-03-21 00:55:59 +00:00
tools Remove stale comment 2013-03-19 16:04:02 +00:00
unittests Test case for graceful handling of long file names on Windows. Patch thanks to Paul Robinson! 2013-03-16 15:00:51 +00:00
utils [lit] Avoid CRLFs in bash scripts on Windows 2013-03-20 23:32:14 +00:00
.arcconfig Add .arcconfig to the repository. Useful if someone wants to use phabricator's command line tool. 2012-12-01 12:07:58 +00:00
.gitignore Add extra vim swap file pattern 2012-10-09 23:48:34 +00:00
CMakeLists.txt Revert CMake version bump since we don't actually need 2.8.6 any more. 2013-02-18 11:53:37 +00:00
CODE_OWNERS.TXT Update 2013-03-18 17:47:33 +00:00
CREDITS.TXT Update 2013-03-18 17:47:33 +00:00
LICENSE.TXT Add LICENSE.TXT covering contributions made by ARM. 2013-01-07 10:04:49 +00:00
LLVMBuild.txt
Makefile Improved svn repo searching for 'make update' 2013-01-28 03:19:57 +00:00
Makefile.common Makefile.common: Update a description, s/Source/SOURCES/ , according to MakefileGuide.html#control-variables . 2012-12-07 01:43:23 +00:00
Makefile.config.in Turn anonymous type in anonymous union warning back on after cleaning up 2013-03-15 00:43:00 +00:00
Makefile.rules Turn anonymous type in anonymous union warning back on after cleaning up 2013-03-15 00:43:00 +00:00
README.txt Revert "Test commit" 2013-02-22 19:19:41 +00:00
configure Turn anonymous type in anonymous union warning back on after cleaning up 2013-03-15 00:43:00 +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 documentation provided in docs/ for further
assistance with LLVM, and in particular docs/GettingStarted.rst for getting
started with LLVM and docs/README.txt for an overview of LLVM's
documentation setup.

If you're writing a package for LLVM, see docs/Packaging.rst for our
suggestions.