Cache the sized-ness of struct types, once we reach the steady state of
authorChandler Carruth <chandlerc@gmail.com>
Wed, 7 Mar 2012 02:33:09 +0000 (02:33 +0000)
committerChandler Carruth <chandlerc@gmail.com>
Wed, 7 Mar 2012 02:33:09 +0000 (02:33 +0000)
commitf8cde7388eb96c59992bc4798ec9fca41ea1a13c
treeb69247c9ecf8783b87e7d399b441dabeb8a92070
parent344224b3a34bda62bea86c06807584ec7558e157
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
include/llvm/DerivedTypes.h
lib/VMCore/Type.cpp