Try to keep the cached inliner costs around for a bit longer for big functions.
authorJakob Stoklund Olesen <stoklund@2pi.dk>
Tue, 9 Mar 2010 22:17:11 +0000 (22:17 +0000)
committerJakob Stoklund Olesen <stoklund@2pi.dk>
Tue, 9 Mar 2010 22:17:11 +0000 (22:17 +0000)
commit9e5d87d568498db251de19cd3c26d02cc74bb2e1
tree5f9ace0d4d1020a7c8ee1823facc4e56147ede6b
parent74a684222d45b4d9eb3986a10c92c9ec67378568
Try to keep the cached inliner costs around for a bit longer for big functions.

The Caller cost info would be reset everytime a callee was inlined. If the
caller has lots of calls and there is some mutual recursion going on, the
caller cost info could be calculated many times.

This patch reduces inliner runtime from 240s to 0.5s for a function with 20000
small function calls.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98089 91177308-0d34-0410-b5e6-96231b3b80d8
include/llvm/Analysis/InlineCost.h
include/llvm/Transforms/IPO/InlinerPass.h
lib/Analysis/InlineCost.cpp
lib/Transforms/IPO/InlineAlways.cpp
lib/Transforms/IPO/InlineSimple.cpp
lib/Transforms/IPO/Inliner.cpp