llvm/lib
Chandler Carruth f8cde7388e Cache the sized-ness of struct types, once we reach the steady state of
"is sized". This prevents every query to isSized() from recursing over
every sub-type of a struct type. This could get *very* slow for
extremely deep nesting of structs, as in 177.mesa.

This change is a 45% speedup for 'opt -O2' of 177.mesa.linked.bc, and
likely a significant speedup for other cases as well. It even impacts
-O0 cases because so many part of the code try to check whether a type
is sized.

Thanks for the review from Nick Lewycky and Benjamin Kramer on IRC.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@152197 91177308-0d34-0410-b5e6-96231b3b80d8
2012-03-07 02:33:09 +00:00
..
Analysis No functionality change. Type::isSized() can be expensive, so avoid calling it 2012-03-07 02:27:53 +00:00
Archive Avoid using an invalidated iterator. 2012-01-23 05:07:16 +00:00
AsmParser Convert assert(0) to llvm_unreachable 2012-02-07 05:05:23 +00:00
Bitcode BitstreamWriter: Change primary output buffer to be a SmallVector instead of an 2012-02-29 20:31:09 +00:00
CodeGen Added -view-misched=dags options. 2012-03-07 00:18:25 +00:00
DebugInfo More dead code removal (using -Wunreachable-code) 2012-01-20 21:51:11 +00:00
ExecutionEngine Fixed the 32-bit runtime dynamic loader to allocate 2012-03-01 00:15:29 +00:00
Linker Include cctype for isdigit. Patch by Stephen Hines. 2012-03-03 09:36:58 +00:00
MC Make MCRegisterInfo available to the the MCInstPrinter. 2012-03-05 19:33:20 +00:00
Object [Object] 2012-03-01 22:19:54 +00:00
Support Added -view-background to avoid waiting for each GraphViz invocation. 2012-03-07 00:18:27 +00:00
TableGen Switch the TableGen record's string-based DenseMap key to use the new 2012-03-05 10:36:16 +00:00
Target ARM pre-v6 assembly parsing for umull/smull. 2012-03-07 01:09:17 +00:00
Transforms fix typos 2012-03-05 17:39:47 +00:00
VMCore Cache the sized-ness of struct types, once we reach the steady state of 2012-03-07 02:33:09 +00:00
CMakeLists.txt
LLVMBuild.txt
Makefile