From 599e54b9051883732ab535827d530cce50b97db1 Mon Sep 17 00:00:00 2001 From: David Chisnall Date: Fri, 6 Apr 2012 17:27:41 +0000 Subject: [PATCH] Reintroduce InlineCostAnalyzer::getInlineCost() variant with explicit callee parameter until we have a more sensible API for doing the same thing. Reviewed by Chandler. llvm-svn: 154180 --- include/llvm/Analysis/InlineCost.h | 9 +++++++++ lib/Analysis/InlineCost.cpp | 5 ++++- 2 files changed, 13 insertions(+), 1 deletion(-) 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.