From: David Chisnall Date: Fri, 6 Apr 2012 17:27:41 +0000 (+0000) Subject: Reintroduce InlineCostAnalyzer::getInlineCost() variant with explicit callee X-Git-Url: http://demsky.eecs.uci.edu/git/?a=commitdiff_plain;h=b381578fcb5fea988f661dbbee9747b8fd55c5fb;p=oota-llvm.git Reintroduce InlineCostAnalyzer::getInlineCost() variant with explicit callee parameter until we have a more sensible API for doing the same thing. Reviewed by Chandler. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@154180 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/include/llvm/Analysis/InlineCost.h b/include/llvm/Analysis/InlineCost.h index f5784a751c0..691c2d19be9 100644 --- a/include/llvm/Analysis/InlineCost.h +++ b/include/llvm/Analysis/InlineCost.h @@ -117,6 +117,15 @@ namespace llvm { /// bound the computation necessary to determine whether the cost is /// sufficiently low to warrant inlining. InlineCost getInlineCost(CallSite CS, int Threshold); + /// getCalledFunction - The heuristic used to determine if we should inline + /// the function call or not. The callee is explicitly specified, to allow + /// you to calculate the cost of inlining a function via a pointer. This + /// behaves exactly as the version with no explicit callee parameter in all + /// other respects. + // + // Note: This is used by out-of-tree passes, please do not remove without + // adding a replacement API. + InlineCost getInlineCost(CallSite CS, Function *Callee, int Threshold); }; /// callIsSmall - If a call is likely to lower to a single target instruction, diff --git a/lib/Analysis/InlineCost.cpp b/lib/Analysis/InlineCost.cpp index 246e679b21d..c4599c805d6 100644 --- a/lib/Analysis/InlineCost.cpp +++ b/lib/Analysis/InlineCost.cpp @@ -988,8 +988,11 @@ void CallAnalyzer::dump() { } InlineCost InlineCostAnalyzer::getInlineCost(CallSite CS, int Threshold) { - Function *Callee = CS.getCalledFunction(); + return getInlineCost(CS, CS.getCalledFunction(), Threshold); +} +InlineCost InlineCostAnalyzer::getInlineCost(CallSite CS, Function *Callee, + int Threshold) { // Don't inline functions which can be redefined at link-time to mean // something else. Don't inline functions marked noinline or call sites // marked noinline.